学习编程是一件很枯燥的事情,我们今天就来聊聊代码中比较有意思的地方———项目实战(飞机大战)
首先要想要在Python中实现自己编程一个游戏的话要有一些Python 的基础,如果你有这些基础的话,那就继续往下看,如果是0基础那就去看看前面几篇基础的文章,如果有的话,那就继续往下读。
(说点没用的!!!)
在我们编程的过程中难免会出现BUG,但是不要生气,也不要气馁,那些顶尖的大牛都是用BUG喂出来的,仔仔细细的查BUG,慢慢的你的编程水平就会提升很多的!!!
接下来我们一起来看飞机大战的具体操作方法
首先需要在我们的编辑器导入一个模块 pygame,如果没有安装这个模块需要先安装,安装代码(sudo pipo3 install pygame),我这里用的是VI编辑器,其他编辑器的具体安装方式自行百度。
安装完成之后我们要搭建一个游戏的框架并明确其主程序的主要职责,
提示 根据 职责 封装私有方法,可以避免某一个方法的代码写得太过冗长
如果某一个方法编写的太长,既不好阅读,也不好维护!
游戏初始化——__init__()会调用一以下的方法:
方法__create_sprites(self):创建所有精灵和精灵组
游戏循环————start_game()会调用一下的方法
__event_handler(self):监听事件
__check_collide(self):碰撞检测
__update_sprites(self):精灵组的更新
__game_over():结束游戏
新建一个py文件,编写基础代码
import pygame
from plane_sprites import*
class PlaneGame(object):
"""飞机大战主游戏"""
def__init__(self):
print("游戏初始化")
def start_game(self):
print("开始游戏...")
if __name__ == '__main__' :
# 创建游戏对象
game =PlaneGame()
# 开始游戏
game.start_game()
游戏初始化的部分:
def__init__(self):
print("游戏初始化")
# 1. 创建游戏的窗口
self.screen=pygame.display.set_mode((480,700))
# 2. 创建游戏的时钟
self.clock=pygame.time.Clock()
# 3. 调用私有方法,精灵和精灵组的创建
self.__create_sprites()
def__create_sprites(self):
pass
注意:使用常量来代替固定的数值
游戏循环的部分:
defstart_game(self):
"""开始游戏"""
print("开始游戏...")
whileTrue:
# 1. 设置刷新帧率
self.clock.tick(60)
# 2. 事件监听
self.__event_handler()
# 3. 碰撞检测
self.__check_collide()
# 4. 更新精灵组
self.__update_sprites()
# 5. 更新屏幕显示
pygame.display.update()
def__event_handler(self):
"""事件监听"""
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
PlaneGame.__game_over()
def__check_collide(self):
"""碰撞检测"""
pass
def__update_sprites(self):
"""更新精灵组"""
pass
@staticmethod
def__game_over():
"""游戏结束"""
print("游戏结束")
pygame.quit()
exit()
准备精灵组:
def__create_sprites(self):
"""创建精灵组"""
# 背景组
self.back_group=pygame.sprite.Group()
# 敌机组
self.enemy_group=pygame.sprite.Group()
# 英雄组
self.hero_group=pygame.sprite.Group()
更新精灵族:
def__update_sprites(self):
"""更新精灵组"""
forgroupin[self.back_group,self.enemy_group,self.hero_group]:
group.update()
group.draw(self.screen)
下次再见