"""坦克大战游戏的需求"""
import pygame
from pygame.locals import *
import sys
screen_width = 800
screen_height = 600
BG_COLOR=pygame.Color(0,0,0)
TEXT_COLOR = pygame.Color(255,0,0)
pygame.init()
# 主窗口
class MainGame():
window = None
my_tank = None
def __init__(self):
pass
# 开始游戏
def startGame(self):
# 加载主窗口
pygame.display.init()
# 设置窗口的大小及显示
MainGame.window = pygame.display.set_mode([screen_width, screen_height])
# 初始化我方坦克
MainGame.my_tank = Tank(200,250)
# 设置窗口的标题
pygame.display.set_caption("坦克大战1.03")
while True:
MainGame.window.fill(BG_COLOR) # 给窗口设置填充色
MainGame.window.blit(self.getTextSurface('敌方坦克剩余数量'), (10, 10)) # 绘制文字
self.getEvent() # 获取事件
pygame.display.update()
MainGame.my_tank.displayTank() # 调用坦克显示的方法
# 结束游戏
def endGame(self):
print("谢谢使用,欢迎再次使用!")
exit()
# 左上角文字的绘制
def getTextSurface(self, text):
# 初始化字体模块
pygame.font.init()
font = pygame.font.SysFont('songti', 18)
textSurface = font.render(text, True, TEXT_COLOR)
return textSurface
# 获取事件
def getEvent(self):
# 获取所有事件
eventList = pygame.event.get()
# 遍历事件
for event in eventList:
# 判断按下的键是关闭还是键盘按下
# 如果按的是退出,关闭窗口
if event.type == pygame.QUIT:
self.endGame()
if event.type == pygame.KEYDOWN:
# 判断按下的是上,下,左,右
if event.key == pygame.K_LEFT:
print("按左键,坦克向左移动")
elif event.key == pygame.K_RIGHT:
print('按右键,坦克向右移动')
elif event.key == pygame.K_DOWN:
print('按下键,坦克向下移动')
elif event.key == pygame.K_UP:
print('按上键,坦克向上移动')
# 坦克类
class Tank():
# 添加距离左边left,距离上边top
def __init__(self, left, top):
# 保存加载的图片
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 = 'D' # 默认tank方向
self.image = self.images[self.direction] # 根据当前图片的方向获取图片 surface
self.rect = self.image.get_rect() # 根据图片获取区域
# 设置区域的left 和 top
self.rect.left = left
self.rect.top = top
def displayTank(self):
# 重新设置坦克的图片
self.image = self.images[self.direction]
# 将坦克放入窗口
MainGame.window.blit(self.image, self.rect)
# 移动
def move(self):
pass
# 射击
def shot(self):
pass
# 展示坦克的方法
def displayTank(self):
# 展示对象
self.image = self.images[self.direction]
# 调用blit方法展示
MainGame.window.blit(self.image, self.rect)
# 我方坦克
class MyTank(Tank):
def __init__(self):
pass
# 敌方坦克
class EnemyTank(Tank):
def __init__(self):
pass
# 子弹类
class Bullet():
def __init__(self):
pass
# 移动
def move(self):
pass
# 展示子弹的方法
def displayBullet(self):
pass
# 墙体类
class Wall():
def __init__(self):
pass
# 展示墙壁
def displayWall(self):
pass
# 爆炸类
class Explode():
def __init__(self):
pass
# 展示爆炸效果的方法
def displayExplode(self):
pass
# 音效类
class Music():
def __init__(self):
pass
# 播放音乐的方法
def playMusic(self):
pass
if __name__ == "__main__":
MainGame().startGame()
显示不出来坦克的样子,也没报错。