pygame--坦克大战(一)

news/2024/9/12 17:55:01/

项目搭建

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

  • 主类

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

    class MainGame:'''游戏主窗口类'''def __init__(self) -> None:passdef start_game(self) -> None:'''开始游戏'''passdef 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:passdef display_bullet(self) -> None:'''显示子弹'''passdef move(self) -> None:'''子弹的移动'''pass
    

    墙壁类:主要包括墙壁的创建、显示的功能。

    class Wall:'''墙壁类'''def __init__(self) -> None:passdef display_wall(self) -> None:'''显示墙壁'''pass
    

    爆炸效果类:主要展示爆炸效果。

    class Explode:'''爆炸效果类'''def __init__(self) -> None:passdef display_explode(self) -> None:'''显示爆炸效果'''pass
    

    音效类:主要播放音乐。

    class Music:'''音效类'''def __init__(self) -> None:passdef play_music(self) -> None:'''播放音效'''pass
    

    显示游戏窗口

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

import pygame# 设置通用属性
BG_COLOR = pygame.Color(255,255,255)
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 500class MainGame:'''游戏主窗口类'''# 游戏主窗口对象window =Nonedef __init__(self) -> None:passdef 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:'''结束游戏'''passif __name__ == "__main__":# 调用MainGame类中的start_game方法,开始游戏MainGame().start_game()

运行结果:

image-20211126145251173

添加提示文字


http://www.ppmy.cn/news/1405452.html

相关文章

Redission--分布式锁

Redission的锁的好处 Redission分布式锁的底层是setnx和lua脚本(保证原子性) 1.是可重入锁。 2.Redisson 锁支持自动续期功能,这可以帮助我们合理控制分布式锁的有效时长,当业务逻辑执行时间超出了锁的过期时间,锁会自动续期,避免…

【大数据运维】Hbase shell 常见操作

文章目录 一. DDL1. 表的DDL1.1. 创建表1.2. 删除表 2. 列族的DDL2.1. 增加一个列簇2.2. 删除列族2.3. 修改列族版本(ing) 二. DML1. 插入与更新数据2. 删除数据3. 清空表 三. DQL1. scan:查一批数据1.1. 查询全部1.2. 过滤rowkey1.3. 过滤列…

CS架构---Socket基础

目录 一、Socket简介1.1 通信模型1.2 类型1.3 创建和使用:1.4 地址族 二、客户/服务器模式2.1 服务器端(Server Side)2.2 客户端(Client Side)2.3 通信方式2.4 角色分工2.5 优点 三、Socket实战四、常见应用场景 一、S…

C语言程序10题

第101题 (10.0分) 难度:易 第2章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:计算平均成绩并统计90分以上人数。 --…

【微服务篇】深入理解分布式消息队列系统

分布式消息队列是一种在多个服务器、应用或服务之间进行消息传递的技术。它使得各个独立的组件可以通过异步消息进行通信,提高了系统的可扩展性、解耦性和可靠性。 典型应用场景 1. 异步处理 在许多系统中,某些任务的处理可能需要较长时间&#xff0c…

Stable Diffusion 推荐硬件配置和本地化布署

Stable Diffusion简介 Stable Diffusion是由Stability AI开发的一种强大的文本到图像(Text-to-Image)生成模型,它能够根据用户提供的文本描述,生成与之相关的高质量、高分辨率图像。下面我从原理、特点、应用三个方面对Stable Diffusion作简要介绍: 1、原理:Stable Diffusion…

什么是智慧驿站?智慧驿站有哪些功能?创新型智慧公厕解说

近年来,随着智能科技的迅速发展,人们对于城市生活的期望也逐渐提升。作为城市基础设施的一部分,智慧驿站应运而生。它不仅是一座智慧公厕,更是集合了多种功能,给我们带来全新的城市生活体验。本文以智慧驿站智慧公厕源…

前端调试工具之Chrome Elements、Network、Sources、TimeLine调试

常用的调试工具有Chrome浏览器的调试工具,火狐浏览器的Firebug插件调试工具,IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速,功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrome 浏览器&#xff0c…

第N6周:使用Word2vec实现文本分类

import torch import torch.nn as nn import torchvision from torchvision import transforms,datasets import os,PIL,pathlib,warnings #忽略警告信息 warnings.filterwarnings("ignore") # win10系统 device torch.device("cuda"if torch.cuda.is_ava…

20240328金融读报:国内金融安全网与银行适老化实例

1、国内金融安全网(原则:事前防范金融风险过度积累,事中、事后快速高效处置风险):1)强化金融机构的公司治理和风险管理(如重组与否)2)二加强金融监管(各种存贷…

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

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

SnapGene 5 for Mac 分子生物学软件

SnapGene 5 for Mac是一款专为Mac操作系统设计的分子生物学软件,以其强大的功能和用户友好的界面,为科研人员提供了高效、便捷的基因克隆和分子实验设计体验。 软件下载:SnapGene 5 for Mac v5.3.1中文激活版 这款软件支持DNA构建和克隆设计&…

C++的字节对齐

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

每日一题 --- 有效的括号[力扣][Go]

有效的括号 题目:20. 有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序…

【Python基础知识点】Python的浅拷贝和深拷贝

概述 本文主要通过两个简单的代码小例子理解深拷贝和浅拷贝 主体内容 copy 模块提供了浅拷贝和深拷贝的功能。它的主要函数有: copy(x): 返回对象 x 的浅拷贝。 deepcopy(x): 返回对象 x 的深拷贝。 浅拷贝使用 copy(x) 函数,它只复制了最外层的对象,但内层的对象仍然是引用…

EfficientVMamba实战:使用EfficientVMamba实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构编译安装Vim环境环境安装过程安装库文件 计算mean和std生成数据集 摘要 论文:https://arxiv.org/pdf/2401.09417v1.pdf 作者研究了轻量级模型设计的新方法,通过引入视觉状态空间模型&…

YOLOv5改进系列:升级版ResNet的新主干网络DenseNet

一、论文理论 论文地址:Densely Connected Convolutional Networks 1.理论思想 DenseNet最大化前后层信息交流,通过建立前面所有层与后面层的密集连接,实现了特征在通道维度上的复用,不但减缓了梯度消失的现象,也使其…

AI2.0时代如何快速落地AI智能应用开发,抓住时代机会

写在前面的话 当我们提到人工智能时也就是AI的时候呢,我们大多数人首先想到的可能就是像chatGPT这样的聊天机器人,这些聊天机器人通过理解,还有生成自然语言可以给我们提供一些信息,这个是AI最终的形态吗或者AI最终的形式吗&…

每日三个JAVA经典面试题(三十四)

1.Mybatis的一级、二级缓存 MyBatis提供了两种缓存机制来提高查询效率:一级缓存和二级缓存。 一级缓存(Session级别) 作用范围:一级缓存是基于SqlSession的。这意味着,如果你在同一个SqlSession中执行两次相同的查询…

数据可视化之折线图plot

import matplotlib.pyplot as plt plt.rcParams[font.family] [SimHei]# 查看matplotlibde文件地址# import matplotlib # print(matplotlib.matplotlib_fname()) # plt.rcParams[font.sans-serif] [SimHei] # 准备数据time [20200401,20200402,20200403,20200404,20200405…