图形
1、开始绘制图形需要先绘制一个窗口,创建一个pygame窗口,但是窗口并未交互。
1.1 pygame 有一个事件循环(event loop)不断在检查用户在做什么,如按键、移动鼠标或关闭窗口。要想保持pygame事件循环一直运行,需要使用while循环
import pygame pygame.init() screen = pygame.display.set_mode([640,480]) # 使用pygame窗口正常工作 import pygame pygame.init() screen = pygame.display.set_mode([640,480]) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running =False pygame.quit()
创建一个pygame窗口
2、在窗口中画图
2.1 如果希望让动画尽可能流畅,不必在每次对图形进行修改都更新显示,可以做很多修改后在“翻转”(flip)到图形的新版本。这样会一次显示所有的修改,而不会只显示画了一半的圆(或者其他)
2.2 当前屏幕与下一屏幕,做完下一屏的所有修改后,再翻转到下一屏,就能看到这些改变。
建立一个圆:2.3 :在哪个表面进行画圆 2.4 :用什么颜色来画 2.5: 在什么位置画 2.6:圆的大小 2.7 线宽
2.3.1:pygame 表面 :在缓冲区进行画图,然后“翻转显示表面”,来显示完全绘制的图像。
2.4.1:pygame颜色:[R,G,B] [255,255,255]
2.5.1 位置:对应X轴及对应Y轴
2.6.1 形状的大小:指定长宽,圆心,半径(left,top,width,height)
2.7.1 线宽 :0 代表整个填充,
# 在窗口中画一个圆 import pygame,sys pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255,255,255]) # 用白色背景填充窗口 pygame.draw.circle(screen,[255,0,0],[100,100],30,0) # 画一个圆 pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running =False pygame.quit()
在窗口画一个圆
# 在窗口的中心位置画圆 import pygame,sys pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255,255,255]) # 用白色背景填充窗口 pygame.draw.circle(screen,[0,255,0],[320,240],30,0) # 在中心位置画一个圆 pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running =False pygame.quit()
在中心位置画一个圆
# 在窗口画一个矩形 import pygame,sys pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255,255,255]) # 用白色背景填充窗口 pygame.draw.rect(screen,[0,0,255],[250,150,300,200],0) # 画一个矩形 # my_list =[250,150,300,200] # pygame.draw.rect(screen,[0,0,255],my_list,0) # 矩形的位置与大小可以是一个简单的的数字列表或元组 # my_rect= pygame.Rect(250,150,300,200) # pygame.draw.rect(screen,[0,0,255],my_rect,0) # 可以是一个pyganme 的 rect 对象 pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running =False pygame.quit()
在窗口画一个矩形
# 使用draw.rect 实现艺术创作 import pygame,sys,random pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255,255,255]) for i in range(100): width = random.randint(0,250) height = random.randint(0,100) left = random.randint(0,500) top = random.randint(0,400) pygame.draw.rect(screen,[0,0,0],[left,top,width,height],1) pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.quit()
使用draw.rect进行现代艺术
# 用大量很小的矩形来画曲线 import pygame,sys import math pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255,255,255]) for x in range (640): y = int(math.sin(x/640.0 * 4 * math.pi)*200+240) # 计算每个点的y坐标(垂直坐标) pygame.draw.rect(screen,[0,0,0],[x,y,1,1],1) # 使用小矩形来画点 pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running=False pygame.quit()
用大量的矩形来画曲线
3、连接多个点
3.1 画线的表面,颜色,是否要将第一个点和最后一个点连接起来,使形状闭合(closed),正弦曲线不闭合(FALSE); 要连接点的列表;线宽
# 连接多个点 import pygame,sys import math pygame.init() screen = pygame.display.set_mode([640,480]) screen.fill([255,255,255]) PlotPoints =[] for x in range (640): y = int(math.sin(x/640.0 * 4 * math.pi)*200+240) PlotPoints.append([x,y]) # 将各个点的x,y 的值添加至列表中 pygame.draw.lines(screen,[255,0,0],False,PlotPoints,2) # 使用pygame.draw.lines()画线 pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running=False pygame.quit()
完美的正弦曲线
3.2 连接多个点