使用python的pygame做一个简易的坦克大战

这篇具有很好参考价值的文章主要介绍了使用python的pygame做一个简易的坦克大战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下代码单纯是个简易的没有完全完成的代码,主坦克单纯只能进行移动的操作,其他攻击类以及敌方坦克的移动攻击均未设置。

(精灵图可以到bilibili或者网上找精灵图,只需要改一下以下代码的文件位置就行)

import pygame.display

import pygame, time, random

SCREEN_WIDTH = 1000

SCREEN_HEIGHT = 800

COLRE = pygame.Color(0, 0, 0)

TEXT_COLOR = pygame.Color(255, 0, 0)

# 导入模块

class Maingame():

    window = None

    my_tank = None

    # 创建存储敌方坦克的列表

    enemytanklist = []

    enemytankcount = 5

 

    def __init__(self):

        pass

 

    def startgame(self):

        # 加载一个主窗口

        pygame.display.init() # 初始化窗口

        # 设置窗口的大小及其显示

        Maingame.window = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])

        # 初始化坦克的位置

        Maingame.my_tank = Tanke(350, 250)

        # 初始化敌方的坦克,并且添加到列表当中

        self.createenemy()

        # 对标题方面进行设置

        pygame.display.set_caption('坦克大作战')

        while True:

            # 使用time模块的时侯让坦克速度慢一些

            time.sleep(0.001)

            # 给窗口设置填充的颜色

            Maingame.window.fill(COLRE)

            self.getevent()

            # 绘制文字

            Maingame.window.blit(self.getText('敌方坦克剩余的数量%d' % 6), (10, 10))

            # 调用坦克的显示方法

            Maingame.my_tank.displayTake()

            #循环遍历敌方的坦克的列表,展示敌方的坦克

            self.blitenemytake()

            # 调用移动的方法

            # 如果坦克的开关是开启,才可以移动

            if not Maingame.my_tank.stop:

                Maingame.my_tank.move()

            pygame.display.update()

 

    def createenemy(self):

        top = 100

        # 循环生成敌方的坦克

        for i in range(Maingame.enemytankcount):

            left = random.randint(0, 600)

            speed = random.randint(1, 4)

            enemy = EnemyTanke(left, top, speed)

            Maingame.enemytanklist.append(enemy)

    def blitenemytake(self):

        for enemytake in Maingame.enemytanklist:

            enemytake.displayTake()

 

    def endgame(self):

        print('谢谢使,欢迎再一次进行使用')

        exit()

 

    # 对左上角的文字进行绘制

    def getText(self, text):

        # 设置初始化字体的模块

        pygame.font.init()

        # 获取字体FONT对象

        font = pygame.font.SysFont('kaiti', 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:

                    Maingame.my_tank.direction = 'L'

                    # 修改坦克的开关状态

                    Maingame.my_tank.stop = False

                    Maingame.my_tank.move()

                    print('按下左键,坦克向左方向进行移动')

                elif event.key == pygame.K_RIGHT:

                    Maingame.my_tank.direction = 'R'

                    Maingame.my_tank.stop = False

                    Maingame.my_tank.move()

                    print('按下右键,坦克向右移动')

                elif event.key == pygame.K_UP:

                    Maingame.my_tank.direction = 'U'

                    Maingame.my_tank.stop = False

                    Maingame.my_tank.move()

                    print('按下上键,坦克向上移动')

                elif event.key == pygame.K_DOWN:

                    Maingame.my_tank.direction = 'D'

                    Maingame.my_tank.stop = False

                    Maingame.my_tank.move()

                    print('按下下键,坦克向下移动')

                elif event.key == pygame.K_SPACE:

                    print('发射子弹')

                # 松开方向键的时侯停止坦克的移动,修改坦克的开关状态

            if event.type == pygame.KEYUP:

                Maingame.my_tank.stop = True

 

 

class Tanke():

    # 添加距离左边left距离上边top

    def __init__(self, left, top):

        self.images = {

            'U': pygame.image.load('坦克2/p1tankU.gif'),

            'D': pygame.image.load('坦克2/p1tankD.gif'),

            'L': pygame.image.load('坦克2/p1tankL.gif'),

            'R': pygame.image.load('坦克2/p1tankR.gif'),

        }

        # 加载方向

        self.direction = 'U'

        # 根据当前的图片的方向获取图片 surface

        self.image = self.images[self.direction]

        # 获取区域根据图片

        self.rect = self.image.get_rect()

        # 设置区域的left 和 top

        self.rect.left = left

        self.rect.top = top

        # 调整速度,决定移动速度的快慢

        self.speed = 1

        # 坦克移动的开关

        self.stop = True

 

    def move(self):

        # 判断坦克的方向进行移动

        if self.direction == 'L':

            if self.rect.left > 0:

                self.rect.left -= self.speed

        elif self.direction == 'U':

            if self.rect.top > 0:

                self.rect.top -= self.speed

        elif self.direction == 'D':

            if self.rect.top + self.rect.height < SCREEN_HEIGHT:

                self.rect.top += self.speed

        elif self.direction == 'R':

            if self.rect.top + self.rect.height < SCREEN_WIDTH:

                self.rect.left += self.speed

 

    def shot(self):

        pass

 

    # 展示坦克的方法

 

    def displayTake(self):

        # 获取展示的对象

        self.image = self.images[self.direction]

        # 调用blit方法

        Maingame.window.blit(self.image, self.rect)

 

 

# 我方的坦克

class MyTanke(Tanke):

    def __init__(self):

        pass

 

 

# 敌方的坦克

class EnemyTanke(Tanke):

    def __init__(self, left, top, speed):

        # 坦克是需要加载图片的

        self.images = {

            'U': pygame.image.load('坦克2/enemy1U.gif'),

            'D': pygame.image.load('坦克2/enemy1D.gif'),

            'L': pygame.image.load('坦克2/enemy1L.gif'),

            'R': pygame.image.load('坦克2/enemy1R.gif'),

        }

        # 需要定义一个方向

        self.direction = self.randDirection()

        # 根据方向获取image获取当前的图片

        self.image = self.images[self.direction]

        # 区域

        self.rect = self.image.get_rect()

        # 对left以及top进行赋值

        self.rect.left = left

        self.rect.top = top

        # 速度

        self.speed = speed

        # 移动开关

        self.flag = True

 

    def randDirection(self):

        num = random.randint(1, 4)

        if num == 1:

            return 'U'

        elif num == 2:

            return 'D'

        elif num == 3:

            return 'L'

        elif num == 4:

            return 'R'

 

 

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 displayExplore(self):

        pass

 

 

class Music():

    def __init__(self):

        pass

 

    # 播放音乐

    def play(self):

        pass

 

 

if __name__ == '__main__':

    Maingame().startgame()文章来源地址https://www.toymoban.com/news/detail-849411.html

到了这里,关于使用python的pygame做一个简易的坦克大战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python坦克大战完整版

    图片和音效自己自行在网上下载即可。    

    2024年02月04日
    浏览(41)
  • Python实现【坦克大战】+源码分享

    坦克大战,这款经典的电子游戏,无疑是许多80后和90后心中不可磨灭的童年记忆。它不仅仅是一款游戏,更是那个时代科技娱乐方式的缩影,见证了电子游戏行业的起步与发展。 在那个电脑和网络尚未完全普及的年代,坦克大战以其简单的规则、丰富的关卡设计和紧张刺激

    2024年04月10日
    浏览(38)
  • python项目分享 - python坦克大战小游戏

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年02月03日
    浏览(43)
  • 毕业设计 python坦克大战小游戏

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年02月21日
    浏览(43)
  • python毕设分享 python坦克大战小游戏

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年02月03日
    浏览(54)
  • 【Python实现坦克大战,带你找回童年的快乐】附源码

    坦克大战90版本是一款2D射击游戏,玩家扮演一辆坦克,通过操纵坦克进行战斗。游戏场景通常是由迷宫状的地图构成,在地图中有各种不同类型的障碍物,如墙壁、水域、草地等,这些障碍物会对玩家的行动和战斗产生影响。 玩家的目标是摧毁敌方坦克并保护自己的基地。

    2024年02月08日
    浏览(40)
  • python小游戏毕设 坦克大战游戏设计与实现

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 《坦克大战》

    2024年02月05日
    浏览(62)
  • python项目分享 - 坦克大战小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年02月01日
    浏览(50)
  • python项目分享 坦克大战小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年01月25日
    浏览(52)
  • python毕设分享 坦克大战小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 坦克大战小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取:

    2024年02月03日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包