import pygame
# 设置通用属性
RB_COLOR = pygame.Color(255, 255, 255)
SCREEN_WIDTH = 800
SCREEN_HIGHT = 600
TEXT_COLOR = pygame.Color(0, 0, 0)
class Tank:
"""
坦克类
"""
def __init__(self):
# 加载坦克图片
self.images = {
"U": pygame.image.load("./img/p1tankU.gif"),
"D": pygame.image.load("./img/p1tankD.gif"),
"L": pygame.image.load("./img/p1tankL.gif"),
"R": pygame.image.load("./img/p1tankR.gif"),
}
#设置我方坦克方向
self.direction="U"
#获取图片信息
self.image = self.images.get(self.direction)
#获取图片矩形
self.rect = self.image.get_rect()
#图片生成位置
self.rect.left=350
self.rect.top=250
def display_tank(self):
"""
显示坦克
"""
#获取图片信息
self.image=self.images.get(self.direction)
MainGame.window.blit(self.image,self.rect)
def move(self):
"""
坦克移动
"""
pass
def shot(self):
"""
坦克射击
"""
pass
class MyTank(Tank):
"""
我方坦克
"""
def __init__(self):
pass
class EnemyTank(Tank):
"""
敌方坦克
"""
def __init__(self):
pass
class Bullet:
"""
子弹类
"""
def __init__(self):
pass
def display_bullet(self):
"""
显示子弹
"""
pass
def move(self):
"""
子弹的移动
"""
pass
class Wall:
"""
墙壁类
"""
def __init__(self):
pass
def display_wall(self):
"""
墙壁的显示
"""
pass
class Explode:
"""
爆炸类
"""
def __init__(self):
pass
def display_explode(self):
"""
显示爆炸
"""
pass
class Music:
"""
音乐类
"""
def __init__(self):
pass
def display_music(self):
""""
播发音乐
"""
pass
class MainGame:
"""
游戏主窗口
"""
window = None
#我方坦克
my_tank=None
def __init__(self):
pass
def start_game(self):
"""
开始游戏
"""
# 初始化游戏窗口
pygame.display.init()
# 显示游戏窗口
MainGame.window = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HIGHT))
# 设置窗口文字
pygame.display.set_caption("动荡坦克1.0")
# 设计窗口颜色
MainGame.window.fill(RB_COLOR)
#创建一个我方坦克
MainGame.my_tank=Tank()
while True:
# add文字内容
num = 6
text = self.get_text_surface(f"敌方坦克剩余数量{num}")
# 如何把文字加上
MainGame.window.blit(text, dest=(10, 10))
# 触发事件监听效果
self.get_event()
#显示我方坦克
MainGame.my_tank.display_tank()
# 刷新显示页面
pygame.display.update()
def get_text_surface(self, text: str):
"""
获取字体图片
"""
# 初始化字体模板
pygame.font.init()
# 创建字体
font = pygame.font.SysFont("kaiti", 18)
# 绘制文字信息
text_surface = font.render(text, True, TEXT_COLOR)
# 将绘制文字信息返回
return text_surface
def get_event(self):
"""
获取事件
"""
even_list = pygame.event.get()
for event in even_list:
# 判断什么事件,再做出相应的处理
if event.type == pygame.QUIT:
# 点击❌事件
self.end_game()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
print("向左移动")
#修改方向
MainGame.my_tank.direction="L"
#移动
MainGame.my_tank.move()
elif event.key == pygame.K_RIGHT:
print("向右移动")
#修改方向
MainGame.my_tank.direction="R"
#移动
MainGame.my_tank.move()
elif event.key == pygame.K_UP:
print("向上移动")
#修改方向
MainGame.my_tank.direction="U"
#移动
MainGame.my_tank.move()
elif event.key == pygame.K_DOWN:
print("向下移动")
#修改方向
MainGame.my_tank.direction="D"
#移动
MainGame.my_tank.move()
def end_game(self):
"""
结束游戏
"""
print("游戏结束")
exit()
if __name__ == "__main__":
# 调用MainGame中的strat_game开始游戏
MainGame().start_game()
为啥我的坦克是叠加的,而不是单独的