pygame--坦克大战(一)

项目搭建

本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从面向对象分析该项目有以下类组成:

  • 主类

    主要包括开始游戏、结束游戏的功能。

    class MainGame:
      '''
       游戏主窗口类
       '''
      def __init__(self) -> None:
        pass
      def start_game(self) -> None:
        '''
         开始游戏
         '''
        pass
      def end_game(self) -> None:
        '''
         结束游戏
         '''
        pass
    

    坦克类:

    主要包括坦克的创建、显示、移动及射击的功能。

    class Tank():
      def __init__(self):
        pass
      #坦克的移动方法
      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
    

    显示游戏窗口

在游戏设计的前期,要先创建游戏的界面,也就是要为所设计的游戏创建一个窗口

import pygame


# 设置通用属性
BG_COLOR = pygame.Color(255,255,255)
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 500


class MainGame:
  '''
   游戏主窗口类
   '''
  # 游戏主窗口对象
  window =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('坦克大战1.0')
    # 刷新窗口
    while True:
      # 给窗口设置填充色
      MainGame.window.fill(BG_COLOR)
      pygame.display.update()
  def end_game(self) -> None:
    '''
     结束游戏
     '''
    pass


if __name__ == "__main__":
  # 调用MainGame类中的start_game方法,开始游戏
  MainGame().start_game()

运行结果:

image-20211126145251173

添加提示文字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/513082.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++的字节对齐

什么是字节对齐 参考什么是字节对齐,为什么要对齐? 现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规…

【网站项目】课堂教学效果实时评价系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

2024 Python 最新趋势

Python 于 2023 年庆祝其诞生 31 周年。它将成功地完成其在竞技场上的三十年,并成功地与许多其他重要的编程语言进行激烈的竞争。因此很明显,2023 年 Python 对于软件开发人员来说非常重要。 Python 是一种通用、高级、解释性编程语言。如今&#xff0c…

leet hot 100-13 最大子数组和

53. 最大子数组和 原题链接思路代码 原题链接 leet hot 100-10 53. 最大子数组和 思路 生成一个数字来记录last 表示前面数字全部之和与0取最大值 如果大于0 就加上如果不大于0 就不管 从当前位置从新开始遍历计算 时间复杂度O(n) 空间复杂度(1) 代码 class Solution {…

C++——异常机制

目录 一,背景 1.1 C语言处理错误的方式 1.2 C异常概念 二,异常的使用 2.1 异常的简单使用 2.2 异常的匹配原则 2.3 异常抛对象 2.4 异常的重新抛出 2.5 异常安全 三,自定义异常体系 四,异常优缺点 4.1 优点 4.2 缺点 …

女大三抱金砖?看完这篇起诉状就明白:猜疑乃婚姻之大敌

女大三抱金砖?看完这篇起诉状就明白:猜疑乃婚姻之大敌 阿勇与阿芳,一对年过四十的夫妻,且有一对已成年的儿女,如今走到了婚姻的尽头。原告阿勇指控双方感情早已破裂,受父母包办婚姻影响,两人经常…

XL5300(ToF)传感器芯片产品介绍,可最大 4m 的精确距离测量

XL5300 是一款单模块封装 ToF 传感器,采用了 SPAD、TDC 和直方图技术,可实现最大 4000 mm 的精确距离测量,片内集成了单光子雪崩二极管(SPAD)接收阵列以及VCSEL激光发射器。该传感器可对物体进行精确的距离测量而不受物…

蓝桥杯物联网竞赛_STM32L071_15_ADC/脉冲模块

ADC模块用的是RP1不用多说了,主要是脉冲模块,这个模块没考过 这个脉冲模块放出脉冲,主要能用TIM捕获到这个脉冲的高电平持续时间即可 CubMx配置: 脉冲模块的引脚与PB0相连,所以用PB0读取上升沿记的数和下降沿记的数&am…

视频剪辑软件哪个好?2024会声会影怎么样呢?

随着科技的不断发展,视频制作已经不再是专业人士的专属领域,越来越多的人开始使用各种视频制作软件来记录生活、创作内容。其中,会声会影是被广泛使用的一款视频制作软件,其旗舰版更是备受关注。 视频剪辑软件哪个好?…

信创采购风向标政策!乡镇及以上单位采购台式机/便携式需符合信创要求!

继2023年12月26日财政部会同工业和信息化部研究正式发布7项基础软硬件政府采购需求标准后,信创采购又迎风向标政策!从7项基础软硬件政府采购需求标准,看信创采购风向标! 2024年3月11日,中央政府采购网发布《关于更新中…

LeetCode-19. 删除链表的倒数第 N 个结点【链表 双指针】

LeetCode-19. 删除链表的倒数第 N 个结点【链表 双指针】 题目描述:解题思路一:双指针解题思路二:优化解题思路三:0 题目描述: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。…

今日头条signature参数js逆向(爬虫)

今日头条是ajax动态加载 话不多说,直接上代码 windowglobal;window.location{"ancestorOrigins": {},"href": "https://www.toutiao.com/","origin": "https://www.toutiao.com","protocol": "…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

📝前言: 这篇文章主要讲解一下python基础中的关于模块的导入: 1,模块的介绍 2,模块的导入方式 3,自定义模块 🎬个人简介:努力学习ing 📋个人专栏:C语言入门基…

Mediapipe框架(二)人脸检测

Mediapipe框架(二)人脸检测 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。谷歌的一系列重要产品,如Google Lens、ARCore、Google Home等都已深度整合了 MediaPipe。 MediaPipe目前支持的解决方案(Solution)及支持的平台如下图所示…

得物面试:10wqps高并发,如何防止重复下单?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 10wqps高并发,如何防止重复提交/支付订单&…

基于springboot+vue+微信小程序的医院预约挂号系统(前后端分离)(含参考论文)

基于springbootvue微信小程序的医院预约挂号系统(前后端分离)(含参考论文) 前言 本系统适用于毕业设计、课程设计或者学习等,适合选题:医院预约挂号、微信小程序、前后端分离等。系统采用springbootvue整合开发,前端框架主要使用了element-…

半山腰总是挤的,你得去山顶看看

如果你去爬山,你会发现,半山腰的人总是最多的,越往上走,人越少,而最好的风景你只能到山顶去看。所以如果你想要欣赏到最好的风景,往往付出的努力也最多。爬山不能走捷径,只能你一步一个脚印走上…

块设备的读写框架

生成块设备 我们以虚拟文件的接口,来看这个框架;因为这是从从应用层到内核的必经之路;使用vfs_mknod来生成块设备文件,并初始化fops mknoddo_mknodatvfs_mknodshmem_mknodshmem_get_inodeinit_special_inode void init_special_…

SV学习笔记(三)

类和对象概述 类和对象 面向对象的编程语言更符号人对自然语言的理解(属性property和功能function)。 这个世界由无数的类(class)和对象(object)构成的。 类是将相同的个体抽象出来的描述方式&#xff0c…

【Servlet】thymeleaf快速入门

文章目录 一、thymeleaf介绍二、入门案例 一、thymeleaf介绍 Thymeleaf:视图模板技术 在index.html页面上加载java内存中的fruitList数据,这个过程我们称之为渲染(render)。 thymeleaf是用来帮助我们做视图渲染的一个技术。 二…
最新文章