import pygame
# 设置通用属性
BG_COLOR = pygame.Color(0,0,0)
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 500
TEXT_COLOR = pygame.Color(255,0,0)
class Tank:
#'''坦克类'''
def __init__(self,left:int,top:int) -> None:
# 设置我方坦克的图片资源
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 = 'L'
# 获取图片信息
self.image = self.images.get(self.direction)
# 获取图片的矩形
self.rect = self.image.get_rect()
# 设置我方坦克位置
self.rect.left = left
self.rect.top = top
def display_tank(self) -> None:
#'''显示坦克'''
self.image = self.images.get(self.direction)
MainGame.window.blit(self.image,self.rect)
class MainGame:
# '''游戏主窗口类'''
window = None
my_tank = None
def __init__(self) -> None:
pass
def start_game(self) -> None:
# '''开始游戏 # 初始化游戏窗口
pygame.display.init()
# 创建一个窗口
MainGame.window = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
# 设置窗口标题
pygame.display.set_caption('坦克小子')
# 创建一个我方 坦克
MainGame.my_tank = Tank(350,200)
# 刷新窗口
while True:
# 给窗口设置填充色
MainGame.window.fill(BG_COLOR)
# 1.要增加文字内容
num = 6
text = self.get_text_surface(f'敌方坦克剩余数量{num}')
# 2.如何把文字加上
MainGame.window.blit(text,(10,10))
#增加事件
self.get_event()
# 显示 我方坦克
MainGame.my_tank.display_tank()
pygame.display.update()
def get_text_surface(self,text:str) -> None:
'''获取文字的图片'''
# 初始化字体模块
pygame.font.init()
# 获取可以使用的字体
# print(pygame.font.get_fonts())
# 创建字体
font = pygame.font.SysFont('kaiti',18)
# 绘制文字信息
text_surface = font.render(text,True,TEXT_COLOR)
# 将绘制的文字信息返回
return text_surface
def get_event(self) -> None:
# '''获取事件'''# 获取所有事件
event_list = pygame.event.get()
# 遍历事件
for event in event_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) -> None:
#'''结束游戏'''
print('谢谢使用,欢迎再次使用')
exit()
if __name__ == "__main__":
# 调用MainGame类中的start_game方法,开始游戏
MainGame().start_game()
#坦克的移动方法
def move(self):
pass
#碰撞墙壁的方法
def hitWalls(self):
pass
#射击方法
def shot(self):
pass
#展示坦克
def displayTank(self):
pass
class MyTank(Tank): #我方坦克类
def __init__(self):
pass
#碰撞敌方坦克的方法
def hitEnemyTank(self):
pass
class EnemyTank(Tank):
#'''敌方坦克类'''
def __init__(self) -> None:
pass
class Bullet:
#'''子弹类'''
def __init__(self) -> None:
pass
def display_bullet(self) -> None:
#'''显示子弹'''
pass
def move(self) -> None:
#'''子弹的移动 '''
pass
class Wall:
#'''墙壁类'''
def __init__(self) -> None:
pass
def display_wall(self) -> None:
#'''显示墙壁'''
pass
class Explode:
#'''爆炸效果类'''
def __init__(self) -> None:
pass
def display_explode(self) -> None:
#'''显示爆炸效果'''
pass
class Music:
#'''音效类'''
def __init__(self) -> None:
pass
def play_music(self) -> None:
#'''播放音效'''
pass
为啥我的是运行后一按就闪退?