python游戏开发项目之飞机大战(2)

这篇具有很好参考价值的文章主要介绍了python游戏开发项目之飞机大战(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

飞机大战(2)

2.6.事件监听和控制英雄精灵移动

1.先获取所有事件

 #获取所有事件
 event_list=pygame.event.get()

注:用来获取当前发生的所有事件,并将其存储在event_list列表中。

2.实现正常退出游戏

#捕获窗口退出事件
   for event in event_list:
      if event.type==pygame.QUIT:
         print("游戏结束")
         pygame.quit()
         exit(0)#参数为1是非正常退出,0是正常退出,终止python程序

注:if event.type == pygame.QUIT这行代码是一个条件判断语句,用来检查当前遍历到的事件类型是否是pygame.QUIT,表示尝试关闭游戏窗口,加上这个模块后我们运行出的界面就不会显示卡顿。

3.控制英雄精灵移动

 #控制英雄界面移动
      if event.type==pygame.KEYUP:
         if event.key==pygame.K_LEFT:
            heroPlaneX=heroPlaneX-5 if heroPlaneX>=5 else 0

         elif event.key==pygame.K_RIGHT:
            heroPlaneX =  heroPlaneX+5 if heroPlaneX <= 375 else 380

         elif event.key == pygame.K_UP:
            heroPlaneY = heroPlaneY-5 if heroPlaneY >= 5 else 0

         elif event.key == pygame.K_DOWN:
            heroPlaneY = heroPlaneY+5 if heroPlaneY <= 521 else 526

注:heroPlaneX = heroPlaneX - 5 if heroPlaneX >= 5 else 0:如果我们按下左箭头键,且英雄精灵飞机的当前水平位置heroPlaneX大于等于5,则将飞机向左移动5个像素,设为0是为了以避免飞机移出屏幕左侧,剩下的与这个代码的意思类似。

4.按键动作重复执行

#设置灵敏度
pygame.key.set_repeat(20,30)

注:set_repeat是设置键盘灵敏度的,其中delay是延迟时间,interval是间隔时间,且都是毫秒级的,并且要在循环体外设置。

5.游戏更新

#更新页面
   pygame .display.update()
代码位置:

python游戏开发项目之飞机大战(2),python,pygame,开发语言
注:标红的地方要修改,如果不修改,那么就会一直在循环里被初始化,结果就无法控制精灵的移动。
python游戏开发项目之飞机大战(2),python,pygame,开发语言

2.7.绘制敌机精灵和控制敌机精灵移动

1.绘制敌机精灵

# #加载敌机图片
enemy_img=pygame.image.load('img/enemy2.png')
enemy_img2=pygame.image.load("img/enemy2_hit.png")
# 定义敌机位置
enemy_rect = pygame.Rect(158, 0, 69, 69)  # (480-69)/2
enemyPlaneX = enemy_rect.x
enemyPlaneY = enemy_rect.y
screen.blit(enemy_img, (enemyPlaneX, enemyPlaneY))

注:绘制敌机精灵要在循环体外绘制。

2.控制敌机精灵移动

# 控制精灵机移动
    if direct == "左":
        enemyPlaneX = 5
        if hero_PlaneX <= 0:
            direct = "右"
    elif direct == "右":
        enemyPlaneX += 5
        if enemyPlaneX >= 480 - 69:
            direct = "左"

注:enemyPlaneX的值是否大于等于480 - 69,如果是,则将direct的值设为"left",表示下一步移动方向为左边。

2.8.绘制精灵子弹

1.用类方法绘制精灵子弹

# 创建英雄机子弹类
# 子弹类
class HeroBullet():
    def __init__(self, x, y, screen):
        self.x = x  # x坐标
        self.y = y  # y坐标
        self.screen = screen  # 窗口对象
        self.pic = pygame.image.load("img/bullet2.png")

    # 画子弹
    def draw(self):
        self.screen.blit(self.pic, (self.x, self.y))
        self.move()

    # 使子弹移动
    def move(self):
        self.y -= 5


# 创建敌机子弹类
class EnemyBullet():
    def __init__(self, x, y, screen):
        self.x = x
        self.y = y
        self.screen = screen
        self.pic = pygame.image.load("img/bullet1.png")

    # 画子弹
    def draw(self):
        self.screen.blit(self.pic, (self.x, self.y))
        self.move()

    def move(self):
        self.y += 5

注:创建类要在循环体外创建,用draw方法来绘制飞机并调用move方法来更新飞机的位置,实现飞机在屏幕上的移动效果。

2.画出英雄战机的子弹

elif event.key == pygame.K_SPACE:  # 英雄机控制发射子弹
# 调用子弹的方法和属性
    hero_bullet = HeroBullet(hero_PlaneX + 51 - 2, hero_PlaneY - 11, screen)
# 把子弹放入列表中,子弹是多个,我们将多个实例化的子弹放入列表中
    hero_Bulletlist.append(hero_bullet)
# 让子弹到最上面的时候消失
for bullet in hero_Bulletlist:
    bullet.draw()
    hero_Bulletlist.remove(bullet) if bullet.y < 0 else ''

注:我们要在循环体外创建一个英雄机子弹的列表,一个敌机子弹的列表。

# 敌机子弹列表
enemy_list = []
# 创建英雄机子弹列表
hero_Bulletlist = []
代码位置:

python游戏开发项目之飞机大战(2),python,pygame,开发语言
python游戏开发项目之飞机大战(2),python,pygame,开发语言

3.画出敌机子弹

#绘制敌机子弹
x = random.randint(1, 100)
if x == 5 or x == 78:
#实例化一个子弹
    enemybullet = EnemyBullet(enemyPlaneX + 69 / 2 - 5 / 2,         																																																																																																																																																																																								enemyPlaneY + 99, screen)
#产生的每一个子弹放到一个列表里
    enemy_list.append(enemybullet)
for bullet2 in enemy_list:
    bullet2.draw()#绘制子弹
    enemy_bullet_rect = pygame.Rect(bullet2.x, bullet2.y, 5, 11)
    flag2 = enemy_bullet_rect.colliderect(hero_rect)

注:random,这是Python中的一个标准库模块,提供了处理随机数的函数。

代码位置:

python游戏开发项目之飞机大战(2),python,pygame,开发语言

2.9绘制精灵爆炸

1.绘制敌机爆炸图片

# 碰撞检测
        flag = hero_bullet_rect.colliderect(enemy_rect)
        if flag:
            print("敌机爆炸")
            enemy_bomb = True
            hero_Bulletlist.remove(bullet)
    if enemy_bomb == False:
        if enemy_bomb_index == 0:
                # 切换图片#绘制敌机未暴炸图片
            screen.blit(enemy_img, (enemyPlaneX, enemyPlaneY))
            enemy_bomb_index += 1
        else:
            screen.blit(enemy_img2, (enemyPlaneX, enemyPlaneY))
            enemy_bomb_index = 0
    else:
        if enemy_bomb_index == len(enemy_bomb_imgs):
            time.sleep(0.2)
            # 当敌机爆炸索引与图片总数相同时,退出游戏
            exit(0)
        enemy_bomb_img = pygame.image.load(enemy_bomb_imgs[enemy_bomb_index])
        screen.blit(enemy_bomb_img, (enemyPlaneX, enemyPlaneY))#绘制爆炸图片
        enemy_bomb_index += 1
        time.sleep(0.5)

注:绘制敌机爆炸图片在循环体外创建。

#加载敌机战损
enemy_bomb_imgs=["img/enemy2_down1.png",
                 "img/enemy2_down2.png",
                 "img/enemy2_down3.png",
                 "img/enemy2_down4.png"]

注:其中colliderect是一个方法,用于检测两个矩形是否相交,用于碰撞检测;time.sleep(0.2)的作用是让程序暂停执行0.2秒,通常用于控制程序的执行速度或者在需要延迟执行的情况下使用。

代码位置:

python游戏开发项目之飞机大战(2),python,pygame,开发语言
python游戏开发项目之飞机大战(2),python,pygame,开发语言

2.绘制英雄机爆炸图片

        flag2 = enemy_bullet_rect.colliderect(hero_rect)
        if flag2:
            print("英雄机爆炸")
            hero_bomb = True
            EnemyBiulist.remove(bullet)
    if hero_bomb == False:
        if heroIndexShift == 0:
            screen.blit(hero_img1, (heroPlaneX, heroPlaneY))
            heroIndexShift += 1
        else:
            screen.blit(hero_img2, (heroPlaneX, heroPlaneY))
            heroIndexShift = 0
    else:
        if hero_bomb_index == len(hero_bomb_imgs):
                        # 当战机爆炸索引与图片总数相同时,退出游戏
            time.sleep(0.3)
代码位置:

python游戏开发项目之飞机大战(2),python,pygame,开发语言
python游戏开发项目之飞机大战(2),python,pygame,开发语言

运行图片:

python游戏开发项目之飞机大战(2),python,pygame,开发语言
python游戏开发项目之飞机大战(2),python,pygame,开发语言文章来源地址https://www.toymoban.com/news/detail-858365.html

到了这里,关于python游戏开发项目之飞机大战(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pygame飞机大战小游戏(python大作业)

      python大作业,在查看了老师给的链接发现教学视频不完整,所以借用了同学的《Python编程 从入门到实践》中的一个项目,学习模仿。 二、游戏具体介绍 这是一款由辉辉亲自打造的太空对战小游戏。 游戏背景:在广袤无垠的太空里有一群蓝精灵(不是)有一群邪恶的坏人,

    2024年02月11日
    浏览(56)
  • 【python】 pygame学习示例 --飞机大战小游戏制作

    python版本:3.8.5 所需模块:pygame random os pygame版本:20.1 开发环境:pycharm专业版 硬件环境:win11 8G内存以上 使用python的第三方库–pygame 制作飞机大战小游戏 小游戏的内容包括: 玩家player的移动 子弹的发射 陨石的随机掉落(包括旋转 大小 下落角度) 玩家 子弹 陨石的碰撞交互

    2024年02月04日
    浏览(51)
  • Python3+pygame实现有趣好玩的飞机大战游戏(附源码及素材)

    版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 开发环境 :Windows10 Python3.6.4 第三方库 :Pygame1.9.6 IDE :PyCharm/Sublime Text 素材模块 游戏图片素材: BGM及音效素材: 字体素材: 源码模块 子弹模块 普通子弹部分源码: 超级子弹部分源码: 敌机子弹部分源码: 敌机模

    2024年02月11日
    浏览(59)
  • python小游戏开发(飞机大战)

    目录 一:背景       1. pygame 模块初识 二.项目设计内容 开发一款飞机大战游戏,要求: (1)实现飞机的移动、子弹发射,对本次游戏有一个初步的编写及认识。 (2)飞机的持续按键移动和飞机自爆优化。 (3)进行基类的抽取,使代码更具有层次性和简化重复代码。 (

    2024年02月16日
    浏览(46)
  • 用Python开发一个飞机大战游戏(附源码教程)

    点击蓝字 关注我们 Python是一门非常简单的语言,快速入门之后可以做很多事情!比如爬虫啊,数据分析啊,自动化运维啊,机器学习,量化分析等等!但是入门到进阶的过程有时会非常痛苦,如果有一些好玩有趣的例子就好了。 比如通过游戏来学编程是一个非常好的途径,

    2024年04月14日
    浏览(44)
  • Python开发小游戏:写一个飞机大战只需要500行代码!

    ‘’’ :param background_image_path: 背景图片的路径地址 :param size: 游戏窗口的大小 :param title: 游戏窗口的标题 :param font_name: 指定字体 :param font_size: 指定字体大小 :param speed: 背景图滚动整个窗口一次所用时间,单位为ms ‘’’ self.size = size self.screen = pygame.display.set_mode(size) self.tit

    2024年04月11日
    浏览(46)
  • python+pygame之飞机大战-第一版源代码分析

    目录 一、源代码 二、源代码梳理分析: (一)代码的主要结构 1、引用需要的模块 2、定义的类 3、定义main()函数:主程序 (二)代码分析收获 最好的学习方法是学习别人的代码,加上自己以前比较喜欢雷电这款游戏,所以就从飞机大战入手了,从网上下的源代码和图片素材

    2023年04月10日
    浏览(39)
  • python——飞机大战小游戏

    目录 1、导入模块 2、窗口操作 3、事件操作 4、长按事件 5、添加游戏背景 6、添加英雄飞机 7、获取飞机的图片矩形 8、基本游戏窗口 9、添加游戏窗口图片 10、英雄飞机登场 11、英雄飞机装备子弹并发射 1、enemy_plane 2、game_main 3、game_map 4、game_score 5、hero_plane 6、plane_bullet 先安

    2024年02月03日
    浏览(61)
  • python---简单游戏制作(飞机大战)

    1.开发软件 pycharm 编程软件 pygame 第三方库 sprite Group 2.技术介绍      pycharm: PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供

    2024年02月12日
    浏览(46)
  • Python飞机大战小游戏

    游戏规则:键盘上下左右键控制飞机移动 游戏展示图片: 源码: 第一个py命名为:plane_main.py 第二py命名为:plane_sprites.py 素材图片image关注私信我获取!!!

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包