pygame--坦克大战(一)

news2024/11/24 19:28:54

项目搭建

本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认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.coloradmin.cn/o/1565930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Type-c转USBA3.0芯片 USBA3.0转Type-c芯片(USB3.1GEN2 多路切换Switch芯片) VL162

VL162具有CC功能的USB Type-C数据开关USB 3.1 Gen2 (10Gbps) VL162 带CC功能的USB Type-C数据开关 支持最高10Gbps 2差分通道,2:1 MUX/DeMUX 兼容10Gbps USB3.1 Gen2 低功耗,6mW在设备模式下有效 高直流共模电压,支持2.0V 28针QFN 3.5 x 4.5m…

软件测试(二)--测试用例

一、什么是用例: 用例就是用户使用案例的简称。以手机用例为例: 1.是否能开机:打开手机按下电源键3秒,看是否能开机。 2.验证内存:打开手机设置查看内存是否为64G. 3.验证屏幕:打开手机在白屏背景下检查屏幕是否有黑点…

MCU配置的1106模块与1102模块功能差异分析

在现代工业自动化和智能控制领域,微控制器(MCU)扮演着至关重要的角色。而在MCU的配置中,选择适合的传感器采集模块是确保数据采集准确性和多样性的关键。其中,1106模块和1102模块作为两种常见的采集模块,各自具有独特的功能特点和…

TSINGSEE青犀推出河道/河湖/水域治理视频AI智能解决方案

一、方案背景 “十四五”时期,在面源污染防治等方面实现突破,实现主要水污染排放总量持续减少,水生态环境持续改善等任务艰巨。进一步完善流域综合治理体系,提升流域水环境综合治理能力和水平,更好适应新阶段发展需求…

Mac OS上使用matplotlib库显示中文字体

文章目录 问题描述解决步骤参考文章 问题描述 如果我们想要使用matplotlib画图的话,可能会出现下面的这种warning: UserWarning: Glyph 24212 (\N{CJK UNIFIED IDEOGRAPH-5E94}) missing from current font.解决步骤 解决这个问题,可以按照下面的做法…

Rust所有权和Move关键字使用和含义讲解,以及Arc和Mutex使用

Rust 所有权规则 一个值只能被一个变量所拥有,这个变量被称为所有者。 一个值同一时刻只能有一个所有者,也就是说不能有两个变量拥有相同的值。所以对应变量赋值、参数传递、函数返回等行为,旧的所有者会把值的所有权转移给新的所有者&#…

【开发、测试】接口规范与测试

接口测试基础 url 是互联网标准资源地址,称为统一资源定位符 组成:协议,服务器地址,端口号 HTTP协议 HTTP:超文本传输协议,基于请求与响应的应用层协议 作用:规定了客户端和服务器之间的信…

Spring IOC控制反转、DI注入以及配置

1.使用xml的方式进行配置IOC容器&#xff0c;首先引入依赖 在Resource资源下配置&#xff0c;applicationContext.xml ,刷新mevan后可以直接选择配置spring.xml文件 <!-- spring核心用来管理bean --><dependency><groupId>org.springframework</g…

对【AI技术创业】有哪些机会进行分析和引导

文章目录 方向一&#xff1a;行业解决方案,以下是一些常见的行业解决方案&#xff1a;方向二&#xff1a;智能产品和服务,以下是一些智能产品和服务的示例&#xff1a;方向三&#xff1a;教育和培训 1.智能客户服务&#xff1a; 利用自然语言处理&#xff08;NLP&#xff09;和…

设计模式12--组合模式

定义 案例一 案例二 优缺点

了解与生成火焰图

目录 一、如何看懂火焰图 1、基本特征 2、基本分类 二、如何生成火焰图 1、捕获调用栈 2、折叠栈 3、转换为 svg 格式 4、展示 svg 一、如何看懂火焰图 1、基本特征 &#xff08;1&#xff09;纵轴&#xff1a;即每一列代表一个调用栈&#xff0c;每一个格子代表一个函…

【环境变量】命令行参数 | 概念 | 理解 | 命令行参数表 | bash进程

目录 四组概念 命令行参数概念&理解 查看命令函参数 命令行字符串&命令行参数表 bash进程 最近有点小忙&#xff0c;可能更新比较慢。 四组概念 竞争性: 系统进程数目众多&#xff0c;而CPU资源只有少量&#xff0c;甚至1个&#xff0c;所以进程之间是具有竞争属…

基于蚁群算法的三维路径规划(matlab实现)

作品简介 1 理论基础 1.1 三维路径规划问题概述 三维路径规划指在已知三维地图中&#xff0c;规划出一条从出发点到目标点满足某项指标最优&#xff0c;并且避开了所有三维障碍物的三维最优路径。现有的路径规划算法中&#xff0c;大部分算法是在二维规划平面或准二维规划平面…

一种新的瑞数系列通杀方案(以某监局瑞数6为例)

文章目录 声明案例地址参考代码声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 案例地址 aHR0cHM6Ly93d3cubm1wYS5nb3YuY24vZGF0YXNlYXJjaC9ob21lLWluZGV4Lmh0bWw=然后搜索 关键词 可…

02-JDK新特性-函数式接口

函数式接口 什么是函数式接口 函数式接口(Functional Interface)就是有且仅有一个抽象方法&#xff0c;但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为 Lambda 表达式。 我们可以在一个接口上使用 FunctionalInterface 注解&#xff0c;这样做可以检查它是否是…

文献速递:深度学习胰腺癌诊断--螺旋变换与模型驱动的多模态深度学习方案相结合,用于自动预测胰腺癌中TP53突变麦田医学

Title 题目 Combined Spiral Transformation and Model-Driven Multi-Modal Deep Learning Scheme for Automatic Prediction of TP53 Mutation in Pancreatic Cancer 螺旋变换与模型驱动的多模态深度学习方案相结合&#xff0c;用于自动预测胰腺癌中TP53突变 01 文献速递介…

MapReduce [OSDI‘04] 论文阅读笔记

原论文&#xff1a;MapReduce: Simplified Data Processing on Large Clusters (OSDI’04) 1. Map and Reduce Map&#xff1a;处理键值对&#xff0c;生成一组中间键值对Reduce&#xff1a;合并与同一中间键相关的所有中间值process overview&#xff1a;分割输入数据&#x…

【Redis基础篇】详细讲解Redis

这篇文章让你详细了解Redis的相关知识&#xff0c;有代码讲解以及图片剖析&#xff0c;让你更轻松掌握 制作不易&#xff0c;感觉不错&#xff0c;请点赞收藏哟 &#xff01;&#xff01;&#xff01; 目录 1 redis基础 1.1 定义 1.2 SQL和NOSQL不同点 1.3 特征 1.4 Redis…

docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装

1、安装es和ik分词器 创建映射目录并赋予权限&#xff1a; mkdir -p /docker_data/elasticsearch/conf mkdir -p /docker_data/elasticsearch/data mkdir -p /docker_data/elasticsearch/plugins chmod -R 777 /docker_data/elasticsearch编写配置文件&#xff1a; vi /dock…

基于java+SpringBoot+Vue的校园交友网站设计与实现

基于javaSpringBootVue的校园交友网站设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 整体功能包含&#xff1a; 校园交友网站是一个为在校师生提供一个交流互动、寻找朋友的…