坦克大战,坦克移动后原位置还有坦克

坦克大战,坦克移动后原位置还有坦克

img


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()