这是学习嵩天老师的课程,习得并引以为笔记。
什么是文字壁球小游戏呢,就是以文字代替壁球,而运动跟壁球是一样的,要实现这个效果,主要解决文字的移动绘制及刷新,就是在绘制文字的基础上去移动文字使文字可以纵向和横向移动,下面用两段代码来展示一下效果,分别使用的是两种方法。
import pygame,sys
import pygame.freetype
pygame.init()
size = width,height =600,400
speed=[1,1]
GOLD = 255,251,0
BLACK = 0,0,0
pos = [230,160]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame文字绘制")
f1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc",36)#使用微软字体
f1rect = f1.render_to(screen,(200,160),"移动吧,文字",fgcolor=GOLD,size=50)
#f1surf,f1rect = f1.render("移动吧,文字",fgcolor=GOLD,size=50)
fps=300
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if pos[0] < 0 or pos[0] + f1rect.width >width:
speed[0] = -speed[0]
if pos[1] < 0 or pos[1] +f1rect.height >height:
speed[1] = -speed[1]
pos[0] = pos[0] + speed[0]
pos[1] = pos[1] + speed[1]
screen.fill(BLACK)
f1rect = f1.render_to(screen,pos,"移动吧,文字",fgcolor=GOLD,size=50)
#screen.blit(f1surf,(200,160))#返回出现在要绘制的屏幕上
pygame.display.update()
fclock.tick(fps)
这一段代码使用render库的方法,直接将文字绘制在主屏幕上,或者说是主图层上,注意,我们要将绘制的文字写在刷新屏幕的后面,这两个顺序不能搞错。
下面我们用另一种方法去实现同样的效果:
import pygame,sys
import pygame.freetype
pygame.init()
size = width,height =600,400
speed=[1,1]
GOLD = 255,251,0
BLACK = 0,0,0
pos = [230,160]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame文字绘制")
f1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc",36)#使用微软字体
#f1rect = f1.render_to(screen,(230,160),"移动吧,文字",fgcolor=GOLD,size=50)
f1surf,f1rect = f1.render("移动文字",fgcolor=GOLD,size=50)
fps=300
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if pos[0] < 0 or pos[0] + f1rect.width >width:
speed[0] = -speed[0]
if pos[1] < 0 or pos[1] +f1rect.height >height:
speed[1] = -speed[1]
pos[0] = pos[0] + speed[0]
pos[1] = pos[1] + speed[1]
screen.fill(BLACK)
f1surf,f1rect = f1.render("移动文字",fgcolor=GOLD,size=50)
#f1rect = f1.render_to(screen,pos,"移动吧,文字",fgcolor=GOLD,size=50)
#screen.blit(f1surf,(200,160))#返回出现在要绘制的屏幕上
screen.blit(f1surf,(pos[0],pos[1]))
pygame.display.update()
fclock.tick(fps)
大家对比一下这两个代码有那些区别吧!(其实都用#标了嘿嘿)