pygame学习笔记(3):运动速率、时间、事件、文字
1、运动速率
上节中,实现了一辆汽车在马路上由下到上行驶,并使用了pygame.time.delay(200)来进行时间延迟。看了很多参考材料,基本每个材料都会谈到不同配置机器下运动速率的问题,有的是通过设定频率解决,有的是通过设定速度解决,自己本身水平有限,看了几篇,觉得还是《BeginningGameDevelopmentwithPythonandPygame》这里面提到一个方法比较好。代码如下,代码里更改的地方主要是main里的代码,其中利用clock=pygame.time.Clock()来定义时钟,speed=250.0定义了速度,每秒250像素,time_passed=clock.tick()为上次运行时间单位是毫秒,time_passed_seconds=time_passed/1000.0将单位改为秒,distance_moved=time_passed_seconds*speed时间乘以速度得到移动距离,这样就能保证更加流畅。
importpygame,sys
deflineleft():
plotpoints=[]
forxinrange(0,640):
y=-5*x+1000
plotpoints.append([x,y])
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
pygame.display.flip()
deflineright():
plotpoints=[]
forxinrange(0,640):
y=5*x-2000
plotpoints.append([x,y])
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
pygame.display.flip()
deflinemiddle():
plotpoints=[]
x=300
foryinrange(0,480,20):
plotpoints.append([x,y])
iflen(plotpoints)==2:
pygame.draw.lines(screen,[0,0,0],False,plotpoints,5)
plotpoints=[]
pygame.display.flip()
defloadcar(yloc):
my_car=pygame.image.load('ok1.jpg')
locationxy=[310,yloc]
screen.blit(my_car,locationxy)
pygame.display.flip()
if__name__=='__main__': pygame.init() screen=pygame.display.set_caption('helloworld!') screen=pygame.display.set_mode([640,480]) screen.fill([255,255,255]) lineleft() lineright() linemiddle() clock=pygame.time.Clock() looper=480 speed=250.0 whileTrue: foreventinpygame.event.get(): ifevent.type==pygame.QUIT: sys.exit()
pygame.draw.rect(screen,[255,255,255],[310,(looper+132),83,132],0) time_passed=clock.tick() time_passed_seconds=time_passed/1000.0 distance_moved=time_passed_seconds*speed looper-=distance_moved iflooper<-480: looper=480 loadcar(looper)