介绍
今天就跟大家聊聊有关在python项目中使用pygame制作一个飞机大作战游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
游戏截图如下,我们用黄色的圆圈代表敌机:
代码如下
进口pygame sys、时间、随机的,数学 def init (): pygame.init () 大?宽度、高度=600600 屏幕=pygame.display.set_mode(大小) plx=270 厚度=528 北京=pygame.image.load (“beijing.jpg") main_role=pygame.image.load (“main_role.jpg") 字体=pygame.font.SysFont (“arial" 60) 返回屏幕,plx,厚度,main_role,北京,字体 def mainloop(屏幕,pl, main_role,北京,照片,女士,ecs): #每刷新一次,调用一次 在pygame.event.get事件(): 如果事件。类型==pygame.QUIT: pygame.quit () elif事件。类型==pygame.KEYDOWN: 如果事件。关键==pygame.K_LEFT:=(0,pl)女士 #移动(0,pl) elif事件。关键==pygame.K_RIGHT:=(1、pl)女士 #移动(pl) elif事件。关键==pygame.K_UP:=(2 pl)女士 #移动(pl) elif事件。关键==pygame.K_DOWN:=(3 pl)女士 #移动(3 pl) elif event.key==pygame.K_SPACE: ecs ecope (pl) elif事件。类型==pygame.KEYUP: 女士=[1] screen.blit(北京,(0,0)) 因为我在范围(len(照片)): pygame.draw.circle(屏幕,(255255,0),(我),25岁,5) 因为我在范围(len (ecs)): pygame.draw.circle(屏幕,(255,0255),ecs(我),5、5) screen.blit (main_role (pl [0], pl [1])) 返回女士 def ecope (pl, ecs): ecs.append ([pl [0] + 30, pl [1]]) def移动(键,pl): 如果关键==0:pl [0]=pl [0] -10 elif关键==1:pl [0]=pl [0] + 10 elif关键==2:pl [1]=pl [1] -10 elif关键==3:pl [1]=pl [1] + 10 如果pl [0] & lt; 0: pl [0]=0 如果pl[0]在540年:pl [0]=540 如果pl [1] & lt; 0: pl [1]=0 如果pl[1]在528年:pl [1]=528 def update_shot(照片,m,女士,ecs): 如果m==60: x=random.randint (0, 59) * 10 y=0 shots.append ((x, y)) t=[] t2=[] 如果m % 2==0: 因为我在范围(len (ecs)): ecs[我][1]=ecs[我][1]6 如果ecs[我][1]& lt; 0: t2.append(我) 因为我在范围(len (t2)): ecs.pop (t2[我]) 因为我在范围(len(照片)): 照片[我][1]=[我][1]+ 5 如果照片(我)[1]在600年: t.append(我) 因为我在范围(len (t)): shots.pop (t[我]) 如果女士!=[1]: 移动([0]女士,女士[1]) def block_detect (pl,照片): # pl (x, y) & # 39;& # 39;& # 39; 照片 [ [sx0, sy0], (朋友,sy1), …… ] & # 39;& # 39;& # 39; 因为我在范围(len(照片)): 纽约nx=[我][0],照片[我][1] x, y=pl [0] + 30, pl [1] + 36 s=math.sqrt ((nx-x) * * 2 + (ny-y) * * 2) 如果s<55: 还真 返回假 def attack_detect (ecs,照片,分数): h=[] h2=[] h3=[] 因为我在范围(len (ecs)): j的范围(len(照片)): lx ly=ecs[我][0],ecs[我][1] 残雪,cy=[j][0],照片拍摄[j] [1] d=math.sqrt ((lx-cx) * * 2 + (ly-cy) * * 2) 如果d<30: h.append ((i, j)) 因为我在范围(len (h)): h2.append (h[我][0]) h3.append (h[我][1]) h2=列表(集(h2)) h3=列表(设置(h3)) 因为我在范围(len (h2)): ecs.pop (h2[我]) 因为我在范围(len (h3)): shots.pop (h3[我]) 返回得分+ len (h) if __name__==癬_main__": 屏幕,pl, main_role、北京、字体=init () 照片=[] ecs=[] 分数=0 temp=time.time () m=0 女士=[1] 而真正的: 文本=font.render (str(分数),真的,(255255255)) 矩形=text.get_rect () rect.center=(250, 30) 如果(time.time(临时)在0.03: m=m + 1 temp=time.time () update_shot(照片,m,女士,ecs) 如果m==60: m=0 女士=mainloop(屏幕,pl, main_role,北京,照片,女士,ecs) screen.blit(文本、矩形) 分数=attack_detect (ecs,投篮,得分) pygame.display.update () 如果block_detect (pl,照片): pygame.quit ()在python项目中使用pygame制作一个飞机大作战游戏