pygame--坦克大战(一)

项目搭建

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter各组件超详细介绍

1、JMeter和Loadrunner的区别? 2、JMeter如何开发脚本的?强化脚本的技术? 代理服务器录制脚本,Fiddler录制脚本,Badboy录制脚本,根据API,手写脚本,根据抓包,手写脚本。 …

课程设计项目1.2:回音消除

01.课程设计的主要内容 02.代码效果图 1.逆系统法消除回声 2.LMS算法自适应滤波消除回声 3.用同态滤波消除回音 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:MATLAB课程设计本公众号致力于解决找代码难&…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 一、简单介绍 二、简单视频放大抖动效果实现原理 三、简单视频放大…

Emacs之极速复制文件名、绝对路径等快捷键(一百三十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

vulnhub之devguru靶场提权过程(vulnhub打靶日记)

一、环境搭建 VM版本:17.5.1 build-23298084 攻击机:Kali2024(下载地址:https://www.kali.org/) 靶机:vulnhub靶场Devguru(下载地址:https://www.vulnhub.com/entry/devguru-1,62…

考研数学|如何知道自己基础阶段复习过关,可以进入强化?

基础不牢,地动山摇!!! 直接说结论,对于知能行刷到2级满可以开强化,知能行2级满后可以用1800来检测一下自己 对于基础阶段的学习者来说,推荐使用汤家凤老师的《1800题》。这本题集包含了大量的…

HarmonyOS NEXT应用开发之Environment:设备环境查询

开发者如果需要应用程序运行的设备的环境参数,以此来作出不同的场景判断,比如多语言,暗黑模式等,需要用到Environment设备环境查询。 Environment是ArkUI框架在应用程序启动时创建的单例对象。它为AppStorage提供了一系列描述应用…

18.web 应用测试

每年必考; 考几个关键点: 1、计算通信量;给定并发多少、每个并发事务请求的量是多少、单位时间并发有多少个请求;计算吞吐量; 解:记公式;课上不讲,真题里有公式;比较容易…

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令 可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括的讲,转移指令就是可以控制CPU执行内存中某处代码的指令 1. 转移指令 1.1 8086CPU的转移行为有以…

“帮助“Java成长的世界级大师不简单!

文章目录 初探编程:“天啊,真酷,程序真的能学习。”哺育Java成长,成为Java幕后英雄出书《Effective Java》斩获Jolt图书大奖 是谁?作品一出版就获得著名的Jolt图书大奖,每一版本豆瓣评分均超9.0&#xff01…

Windows虚拟主机如何创建数据库和导入数据库

看到有网友咨询想要知道Windows虚拟主机上如何使用数据库,由于是新手,对于主Plesk面板使用不是很了解,想要知道如何使用数据库,这边了解到他当前使用的是Hostease 的Windows 虚拟主机,首先,登录你的Plesk面板,这里有一…

如何保护IP地址?安全匿名上网的方法

当互联网成为每个家庭的重要组成部分后,IP地址就成了你的虚拟地址。您的请求从该地址开始,然后 Internet 将消息发送回该地址。那么,您担心您的地址被泄露吗? 对于安全意识高或者某些业务需求的用户,如果您正在寻找保护…