标签:cap 键盘 类继承 切换 date() 动画 获取 游戏 quit
1.pip 安装
2.pycharm中安装
3.下载好安装包之后直接安装
使用 pip list 查看是否有pygame
游戏原理分析
实现框架的搭建(类的设计)
主逻辑类
基本坦克类
我方坦克类
敌方坦克类
子弹类
墙壁类
爆炸类
参考代码
- 主逻辑类
class MainGame:
def start(self):
"""开始游戏"""
pass
def game_over(self):
"""结束游戏"""
pass
# - 基本坦克类
class BaseTank:
pass
# - 我方坦克类
class HeroTank:
pass
# - 敌方坦克类
class EnemyTank:
pass
# - 子弹类
class Bullet:
pass
# - 墙壁类
class Wall:
pass
# - 爆炸类
class Bomb:
pass
属性:游戏主窗口
方法:开始游戏
窗口初始化
设置窗口
设置标题(坦克大战v_1.0)
窗口背景
游戏应该在无限循环中
class MainGame:
#游戏主窗口
window = None
def start(self):
"""开始游戏"""
# 调用窗口初始化
pygame.display.init()
# 创建窗口
MainGame.window = pygame.display.set_mode((900,500))
# 设置窗口标题
pygame.display.set_caption("坦克大战v_1.0")
while True:
#窗口背景颜色
MainGame.window.fill((0,0,0))
#刷新
pygame.display.update()
def game_over(self):
"""结束游戏"""
pass
获取新事件
键盘长按事件
参考代码(在主逻辑代码中添加)
def deal_event(self):
"""事件检测"""
# print(pygame.event.get())
for event in pygame.event.get():
# 1. 鼠标点击关闭窗口事件
if event.type == pygame.QUIT:
print("点击关闭窗口按钮")
sys.exit()
elif event.type==pygame.KEYDOWN:
# print("按下键盘")
if event.key==pygame.K_LEFT:
print("左移")
elif event.key==pygame.K_RIGHT:
print("右移")
elif event.type==pygame.MOUSEBUTTONDOWN:
print("鼠标点击事件")
由于我方坦克和敌方坦克有相似属性和方法,所以可以定义基本坦克类,让我方坦克和敌方坦克继承基本坦克类
基本坦克类:
参考代码(定义基本坦克类,让我方坦克类继承)
class BaseTank:
def __init__(self,x,y):
"""基本坦克类的属性"""
# 加载图片文件,返回图片对象
#将坦克图片储存在字典中
self.images = {
"U":pygame.image.load("tank_img/p1tankU.gif"),
"D":pygame.image.load("tank_img/p1tankU.gif"),
"L":pygame.image.load("tank_img/p1tankU.gif"),
"R":pygame.image.load("tank_img/p1tankU.gif"),
}
#给初始化坦克一个方向
self.direction = "U"
#根据坦克方向获取坦克图片
self.image = self.images[self.direction]
#获取图片矩形区域
self.rect = self.image.get_rect()
#根据传入的参数,决定坦克的位置
self.rect.x = x #坦克的x坐标
self.rect.y = y #坦克的y坐标
#移动速度
self.speed = 3
#是否活着
self.live = True
def display_tank(self):
"""贴坦克图片的方法"""
#先获取坦克图片
self.image = self.images[self.direction]
#贴坦克图片
MainGame.window.blit(self.image,self.rect)
# - 我方坦克类
class HeroTank(BaseTank):
def __init__(self,x,y):
super(HeroTank, self).__init__(x,y)
self.speed = 2
创建我方坦克,并加载图片
#主逻辑中记录坦克
P1 = None
def create_tank(self):
"""创建我方坦克"""
#判断是否创建了我方坦克
if not MainGame.P1:
MainGame.P1 = HeroTank(500,400) #坦克的初始位置
def load_heor_tank(self):
"""加载我方坦克"""
if MainGame.P1 and MainGame.P1.live:
#如果坦克活着就调用坦克贴图的方法
MainGame.P1.display_tank()
else:
#如果坦克死了,就删除坦克对象
del MainGame.P1
MainGame.P1 = None
#在开始游戏时调用 self.create_tank()
#在开始游戏循环中调用 self.load_heor_tank()
标签:cap 键盘 类继承 切换 date() 动画 获取 游戏 quit
原文地址:https://www.cnblogs.com/markshui/p/12883034.html