Python语言程序设计课程论文

项目名称:飞机大战

摘要

这款游戏的名字叫<飞机大战>,是使用Python开发的纵版飞行射击类游戏.Python是一种面向对象的解释型计算机程序设计语言,具有简单易学,可移植,可拓展等特点.并且拥有丰富的资源.在图形处理,数字处理,网络编程等方面有广泛用途.这个游戏利用了Python的pygame模块,射击了子弹,飞机类的相关方法和属性,进行了背景贴图,实现了飞机大战游戏的功能.由于这款游戏的受众是年龄比较小的小朋友,所以我把飞机改成了一个小猪仔,比较可爱,应该会更受小朋友们的喜欢.
关键字: Python,pygame,面向对象,飞机大战.
Abstract The game’s name is , was developed by using the Python version longitudinal flight shooting game. Python is an object-oriented interpreted computer programming language, is easy to learn, portable, scalable, etc., and is rich in resources. In image processing, digital processing, network programming, etc have broad USES. The game using the module of pygame Python, fired bullets, the related methods and properties of a class, the background map, realized the function of the plane war game. Because of the game, the audience is the age small kid, so I changed the plane into a small pig, more cute, should be more liked by children.
Key Words: Python,pygame,object-oriented,plane war

1.绪论

1.1研究的背景及意义

当今社会是一个信息社会.自从世界上第一台计算机问世以来,计算机行业飞速发展.随着以全球信息网络普及和全球信息共享为标志的”全球信息网络革命”的蓬勃兴起,计算机变成了人们生活中必不可少的一部分.
过去,人们主要是借助电影,电视,音乐等方式来娱乐.而今天,以游戏为代表的电子娱乐正成为主流娱乐方式.因为CPU以及显卡等设备的高速发展,为人们开发出更加炫目多彩的游戏提供了可能.目前纷繁复杂的游戏软件比比皆是,无论在线的网络游戏还是桌面游戏,二维的还是三维立体空间的,多由单机版游戏孕育而来.学习简单的单机版游戏的制作,有利于初学者了解游戏制作的理念.

1.2国内外发展现状

96,97年的国产游戏产品是单机版的游戏,在当时的市场是虽然品质和档次不如外来产品,但也占有一定的市场,例如<仙剑奇侠传>,<三国志>等系列带有鲜明中国特色与气息的游戏在市场上掀起了一波高潮.1998年联众与中国游戏中心等老牌的游戏平台的推出标志着电脑游戏在中国的开荒与生根.但是到了1999年没有形成主流产品的情况下,政策不明朗,包括开发资金出现问题等原因国产游戏开始走下坡路.一直到了2000年,网络游戏问世并且很快流行起来,我国的游戏行业才有渐渐的复苏.但是由于投入差距太大,起步晚等原因与外国游戏相对而言并没有竞争力.
时至今日,网络游戏走入盛世,成为了大部分人休闲娱乐的主要修为.国内网易,腾讯,九城,完美等公司百花齐放,国产网游渐渐走入国际市场,而且基于网络的发展真正实现了网络全球化,网络游戏也是遍布全球,全球同玩一款游戏的现象比比皆是.大量海外游戏走入中国市场,电脑游戏百花纷呈,随着经济的进步,计算机科技的发展,这一现象将愈演愈烈.

1.3主要的研究内容

本项目主要完成一种基于Python开发的一款单机游戏.项目研究的具体任务包括:
(1)完成敌机发射子弹功能
(2)实现敌机子弹和玩家飞机的碰撞检测
(3)为消失的飞机添加爆炸效果

1.4本文的组织结构

第1章绪论 本章主要介绍了项目的研究背景,项目研究的目的与意义,以及该项目所在领域国内外发展状况等.最后指出了本文工作内容及论文的组织结构.
第2章项目结构 介绍项目的结构,对使用的相关技术,相关模块,实现功能的原理进行介绍,采用框架图,示例图等进行表述,使人可以对项目的框架和原理有个比较好的把握.
第3章实现代码 对代码进行分段介绍,先干什么,然后干什么.
第4章实验 展示实验结果.
第5章总结和展望 总结工作并指出不足.

1.5小结

详细介绍了电脑游戏开发的国内外现状,以及本论文研究的方向和论文的整体结构.从文章中能够清楚的了解本论文的整体框架,对以后的个细节都有清晰的认识.

2.项目结构

2.1项目的结构

本项目分为主程序plane_main.py和主程序所用到的模块plane_sprites.py.

2.2项目的实现思路

创建一个pygame窗口
必须使用循环使其可以退出
必须增加语句让其更改背景颜色后的屏幕显示

3.实现代码

