引言三月份疫情原因,很多地方都在封闭管理!
回家打酱油无聊之后,边肖今天给大家带来了一波小游戏——关于飞机的全民大作战!在这里做饭。
在不下山的日子里,坐飞机休闲一下还是挺惬意的。这些天,边肖必须全身心地投入到飞机上。
在战争中出现!过了几天,这个小游戏终于上市了!
游戏的操作很简单,就是左右移动飞机,躲避敌机,击落敌机的机会,随机掉落金币,我们
要攻击的敌人!每个玩家有五条命,被敌机击中会死一条,所以珍惜生命!这个是一升的。
还有更多不同类型的飞机等着你去探索。看看你能过多少关!
边肖刚刚登上第二架飞机,我相信你一定会超过我的!快来试试吧~
一.环境装置
1)各种资料(图片、字体等。)
2)操作环境
边肖的环境:Python3,Pycharm社区版,自带Pygame模块部分。
模块安装:pip install-I https://pypi.douban.com/simple/pygame II。代码显示
1)文章思路
飞机手淫小游戏-
描述游戏: *目前只做了一关。敌机有三种,游戏中己方飞机*空格键有四种子弹。
可以,游戏结束,ESC键就是重启*暂时不加音效*游戏窗口大小512*768。
关卡中的元素介绍-
1.敌人_红色:红色小敌机,数量多,频率高,被击落后可能有硬币,可以加分。
2.敌_蓝:蓝色中型敌机,频率低,需要多发子弹才能击落,击落后可能会出现星星。
星,可以加强火力。
3.敌人_BOSS:大型绿色敌机,频率低,可以发射子弹,需要很多子弹才能击落。击落后,
得分更高。
4 4.大型绿色敌机发射的子弹
5.OWN:自己的飞机6。自己的飞机发射的:发子弹
文件-
[start.py]:启动游戏的主文件-
【level_01.py】:游戏第一关——【sprites . py】:创建游戏sprite类文件。
【initialize.py】:系统设置文件,包含游戏各种基础元素的设置值-。\字体\\.由游戏使用
字体。\图像\\.游戏中使用的图像文件-。\屏幕截图\.游戏屏幕截图# #游戏屏幕
截屏*游戏加载图片!游戏加载
2)用代码解释。
配置文件、窗口、图片等的设置。
import game screen _ rect=py game . rect(0,0,512,768) #用一个常量来存储屏幕的位置和大小,用全部大写的常量来表示screen _ center=create _ enemy _ event=py game . user event #敌机事件计时器常量值own _ fire _ event=py game . user event 1 #子弹计时器常量值bonus _ enemy _ event=py game . user event 2 #计时器常量值star _ enemy _ event=py game . user event 3 #计时器常量值boss _ enemy _ event=pygame
VENT = pygame.USEREVENT + 5 # BOSS敌机的子弹定时器常量值ENEMY_TIMER = 600 # 敌机出现的时间频率BULLET_TIMER = 400 # 子弹出现的时间频率BONUS_TIMER = 5000 # 加分敌机出现的时间频率START_TIMER = 20000 # 星星敌机出现的时间频率BOSS_TIMER = 120000 # BOSS敌机出现的时间频率BULLET_BOSS_TIMER = 1500 # BOSS敌机子弹出现的时间频率LIFE_NUMS = 5 # 生命值MOVE_SPEED = 5 # 已方飞机移动速度STAR_ENEMY_LIFE = 6 # 打掉星星敌机需要的子弹BOSS_ENEMY_LIFE = 100 # 打掉BOSS敌机需要的子弹BACKGROUND = r'.\images\background.png'GAME_OVER = r'.\images\gameover.png'OWN_IMAGE = r'.\images\own.png'OWN_DOWN_IMAGE = r'.\images\own_died.png'ENEMY_RED_IMAGE = r'.\images\enemy_red.png'ENEMY_BLUE_IMAGE = r'.\images\enemy_blue.png'ENEMY_DOWN_IMAGE = r'.\images\enemy_down.png'BULLET_IMAGE = r'.\images\bullet.png'BULLET_BOSS_IMAGE = r'.\images\bullet_boss.png'LIFE_IMAGE = r'.\images\life.png'GOLD_COIN_IMAGE = r'.\images\bonus.png'STAR_IMAGE = r'.\images\star.png'READY_IMAGE = r'.\images\ready.png'BOSS_IMAGE = r'.\images\boss.png'LOGO_IMAGE = r'.\images\logo.ico'SYS_FONT = r'.\fonts\BOLDER.ttf'GAME_NAME = '小飞机'FPS = 60 # 屏幕刷新频率3)主程序import threadingfrom sprites import *from initialize import *# noinspection PyPep8Naming# 主游戏类class PlaneGame(object): def __init__(self): self.score = 0 self.bullet_grade = 1 # 初始的子弹等级 self.boss_flag = 0 # 判断BOSS是否出现 self.ready_time = pygame.time.get_ticks() # 用来控制显示ready画面的时钟 self.star_enemy_life = STAR_ENEMY_LIFE # 星星敌机需要几颗子弹 self.boss_enemy_life = BOSS_ENEMY_LIFE # BOSS敌机需要几颗子弹 self.bullet_type = {1: 'One', 2: 'Two', 3: 'Three', 4: 'Four'} self.screen = pygame.display.set_mode(SCREEN_RECT.size) logo = pygame.image.load(LOGO_IMAGE) # 设置游戏窗口图标 pygame.display.set_icon(logo) pygame.display.set_caption(GAME_NAME) # 设置游戏窗口名称 self.clock = pygame.time.Clock() # 创建游戏时钟 self.__createSprite() # 调用私有方法, 创建精灵和组 pygame.time.set_timer(CREATE_ENEMY_EVENT, ENEMY_TIMER) # 设置定时器事件 pygame.time.set_timer(OWN_FIRE_EVENT, BULLET_TIMER) pygame.time.set_timer(BONUS_ENEMY_EVENT, BONUS_TIMER) pygame.time.set_timer(STAR_ENEMY_EVENT, START_TIMER) pygame.time.set_timer(BOSS_ENEMY_EVENT, BOSS_TIMER) pygame.time.set_timer(BULLET_BOSS_EVENT, BULLET_BOSS_TIMER) self.life_num = LIFE_NUMS def __createSprite(self): """ 私有方法,创建精灵和组 """ bg1 = BackGround(BACKGROUND) # 创建背景和组 bg2 = BackGround(BACKGROUND) bg2.rect.y = -bg2.rect.height # ??? self.back_group = pygame.sprite.Group(bg1, bg2) self.ready_go_group = pygame.sprite.Group() # 创建ready组 self.ready_go_group.add(ReadyGo()) self.enemy_red_group = pygame.sprite.Group() # 创建红色敌机组 self.enemy_down_group = pygame.sprite.Group() # 创建被击中敌机组 self.bonus_enemy_group = pygame.sprite.Group() # 创建加分敌机组 self.gold_coin_group = pygame.sprite.Group() # 创建金币组 self.star_enemy_group = pygame.sprite.Group() # 创建星星敌机组 self.boss_enemy = EnemyBoss() # ??? self.boss_enemy_group = pygame.sprite.Group() # 创建BOSS敌机组 self.bullet_boss_group = pygame.sprite.Group() # 创建BOSS子弹组 self.star_coin_group = pygame.sprite.Group() # 创建星星组 self.own_died_group = pygame.sprite.Group() # 创建自己死亡飞机的组 self.__resetOwn() # 创建自己的飞机和组 def start(self): """ 游戏开始 """ while True: self.clock.tick(FPS) # 刷新帧率 self.__eventHandler() # 事件监听 self.__checkCollide() # 碰撞检测 self.__updateSprites() # 更新/绘制画面 pygame.display.update() # 更新屏幕显示 self.__gameOver() # 游戏结束 def __eventHandler(self): """ 事件监听(监听定时器常量) """ for event in pygame.event.get(): if event.type == pygame.QUIT: # 判断是否退出游戏 PlaneGame.quit() elif event.type == CREATE_ENEMY_EVENT: # 当事件值等于CREATE_ENEMY_EVENT时,将敌机精灵添加到组 enemy = EnemyRed() self.enemy_red_group.add(enemy) elif event.type == BONUS_ENEMY_EVENT: # 当事件值等于BONUS_ENEMY_EVENT时,将加分敌机加入到组 bonus_enemy = EnemyRed() self.bonus_enemy_group.add(bonus_enemy) elif event.type == STAR_ENEMY_EVENT: # 当事件值等于STAR_ENEMY_EVENT时,将星星敌机加入到组 self.star_enemy_life = STAR_ENEMY_LIFE # 赋予新的星星敌机生命值 star_enemy = EnemyBlue() self.star_enemy_group.add(star_enemy) elif event.type == BOSS_ENEMY_EVENT: # 当事件值等于BOSS_ENEMY_EVENT时,将BOSS敌机加入到组 self.boss_enemy_life = BOSS_ENEMY_LIFE # 赋予新的BOSS敌机生命值 self.boss_enemy = EnemyBoss() # ???? self.boss_enemy_group.add(self.boss_enemy) self.boss_flag = 1 # 修改BOSS出现的flag elif event.type == OWN_FIRE_EVENT: # 当事件值等于OWN_FIRE_EVENT时,按子弹等级开火 for n in self.bullet_type: grade = 4 if self.bullet_grade > 4 else self.bullet_grade if grade == n: exec('self.own.fire{}()'.format(self.bullet_type
1)游戏界面
2)运行游戏
3)金币掉落
4)游戏结束
总结嘻嘻!打掉蓝色战机加星星之后玩起来特别爽的哦~以上没截图,大家可以自己试试的啦!
文章写到这里结束,需要源码滴私信小编06即可免费领取啦!
往期还有更多好玩儿的源码等你来领取哦~