python大作业

一.引言   

随着科技的发展和人们娱乐方式的多样化,游戏已经成为人们日常生活中不可或缺的一部分。飞机大战游戏作为一款经典的射击游戏,具有简单易上手、刺激性强的特点,深受广大玩家的喜爱。在游戏中,玩家将扮演一架飞机,通过发射子弹击败前来攻击的敌人,同时收集道具以提升自身能力。在这个快节奏的射击游戏中,你将扮演一架勇敢的飞机,面对来自四面八方的敌人,用你的智慧和勇气来保卫自己的领空。游戏采用简单而直观的控制方式,让你能够轻松上手,同时还有各种强大的敌机和道具等你来挑战和收集。准备好接受挑战了吗?快来加入我们吧!

二.游戏概述:

飞机大战是一款经典的射击游戏,玩家需要控制一架飞机,躲避或消灭从上方出现的敌机,同时收集各种道具,提高自己的战斗力。游戏的目标是尽可能地生存下去,获得更高的分数。

元素组成

  1. 窗口:用于显示游戏的画面和动画,以及游戏的得分和生命值等信息。
  2. 背景:用于营造游戏的氛围,可以使用两张相同的背景图片,让它们循环滚动,模拟飞机的前进效果。
  3. 敌机:从上方随机出现,以不同的速度和形态向下移动,如果碰到玩家的飞机或子弹,就会爆炸并消失,同时增加玩家的分数。
  4. 玩家飞机:可以通过键盘或鼠标控制左右上下移动,可以发射子弹,如果碰到敌机或敌机的子弹,就会损失一点生命值,并进入无敌状态一段时间,如果生命值为零,就会游戏结束。
  5. 子弹:玩家飞机可以发射子弹,用于攻击敌机,子弹有一定的射程,超出屏幕后就会消失。
  6. 道具:从上方随机掉落,玩家飞机可以通过碰撞来获取,有不同的效果,比如增加生命值,增加子弹数量,增加子弹威力,清屏炸弹等。
  7. 爆炸效果:当敌机或玩家飞机被击中时,会产生爆炸的动画效果,增加游戏的视觉冲击。

三.游戏设计

  1. 模式设计:无尽模式,敌机会源源不断地出现,玩家需要在限定生命内尽可能长时间地生存并消灭敌机。
  2. 角色设计:游戏中的角色包括玩家的飞机、敌机和子弹。玩家的飞机具有特定的属性和能力,例如速度、攻击力、生命值等。
  3. 音效设计:游戏的音效包括背景音乐、音效和声音效果等。
  4. 逻辑设计:游戏的逻辑设计包括玩家的操作方式、敌机的行为和游戏规则等。
  5. 游戏场景:游戏场景包括玩家的飞机、敌人的飞机、子弹、分数等。
  6. 游戏角色:玩家飞机、敌人飞机、子弹、分数。
  7. 游戏流程:玩家控制飞机移动,发射子弹击败敌人,收集分数射。
  8. 游戏规则:玩家有五条生命,当生命为0时游戏结束;每击败一个敌人可获得一定数量的分数,收集到boom可以提升玩家飞机的攻击力。

四.编程思路:

概念:

  1. 精灵是pygame中的一个概念,它表示游戏中的一个图像对象,可以有自己的属性和方法,比如位置,速度,形状,颜色,更新,绘制等。精灵可以被添加到精灵组中,精灵组是一个容器,可以对组内的所有精灵进行统一的操作,比如更新,绘制,碰撞检测等。
  2. pygame,它是一个专门用于开发游戏的库,提供了很多方便的功能,比如绘制图形,播放声音,处理键盘鼠标事件等。我们可以使用pygame提供的类和函数,来创建和管理游戏中的各种对象,比如窗口,时钟,精灵,精灵组等。

思考方向:

(1)首先,导入pygame模块,定义子弹,my plane,enemy和supply类。

(2)然后,定义一些常量,表示游戏的屏幕的大小,刷新频率,事件类型等,这样就可以方便地调用和修改它们。

(3)接着,定义背景类,继承自pygame.sprite.Sprite类,这样就可以创建一个背景的精灵对象,用于显示游戏的背景画面。

(4)在背景类的初始化方法中,加载背景图片,设置背景的位置和速度,判断是否是交替的背景图,如果是,就将其移动到屏幕上方,这样就可以实现背景的循环滚动效果。