palne_main.py
import pygame
from plane_sprites import *
class PlaneGane(object):
def init(self):
print(“游戏初始化”)
self.screen = pygame.display.set_mode(SCREEN_RECT.size)
self.clock = pygame.time.Clock()
self.__creat_sprites()
pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)
pygame.time.set_timer(HERO_FIRE_EVENT, 500)
def __creat_sprites(self):
bg1 = Background()
bg2 = Background(True)
self.back_group = pygame.sprite.Group(bg1,bg2)
self.enemy_group = pygame.sprite.Group()
self.hero = Hero()
self.hero_group = pygame.sprite.Group(self.hero)
def start_game(self):
print(“游戏开始…”)
while True:
self.clock.tick(FRAME_PER_SEC)
self.__event_handler()
self.__check_collide()
self.__update_sprites()
pygame.display.update()
def __event_handler(self):
for event in pygame.event.get():
#判断是否退出程序
if event.type==pygame.QUIT:
PlaneGane.__game_over()
elif event.type == CREATE_ENEMY_EVENT:
print(“炸弹来了”)
enemy = Enemy()
self.enemy_group.add(enemy)
elif event.type == HERO_FIRE_EVENT:
self.hero.fire()
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
print(“向右移动”)
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_RIGHT]:
self.hero.speed = 2
elif keys_pressed[pygame.K_LEFT]:
self.hero.speed = -2
else:
self.hero.speed = 0
def __check_collide(self):
pygame.sprite.groupcollide(self.hero.bullets,self.enemy_group,True,True)
enemies = pygame.sprite.spritecollide(self.hero,self.enemy_group,True)
if len(enemies) > 0:
self.hero.kill()
PlaneGane.__game_over()
def __update_sprites(self):
self.back_group.update()
self.back_group.draw(self.screen)

   self.enemy_group.update()self.enemy_group.draw(self.screen)self.hero_group.update()self.hero_group.draw(self.screen)self.hero.bullets.update()self.hero.bullets.draw(self.screen)
@staticmethod
def __game_over():print("游戏结束")pygame.quit()exit()

if name == ‘main’:
game=PlaneGane()
game.start_game()

plane_sprites.py
import random
import pygame

SCREEN_RECT = pygame.Rect(0,0,480,700)
FRAME_PER_SEC = 60
CREATE_ENEMY_EVENT = pygame.USEREVENT
HERO_FIRE_EVENT = pygame.USEREVENT + 1

class GameSprite(pygame.sprite.Sprite):
def init(self,image_name,speed=1):
super().init()
self.image=pygame.image.load(image_name)
self.rect=self.image.get_rect()
self.speed=speed
def update(self):
self.rect.y +=self.speed

class Background(GameSprite):
def init(self,is_alt=False):
super().init("./images/2.jpg")
if is_alt:
self.rect.y = -self.rect.height
def update(self):
super().update()
if self.rect.y >= SCREEN_RECT.height:
self.rect.y= -self.rect.height

class Enemy(GameSprite):
def init(self):
super().init("./images/5.png")
self.speed = random.randint(1,3)
self.rect.bottom = 0
max_x = SCREEN_RECT.width - self.rect.width
self.rect.x = random.randint(0,max_x)

def update(self):super().update()if self.rect.y >= SCREEN_RECT.height:self.kill()def __del__(self):print("炸弹销毁 %s"%self.rect)pass

class Hero(GameSprite):
def init(self):
super().init("./images/3.png",0)
self.rect.centerx = SCREEN_RECT.centerx
self.rect.bottom = SCREEN_RECT.bottom
self.bullets = pygame.sprite.Group()

def update(self):self.rect.x += self.speedif self.rect.x <0:self.rect.x = 0elif self.rect.right > SCREEN_RECT.right:self.rect.right = SCREEN_RECT.rightdef fire(self):print("发射子弹")for i in (0,1,2):bullet = Bullet()bullet.rect.bottom = self.rect.y - i*20bullet.rect.centerx = self.rect.centerxself.bullets.add(bullet)

class Bullet(GameSprite):
def init(self):
super().init("./images/bullet1.png", -2)

def update(self):super().update()if self.rect.bottom < 0:self.kill()def __del__(self):print("子弹被销毁")

4.实验

5.总结和展望

基于Python的飞机大战游戏是采用python语言及其pygame模块开发完成的.本项目实现了游戏流程中的所有功能,界面布局更加人性化,并有着良好的可扩展性.
这次项目设计开发为今后的学习和工作产生了积极的意义.由于还是初学者,在项目设计中还有欠缺和考虑不周的地方.游戏还有待进一步研究和改善.

