会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132382个问题
WEB前端全系列/第五阶段:前后端交互/网络请求AJAX 3392楼
Python 全系列/第二阶段:Python 深入与提高/坦克大战 3393楼

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


为啥我的是运行后一按就闪退?









Python 全系列/第二阶段:Python 深入与提高/坦克大战 3394楼

e40fba9592c478597cccbf2fc49f7b2.png

老师,创建数据库的时候报这个错误怎么解决

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 3396楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 3398楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 3399楼
JAVA 全系列/第七阶段:生产环境部署与协同开发/Linux 3404楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637