(5)在背景类的更新方法中,让背景向下移动,如果移出屏幕,就将其移回到屏幕上方,这样就可以保持背景的连续性。

(6)然后,定义敌机类,继承自pygame.sprite.Sprite类,这样就可以创建一个敌机的精灵对象,用于显示游戏的敌机。

(7)在敌机类的初始化方法中,加载敌机图片,设置敌机的位置和速度,根据不同的类型,设置不同的属性,比如形状,颜色,生命值,分数等。

(8)在敌机类的更新方法中,让敌机向下移动,如果移出屏幕,就将其从精灵组中删除,这样就可以实现敌机的出现和消失的效果。

(9)同理,可以定义玩家飞机类,子弹类,道具类,爆炸效果类等,继承自pygame.sprite.Sprite类,并重写它们的初始化方法和更新方法,以实现它们的各自的功能和效果。

(10)最后,可以创建一个游戏类,用于管理游戏的整体逻辑,比如创建窗口,时钟,精灵,精灵组,事件,碰撞检测,得分,生命值,游戏状态等,并定义一个主循环方法,用于不断地刷新游戏的画面和动画,以及处理用户的输入和交互,直到游戏结束。

五.代码实现:

supply类:

定义了一个名为 Bomb_Supply 的类,继承自 pygame.sprite.Sprite。这个类代表一个Boom供应对象,其中包含初始化,移动方法,和重置方法,用于游戏中的某种策略或机制。

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Cshiqi%5CAppData%5CLocal%5CTemp%5Cksohtml20176%5Cwps1.jpg&pos_id=lduEDnU5

My plane 类:

定义了一个名为 MyPlane 的类,它继承自 pygame.sprite.Sprite。这个类代表了一个飞机对象,通过加载飞机的销毁,初始位置,和移动方法以及创建一个用于碰撞检测的掩码,用于在 pygame 游戏中表示玩家的飞机。

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Cshiqi%5CAppData%5CLocal%5CTemp%5Cksohtml20176%5Cwps2.jpg&pos_id=pYf1voTz

敌机类:

定义了一个名为BigEnemy 的类,该类继承自 pygame.sprite.Sprite。用于来创建和管理一个大型敌人的,这个敌人在一个背景图像上移动敌人的初始位置是通过一个随机数生成器确定的,它会在屏幕的顶部一个范围内随机出现。整体上,这个类是为一个简单的射击游戏设计的,其中玩家需要射击这些移动的敌人,当敌人被击中时,它会显示为受攻击的状态;当它完全离开屏幕时,它会变成销毁状态并重新出现。

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Cshiqi%5CAppData%5CLocal%5CTemp%5Cksohtml20176%5Cwps3.jpg&pos_id=GIwFvaNu

子弹类:

定义了一个名为 Bullet2 的类,它继承自pygame.sprite.Sprite类。move方法使子弹向上移动。它通过减少self.rect.top的值来实现这一点,这个值每帧减少self.speed。如果子弹移动到屏幕的顶部之外,self.active被设置为False,表示子弹不再活动。reset方法允许重新设置子弹的位置并激活它。

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Cshiqi%5CAppData%5CLocal%5CTemp%5Cksohtml20176%5Cwps4.jpg&pos_id=8qMTux89

 

六.心得体会:

在制作飞机大战游戏时,我们学到了很多关于Python编程的知识和技能。包括以下几部分:

  1. 编程语言通过使用Python来编写这个游戏,更深入地理解了Python的语法和特性。通过这次经验,更好地理解了Python中的数据类型、控制流、函数、类等概念。
  2. 库和框架:制作这个游戏,使用了pygame库。pygame是一个用于制作2D游戏的强大库,它提供了许多工具和函数,使得制作游戏变得更加简单。
  3. 游戏开发:通过制作这个游戏,更好地理解了游戏开发的过程。这包括游戏设计、编程、测试等步骤。也更深入地理解了游戏中的各种元素,如玩家、敌人、子弹、背景等。
  4. 团队合作:这次经历也更深入地理解了团队合作的重要性。尽管我们是相互协作完成这个游戏,但是在设计和编程的过程中,也遇到了许多困难,通过查阅资料逐一解决,最终完成了游戏的制作。

总的来说,这次飞机大战游戏的制作经验更深入地理解了Python编程和游戏开发虽然功能较为简陋,但是我相信这些经验和技能将对我的未来编程之路产生积极的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值