Python语言程序设计课程论文--飞机大战相关推荐

  1. lenpython执行结果_哪个选项是下面代码的执行结果? len ( Python 语言程序设计课程 )_学小易找答案...

    [填空题]构成地衣体的真菌绝大部分属于____亚门,少数为____亚门和____亚门的真菌. [单选题]给定字典 d ,哪个选项对 d.get(x, y) 的描述是正确的? [单选题]对于序列 s , ...

  2. [Python语言程序设计]课程选课系统

    项目文件:课程选课系统 开发环境:PyCharm 2021.1.1 文章目录 一.任务描述及数据 1.1 要求 二.需求分析及实现路线 2.1 管理视图 2.2 学员视图 2.3 讲师视图 三.模块设 ...

  3. 总结Python语言程序设计课程-推荐的Python第三方库

    从数据处理到人工智能 python数据分析方向第三方库有:Numpy, SciPy, Pandas Python数据可视化方向的第三方库有: Seaborn, Matplotblib, Mayavi, ...

  4. Python程序设计,pygame飞机大战课程设计

    *飞机大战游戏设计 摘 要:根据课程要求,以及面向对象程序设计的编程思想,在Windows操作系统环境下,运用PyCharm编译程序,以Python语言为开发语言,最终实现飞机大战游戏相应的游戏操作功 ...

  5. 北京理工大学 python专题课程-Python语言程序设计

    Q1:Python语言.C语言.Java语言.VB语言--到底哪种适合作为入门编程语言呢? A1: 如果您是计算机.软件工程.信息类专业学生,毋庸置疑,入门编程语言请学习C语言:如果您是其他专业学生, ...

  6. 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)

    中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)  Lan   2020-05-03 14:21   369 人阅读  0 条评论 感谢中国大学MOOC提供的学习平台 ...

  7. python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案

    嵩天.礼欣.黄天羽Python语言程序设计基础(第2版)习题答案本书提出了以理解和运用计算生态为目标的Python语言教学思想,在系统讲解Python语言语法的同时介绍了从数据理解到图像处理的14个P ...

  8. python北京理工大学推荐的书-Python语言程序设计

    Q1:Python语言.C语言.Java语言.VB语言--到底哪种适合作为入门编程语言呢? A1: Python是最好的程序设计入门语言.也是最先进的程序设计语言. 如果只想学一门程序设计语言,请学P ...

  9. python好学吗mooc中文网-Python语言程序设计

    Q1:Python语言.C语言.Java语言.VB语言--到底哪种适合作为入门编程语言呢? A1: Python是最好的程序设计入门语言.也是最先进的程序设计语言. 如果只想学一门程序设计语言,请学P ...

  10. python从入门到精通 清华大学出版社-清华大学出版社-图书详情-《Python语言程序设计》...

    Python语言由荷兰人Guido van Rossum于1989年发明,1991年首次公开发行.Python语言经过二十多年的发展,已经广泛应用于计算机科学与技术.科学计算.数据的统计分析.移动终端 ...

最新文章

  1. 天命剑之天命的含义--天行有悖,乃命羲和。
  2. 利用 RDA5807的RSSI测量RF强度
  3. 挂载ntfs_运维丨linux如何挂载光盘
  4. scanner怎样回到文件开头_Radare2逆向分析dex/so/二进制等文件的使用方法
  5. 计算机第一课 教案 纪律,信息技术开学第一课-纪律
  6. RabbitMQ 从入门到精通 (一)
  7. c语言float转换为int_C语言的隐式类型转换和显示类型转换
  8. 在ubuntu下面安装glew
  9. 2014-3-16 星期天 晴[改变生活规律,稳中求进]
  10. 【经验】深度学习如何挑选GPU?
  11. YOLO算法发展史 v1 v2 v3
  12. 企划学院第十二期游学活动“聚合”郑州站圆满落下帷幕!
  13. Linux内核移植 part3:Exynos4412 Linux Kernel移植
  14. 2022年华为杯中国研究生数学建模竞赛B题思路
  15. linux进阶-ssh命令的使用技巧全get
  16. 最新注册谷歌账号遇到此号码无法验证的解决办法_看我如何成功注册gmail
  17. 232转can转换器 最新工艺
  18. Docker初级:Docker常用命令总结
  19. 【深度学习】深度学习基础-Warm_up训练策略
  20. 并查集(详细解释+完整C语言代码)

热门文章

  1. 沃尔沃押注“超大尺寸HUD”,软硬件同步升级机会凸显
  2. windows 7 如何调出快速启动栏
  3. 软件生命周期模型优缺点及适用范围
  4. 港股相关交易规则与业务知识
  5. CSDN日报20170325——《一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。》
  6. pyautogui在网页内写入excel文件内容
  7. H5页面(三)效果之实现图片360度旋转---------spritespin.js插件
  8. 怎么去掉桌面“主文件夹”图标?
  9. 程序员应知必会的思维模型之 13 侯世达定律 (Hofstadter‘s Law)
  10. 深入理解操作系统——虚拟存储详解