Pygame游戏(3)满天笑脸 屏幕上都是闪闪会移动的笑脸是不是挺鼓励你继续学习呢
首先从简单开始:我们得先知道如何在屏幕上绘制文本内容 1、创建一个pygame.font.Font对象 2、创建一个Surface对象,通过调用上一步对象的render()方法 3、设置正确的宽度,高度,和文本内容
import pygame,sys from pygame.locals import * pygame.init() screen = pygame.display.set_mode((400,300)) pygame.display.set_caption("绘制简单的文本内容") color = (0,0,0) font_color = (255,255,255) font = pygame.font.Font(None,28) #设置字体,None为系统默认的字体 text = font.render("^_^",True,font_color) #设置要绘制的文本内容和字体的颜色 while True: for event in pygame.event.get(): if event.type == QUIT: sys.exit() screen.fill(color) screen.blit(text,(100,100)) #将文本内容绘制在100*100的位置 pygame.display.update()好了,是不是蛮容易上手的呢
第二步:让我们生成很多的笑脸并让它们动起来(注释在代码行的后面) 1、这里我们使用列表来进行管理 2、使用for循环随机生成笑脸的坐标,颜色 3、让坐标不断变化,到达边界后重新回到0位置
import pygame,sys,random from pygame.locals import * screen = pygame.display.set_mode((800,600)) #创建窗口 pygame.display.set_caption("满天笑脸") #设置标题 xx = [] #定义两个空列表,分别记录x,y坐标的值 yy = [] color = (0,0,0) #背景颜色 def init(): for i in range(0,100): #循环100次 xx.append(random.randint(0,800)) #随机生成数字赋给两个列表 yy.append(random.randint(0,800)) #print(str(xx[i]) + ", " + str(yy[i])) 显示两个列表具体的元素 def action(): for event in pygame.event.get(): #获取事件 if event.type == QUIT: #按下窗口的关闭按钮后 sys.exit() #退出游戏 elif event.type == KEYDOWN: #获取键盘事件 if event.key == K_ESCAPE: #按下ESC按键后 sys.exit() #退出游戏 for i in range(len(xx)): #循环当前列表长度的次数,让每个笑脸斜向下移动 xx[i] += 1 #x坐标右移 yy[i] += 1 #y坐标下移 if xx[i] > 800: #循环,到达边界后再回到坐标0点 xx[i] = 0 if yy[i] > 800: yy[i] = 0 def paint(): pygame.font.init() font = pygame.font.Font(None,28) #设置字体 for i in range(len(xx)): r = random.randint(0,255) #设置字体颜色 g = random.randint(0,255) b = random.randint(0,255) fontRead = font.render("^_^",True,(r,g,b)) #设置文本的内容和颜色 screen.blit(fontRead,(xx[i],yy[i])) #绘制笑脸 pygame.draw.circle(screen,(255,255,255),(100,100),50,0) pygame.draw.circle(screen,(0,0,0),(80,80),50,0) #两个圆叠加后形成月亮 def menu(): while True: screen.fill(color) action() paint() pygame.time.delay(10) #延迟时间,让笑脸移动的慢一些便于观察 pygame.display.update() if __name__ == '__main__': init() menu()好了,这个游戏是不是小有意思呢