利用Python打飞机!室友打飞机的分永远比我低!我写了个挂!嘿嘿

利用Python打飞机!室友打飞机的分永远比我低!我写了个挂!嘿嘿,第1张

概述python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站像知乎、YouTube就是Python写的;

python可以做什么?

可以做日常任务,比如自动备份你的MP3;

可以做网站,很多著名的网站像知乎、YouTube就是Python写的;

可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。

但是今天要教你用python打飞机。

简述:

相信很多朋友都用java 写过飞机大战,在自己学完python基础以后就开始写python版飞机大战,今天把用pygame实现飞机大战的游戏分享给大家。

进群:548377875   即可获取数十套pdf哦!

Pygame是跨平台python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。-----百度百科

pygame知识前瞻:

1.游戏的初始化和退出 pygame.init() 导入并初始化 所有pygame模块 在使用其他模块之前 必须先调用init 方法 pygame.quit() 卸载所有pygame 模块 在游戏结束之前调用 2.理解游戏中的坐标系 原点 在左上角(0,0) x 轴 水平方向向右 逐渐增加 y 轴 垂直方向向下 逐渐增加 xy指定位置 宽和高指定大小 注: 游戏中所有可见元素 都是以矩形区域描述 pygame.Rect 用来描述 矩形区域 不需要使用init方法 3.创建游戏的主窗口 pygame.display pygame.display.set_mode() resolution 指定屏幕的 宽和高 用元组指定 flags 指定屏幕的附加选项 是否全屏 depth 表示颜色的位数 默认自动匹配

代码结构:

main.py 主函数

myplane.py 英雄机类

enemy.py 敌机类

bullet.py 子d类

supply.py 子d供给类

程序执行流程:

代码:

整个游戏主要分三个角色,敌机,英雄机和子d

敌机 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:

英雄机总是要有点主角光环的,所以稍微复杂一点,它有这么几个主要的属性,飞行的图片,被击落的图片,屏幕坐标,它的子d,我们需要控制它的飞机方向,向上,向下,左边和右边,发射子d。

def moveUp(self): if self.rect.top > 0: self.rect.top -= self.speed else: self.rect.top = 0def moveDown(self): if self.rect.bottom < self.height - 60: self.rect.top += self.speed else: self.rect.bottom = self.height - 60def moveLeft(self): if self.rect.left > 0: self.rect.left -= self.speed else: self.rect.left = 0def moveRight(self): if self.rect.right < self.wIDth: self.rect.left += self.speed else: self.rect.right = self.wIDthdef 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

子d bullet.py:

这里需要初始化子d的图片,获取在坐标轴中的位置。

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 = Falsedef reset(self,position): self.rect.left,self.rect.top = position self.active = True

子d供给 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 = Falsedef reset(self): self.active = True self.rect.left,self.rect.bottom =  randint(0,-100

在这个游戏中还可以获得额外奖励,就是英雄机的子d速度和大小发生变化。

主函数 main.py:

主要负责游戏逻辑的控制,背景音乐的引用,游戏界面的初始化和游戏循环。

running = Truewhile running: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit()

其实用一个大的while 循环(只贴了一小部分代码)来写整个游戏的逻辑部分,主要实现了以下功能:

绘制出背景幕布 绘制出玩家的战机,敌机 绑定战机和敌机的鼠标和键盘响应事件 发射子d,通过坐标来判断子d和敌机的碰撞,以及敌机和玩家战机的碰撞 最后还要计算得分:

同时还有其他的代码实现了游戏的初始化和游戏终止。

总结

以上是内存溢出为你收集整理的利用Python打飞机!室友打飞机的分永远比我低!我写了个挂!嘿嘿全部内容,希望文章能够帮你解决利用Python打飞机!室友打飞机的分永远比我低!我写了个挂!嘿嘿所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1208642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存