坦克大战,坦克移动后原位置还有坦克
import pygame
SCREEN_WIDTH = 700
SCREEN_HIGHT = 500
BG_COLOR = pygame.Color.r
TEXT_COLOR = pygame.Color(255, 0, 0)
class MainGame():
window = None
MyTank = None
def __init__(self):
pass
def StartGame(self):
pygame.display.init()
MainGame.window = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HIGHT])
# 初始化我方坦克
MainGame.MyTank = Tank(350, 250)
# 设置标题
pygame.display.set_caption("坦克大战")
while True:
# 给窗口设置填充色
pygame.display.update()
# 调用坦克现实的方法
MainGame.MyTank.displaytank()
# MainGame.window.fill(BG_COLOR)
MainGame.window.blit(self.getTextSuface("地方坦克的数量"), (20, 10))
self.getEvent()
# 设置窗口的大小及显示
def EndGame(self):
print("谢谢使用")
exit()
# 左上角文字的绘制
def getTextSuface(self, text):
# 字体模块初始化
pygame.font.init()
# 获取字体font对象
font = pygame.font.SysFont("kaiti", 18)
# 绘制文字信息
textSurface = font.render(text, True, TEXT_COLOR)
return textSurface
print(pygame.font.get_fonts())
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:
MainGame.MyTank.direction='L'
MainGame.MyTank.move()
print("按下左键,坦克向左移动")
elif event.key == pygame.K_RIGHT:
if event.key == pygame.K_RIGHT:
MainGame.MyTank.direction = 'R'
MainGame.MyTank.move()
print("按下右键,坦克向右移动")
elif event.key == pygame.K_UP:
if event.key == pygame.K_UP:
MainGame.MyTank.direction = 'U'
MainGame.MyTank.move()
print("按下上键,坦克向上移动")
elif event.key == pygame.K_DOWN:
if event.key == pygame.K_DOWN:
MainGame.MyTank.direction = 'D'
MainGame.MyTank.move()
print("按下下键,坦克向下移动")
class Tank():
# 距离左边和距离上边
def __init__(self,left, top):
# 保存加载图片
self.images = {
'U': pygame.image.load('img/U_gaitubao_155x155.gif'),
'D': pygame.image.load('img/D_gaitubao_155x155.gif'),
'R': pygame.image.load('img/R_gaitubao_155x155.gif'),
'L': pygame.image.load('img/L_gaitubao_157x157.gif')
}
# 方向
self.direction = 'U'
self.image = self.images[self.direction]
# 根据图片获取区域
self.rect = self.image.get_rect()
# 设置区域位置
self.rect.left = left
self.rect.top = top
self.speed=10
def move(self):
if self.direction=='L':
self.rect.left-=self.speed
elif self.direction=='R':
self.rect.left+=self.speed
elif self.direction=='U':
self.rect.top-=self.speed
elif self.direction=='D':
self.rect.top+=self.speed
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 EmemyTank(Tank):
def __init__(self):
pass
if __name__ == '__main__':
MainGame().StartGame()
MainGame().getTextSuface()