在python项目中使用pygame制作一个飞机大作战游戏

  介绍

今天就跟大家聊聊有关在python项目中使用pygame制作一个飞机大作战游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

游戏截图如下,我们用黄色的圆圈代表敌机:

在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制作一个飞机大作战游戏