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()
好了,这个游戏是不是小有意思呢