python写飞机大战游戏,python编的游戏

  python写飞机大战游戏,python编的游戏

  通过对边肖的观察,每个人似乎都对划船和钓鱼情有独钟。因此,本文为大家带来了一个用Python编写的简单版星球大战游戏。有兴趣的朋友可以试试。

  00-1010前言1。游戏画面2。游戏结束画面3。游戏素材4。游戏代码5。核心代码1。导入模块2。动态星空背景功能3。不时生成的敌机功能4。飞碟运动5。子弹移动6。玩家拍摄功能7。播放背景音乐和产生音效8。新屏幕9。移动邮票实现星星10。哭脸11。11号玩家。

  

目录

  根据最近对辣条的观察,大家似乎都对划水钓鱼情有独钟。于是我重操旧业,写了这么一个简单版的星球大战。

  当然,辣条的初衷绝对不是让你浑水摸鱼。我真的希望你能从他们身上学到一点东西。总之,希望你在Python里能少踩坑,因为昨天有人跟学长说,通过增删查,你以后会拿高薪。我不相信现在是这样的。

  就像问懂事的哥哥姐姐们,你们觉得可能吗?

  

前言

  

一.游戏画面

  

二.游戏结束画面

  

三.游戏素材

  飞碟大战. py

  因为配音需要调音台,所以这里用的是pygame的调音台。

  

四.游戏代码

  

五、核心代码

  从精灵导入*

  导入pygame.mixer

  

1.导入模块

  def star_move():

  动态启动背景功能

  对于stars:中的明星

  star.move(0,-20)

  if star.ycor() -height//2:

  x=random.randint(-width//2,width//2)

  y=random.randint(10 height//2,height*2)

  star.reborn(x,y,0,-20)

  

2.动态星空背景函数

  def spawn_enemy():

  不时产生敌机功能

  if random.randint(1,10)==1,len(enemy)10:

  x=random.randint(-200,200)

  y=random.randint(100,300)

  enemy=Sprite(shape= RES/UFO . png ,visible=False,pos=(x,y),tag=enemy )

  敌人。_rotatemode=1

  敌人.规模(0.5)

  enemy . set heading(random . randint(1,360))

  enemy.show()

  

3.不定时产生敌机函数

  def enemymove():

  “飞碟的运动”

  对于敌人:中的e

  英国食品与药品管理局(3)

  #设置某台机器

  率让ufo朝向player

   if random.randint(10,100) == 10 and \

   abs(e.xcor())<200 and abs(e.ycor()<250):

   e.heading(player)

   e.bounce_on_edge()

  

  

  

5.子弹的移动

  

def bulletmove():

   """子弹的移动"""

   for b in list(bullets):

   b.move(0,10)

   if b.collide_edge():b.remove()

  

  

  

6.玩家射击函数

  

def player_shoot():

   """玩家射击函数"""

   if player.alive == False : return

   if m1.down() and framecounter % 5 == 0 :

   b = Sprite(shape=circle,visible=False,tag=bullet)

   b.scale(0.5)

   b.color(yellow)

   b.goto(player.pos()) # 移到player坐标

   b.show() # 显示子弹

   shoot.play() # 播放射击声

  

  

  

7.播放背景音乐与生成声效对象

  

# 播放背景音乐与生成声效对象

  pygame.mixer.init()

  pygame.mixer.music.load(audio/FrozenJam.ogg)

  pygame.mixer.music.play(-1,0)

  explosion = pygame.mixer.Sound(audio/expl3.wav)

  shoot = pygame.mixer.Sound(audio/pew.wav)

  

  

  

8.新建屏幕

  

width,height = 480,640

  screen = Screen() # 新建屏幕

  screen.bgcolor(black) # 屏幕背景色为黑

  screen.setup(width,height)

  screen.title("星空飞碟大战by大海老师")

  screen.addshape(res/fighter.png)

  screen.addshape(res/ufo.png)

  frames = [res/explosion0.png,res/explosion1.png]

  [screen.addshape(frame) for frame in frames]

  

  

  

9.移动图章实现星星

  

# 星星,用来做向下滚动背景,星星的移动也可以通过移动图章实现

  # 这样可以有更多的星星。如果用克隆的话有数量限制,根据计算机配置不同而不同。

  star = Sprite(shape=circle)

  star.color(white)

  star.scale(0.1)

  stars = [star]

  stars.extend([star.clone() for _ in range(20)])

  for star in stars:

   x = random.randint(-width//2,width//2)

   y = random.randint(10+height//2,height*2)

   star.goto(x,y)

  

  

  

10.哭脸

  

cry = Sprite(shape=cry.png,visible=False,pos=(0,100))

  

  

  

11.玩家

  

player = Sprite(shape=res/fighter.png,pos=(0,-200))

  player.scale(0.65)

  player.alive = True             # 表示player是活的

  m1 = Mouse()                    # 鼠标左键检测实例

  clock = Clock()                 # 实钟对象,用来控制fps

  framecounter = 0

  counter = 0                     # 统计击中的ufo数量

  bullets = Group(bullet)       # 子弹组

  enemys = Group(enemy)         # ufo敌人组

  

  

12.飞碟移动与子弹移动

  

while counter<100:

   framecounter += 1 # 帧计数器

   spawn_enemy() # 不定时产生敌机UFO

   player_shoot() # 单击鼠标左键,射击子弹

   enemymove() # 飞碟们的移动

   bulletmove() # 子弹的移动

   if player.alive:

   player.goto(mousepos())

   else:

   cry.show() # 显示哭脸,表示失败

   star_move() # 星空滚动背景

  

  

  

13.敌机的碰撞检测

  

for e in list(enemys):        # 对每架敌机进行碰撞检测

    if e.collide(player,scale=0.6):            

        explode(e.position(),frames)

        e.remove()

        explode(player.pos(),frames)

        player.remove()

        player.alive = False

        explosion.play()         # 爆炸声

        break

    # 敌机是否碰到任意一颗子弹

    for b in list(bullets):

      if b.collide(e,scale=0.6): # 如果子弹碰到UFO        

        explode(e.position(),frames)

        e.remove()

        b.remove()

        explosion.play()         # 爆炸声

        counter +=1              # 进行统计         

        break            

  screen.title(星空飞碟大战,当前击毙: +  str(counter) + " 架UFO")  

  clock.tick(60)

  

  

14.闯关成功把子弹删除

  

[b.remove() for b in list(bullets)] # 闯关成功把子弹删除

  for e in list(enemys):              # 每架飞碟都爆炸

    explode(e.position(),frames)

    e.remove()  

    clock.tick(10)

  t = Turtle(visible=False)

  t.color(yellow)

  t.write(成功闯关!,align=center,font=(黑体,32,normal))

  while True:

    player.goto(mousepos()) 

    star_move()                   # 星空滚动背景  

    clock.tick(60)

  

  

六、总结

  看到这里的都是妥妥的铁粉无疑了,既然是铁粉那就给你们一次亲密接触机会,底下是我的个人ming片找到我的可是有大把源码,学习路线啥的,多的我就不透露,看大家自己的积极性了啊~

  其次呢再次重申辣条我真的不是想让你们摸鱼的,虽然说是个很简单的东西,但是对于初学者,或者基础不扎实的弟弟妹妹们而言估计也很难实现出来的,所以最后大家加油吧~

  以上就是利用Python写个简易版星空大战游戏的详细内容,更多关于Python星空大战的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: