您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python开发飞机大战游戏

51自学网 2021-10-30 22:25:35
  python
这篇教程python开发飞机大战游戏写得很实用,希望能帮到您。

本文实例为大家分享了python开发飞机大战游戏的具体代码,供大家参考,具体内容如下

import pygameimport randomimport math  # 数学模块 # 初始化界面pygame.init()# 设置窗口大小windows = pygame.display.set_mode((800, 600))# 设置窗口标题pygame.display.set_caption("小赵同学")# 引入图片 logoicon = 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 = Falseover_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 = Truewhile 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.结束提示'''

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持51zixue.net。


详解Python中下划线的5种含义
Ubuntu16安装CUDA(9.1)和cuDNN的实现步骤(图文)
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。