利用Python打飞机!室友打飞机的分永远比我低!我写了个挂!嘿嘿
python可以做什么? 可以做日常任务,比如自动备份你的MP3; 可以做网站,很多著名的网站像知乎、YouTube就是Python写的; 可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。 但是今天要教你用python打飞机。 简述: 相信很多朋友都用java 写过飞机大战,在自己学完python基础以后就开始写python版飞机大战,今天把用pygame实现飞机大战的游戏分享给大家。 进群:548377875???即可获取数十套PDF哦! Pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。-----百度百科 pygame知识前瞻:
代码结构: main.py 主函数 myplane.py 英雄机类 enemy.py 敌机类 bullet.py 子弹类 supply.py 子弹供给类 程序执行流程: 代码: 整个游戏主要分三个角色,敌机,英雄机和子弹 敌机 enemy.py: 随机出现一堆敌人的飞机,直管往前冲,从屏幕的上方往下方蜂拥而至,没有其他的任何行为。 设置了三种敌机的等级,大中小,代码量比较大只贴主要代码。 def move(self): if self.rect.top < self.height: self.rect.top += self.speed else: self.reset() def reset(self): self.active = True self.rect.left,self.rect.top = randint(0,self.width - self.rect.width),randint(-5 * self.height,0) 敌机的行为就一个飞,而且是只会往前,同时敌机有几个重要的属性,比如它的飞行图片和击落的图片,然后获取的屏幕上的坐标。 英雄机 myplane.py: 英雄机总是要有点主角光环的,所以稍微复杂一点,它有这么几个主要的属性,飞行的图片,被击落的图片,屏幕坐标,它的子弹,我们需要控制它的飞机方向,向上,向下,左边和右边,发射子弹。 def moveUp(self): if self.rect.top > 0: self.rect.top -= self.speed else: self.rect.top = 0 def moveDown(self): if self.rect.bottom < self.height - 60: self.rect.top += self.speed else: self.rect.bottom = self.height - 60 def moveLeft(self): if self.rect.left > 0: self.rect.left -= self.speed else: self.rect.left = 0 def moveRight(self): if self.rect.right < self.width: self.rect.left += self.speed else: self.rect.right = self.width def reset(self): self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 60 self.active = True self.invincible = True 子弹 bullet.py: 这里需要初始化子弹的图片,获取在坐标轴中的位置。 def __init__(self,position): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load ("images/bullet1.png").convert_alpha() self.rect = self.image.get_rect() self.rect.left,self.rect.top = position self.speed = 12 self.active = False self.mask = pygame.mask. from_surface(self.image) def move(self): self.rect.top -= self.speed if self.rect.top < 0: self.active = False def reset(self,position): self.rect.left,self.rect.top = position self.active = True 子弹供给 supply.py: self.speed = 5 self.active = False self.mask = pygame.mask. from_surface(self.image) def move(self): if self.rect.top < self.height: self.rect.top += self.speed else: self.active = False def reset(self): self.active = True self.rect.left,self.rect.bottom = randint(0,-100 在这个游戏中还可以获得额外奖励,就是英雄机的子弹速度和大小发生变化。 主函数 main.py: 主要负责游戏逻辑的控制,背景音乐的引用,游戏界面的初始化和游戏循环。 running = True while running: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() 其实用一个大的while 循环(只贴了一小部分代码)来写整个游戏的逻辑部分,主要实现了以下功能:
同时还有其他的代码实现了游戏的初始化和游戏终止。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |