用python写一个飞机大战小游戏的代码是什么
Admin 2022-09-27 群英技术资讯 329 次浏览
import pygame import random import math # 数学模块 # 初始化界面 pygame.init() # 设置窗口大小 windows = pygame.display.set_mode((800, 600)) # 设置窗口标题 pygame.display.set_caption("小赵同学") # 引入图片 logo icon = pygame.image.load('logo.jpg') pygame.display.set_icon(icon) # 4.游戏获取背景 bgcolor = pygame.image.load('bj.png') # 5.设置玩家飞机 playerimg = pygame.image.load('fj.png') X = 350 # 设置玩家X轴 Y = 480 # 设置玩家Y轴 # 停止移动就可以将palyerStep改为0。控制一个变量来指定飞机指定移动 playerStep = 0 # 添加背景音乐 pygame.mixer.music.load('bj.mp3') pygame.mixer.music.play(-1) # 添加射中的音效 # bao_music = pygame.mixer.Sound('bj.mp3') # 分数 score = 0 # 添加字体和大小 font = pygame.font.Font('freesansbold.ttf', 32) # 字体类 def show_score(): # 显示的文字 text = f"Score:{score}" # 渲染然后显示 显示text True表示24位的字 score_render = font.render(text, True, (0, 255, 0)) # 指定字体放到那个位置 windows.blit(score_render, (10, 10)) # 游戏结束的变量 over = False over_font = pygame.font.Font('freesansbold.ttf', 64) # 结束的提示语 def check_over(): if over: text = "Game Over" render = font.render(text, True, (255, 0, 0)) windows.blit(render, (320, 200)) # 8.添加敌人. # 11.添加多个敌人 number_enemy = 6 # 敌人类 class Enemy: def __init__(self): # self.img = pygame.image.load('enemy.png') self.x = random.randint(200, 600) # 随机产生X self.y = random.randint(50, 250) # 随机产生Y self.step = random.randint(2, 4) # 随机产生速度 # 当被射中时恢复位置 def reset(self): self.x = random.randint(200, 600) self.y = random.randint(50, 180) def distance(bx, by, ex, ey): a = bx - ex b = by - ey return math.sqrt(a * a + b * b) # 开根号 # 保存所有的敌人 enemis = [] for i in range(number_enemy): # 每次循环都都在class Enemy中过一边,所以随机产生一个敌人的参数并且保存到列表中 enemis.append(Enemy()) # 显示敌人并且实现敌人的移动下沉 def enemy(): # 循环保存敌人的列表,每个敌人都过在这个for循环里被限制了移动的轨迹 global over for e in enemis: windows.blit(e.img, (e.x, e.y)) e.x += e.step if e.x > 750 or e.x < 0: # 判断敌人是否到了边界 e.step *= -1 # 敌人碰到界面往返 e.y += 40 # 设置敌人往下沉 # 判断敌人的位置如果到达指定的地方则游戏结束 if e.y > 436: over = True print("游戏结束啦") enemis.clear() # 设置飞机及飞机移动范围的函数 == 飞机类型 def fiji_type(): # 设置飞机的坐标和飞机X Y轴最大的移动位置 global X, Y # 5. 设置飞机 windows.blit(playerimg, (X, Y)) # 6.飞机移动 X += plagerStep # 预防飞机出界 if X > 680: X = 680 if X < 0: X = 0 # 子弹的类 class Bullet: def __init__(self): self.img = pygame.image.load('bullet.png') self.x = X + 55 # 设置子弹的X轴 self.y = Y + 5 # 子弹出现在玩家的上方 self.step = 2 # 子弹移动的速度 # 击中敌人 def hit(self): global score for e in enemis: if distance(self.x, self.y, e.x, e.y) < 30: # 射中了 bullets.remove(self) e.reset() # 重置敌人 # 没击中加10分 score += 10 bullets = [] # 保存现有的子弹 # 显示子弹移动 def show_bullets(): for b in bullets: windows.blit(b.img, (b.x, b.y)) b.hit() # 查看是否击中了敌人 b.y -= b.step # 往上移动 # 判断子弹是否出了界面 if b.y < 0: bullets.remove(b) # 3.游戏主循环 running = True while running: # 4.背景 # 每个循环是画一张画组成的 # 画出来bgcolor windows.blit(bgcolor, (0, 0)) # 调用这个字体 show_score() # event.get操作事件 for event in pygame.event.get(): # 判断操作类型是不是QUIT if event.type == pygame.QUIT: # 如果程序为False就会停止则关闭 running = False # 7.控制飞机的移动 # 通过控制键盘的事件来控制(playerStep值)飞机的移动 if event.type == pygame.KEYDOWN: # 判断按下键盘右键,按下则移动 if event.key == pygame.K_RIGHT: plagerStep = 3 # 判断按下左键 elif event.key == pygame.K_LEFT: plagerStep = -3 # 判断按下空格健的反应 elif event.key == pygame.K_SPACE: # 创建一个子弹 b = Bullet() bullets.append(b) # 判断松来按键停止, if event.type == pygame.KEYUP: plagerStep = 0 # 调用飞机的类型的函数 fiji_type() # 调用敌人这个函数 enemy() show_bullets() # 显示子弹 # 游戏结束语 check_over() # 刷新更新数据 pygame.display.update() # global 设置全局变量 ''' 游戏结构 1.设置窗口大小 2.背景图 3.显示飞机 4.移动飞机 5.控制出界 6.获取键盘事件 7.显示敌人 8.敌人移动 9.下沉和随机位置 10.显示多个敌人 11.响应空格键 12.添加子弹 13.发射子弹 14.射中检测之距离 15.射中检测 16.添加音效 17.添加并显示分数 18.游戏结束 19.结束提示 '''
到此,关于“用python写一个飞机大战小游戏的代码是什么”的学习就结束了,希望能够解决大家的疑惑,另外大家动手实践也很重要,对大家加深理解和学习很有帮助。如果想要学习更多的相关知识,欢迎关注群英网络资讯站,小编每天都会给大家分享实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
为什么要用requests模块?requests模块的用法是什么?很多学习python的新手,对于requests模块不是很了解,因此,这篇文章就给大家介绍一下关于requests模块的内容。
这篇文章主要为大家详细介绍了python实现双向链表原理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
django migrate报错如何解决?要解决django migrate报错的问题,首先我们需要了解migrate做了什么事情,了解报错的情况等等这些,因此下面我们一步步来解决django migrate报错的情况。
这篇文章主要介绍了利用Python删除电脑中的重复文件,下文我们来分享解决电脑中文件重复的情况的一个方法,需要的朋友可以参考一下,希望对大家日常问题解决有所帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008