python--产品篇--游戏-坦克

文章目录

  • 准备
  • 代码
    • main.py
    • cfg.py
  • 效果

准备

下载
在这里插入图片描述

代码

main.py

import os
import cfg
import pygame
from modules import *'''主函数'''
def main(cfg):# 游戏初始化pygame.init()pygame.mixer.init()screen = pygame.display.set_mode((cfg.WIDTH, cfg.HEIGHT))pygame.display.set_caption(cfg.TITLE)# 加载游戏素材sounds = {}for key, value in cfg.AUDIO_PATHS.items():sounds[key] = pygame.mixer.Sound(value)sounds[key].set_volume(1)# 开始界面is_dual_mode = gameStartInterface(screen, cfg)# 关卡数levelfilepaths = [os.path.join(cfg.LEVELFILEDIR, filename) for filename in sorted(os.listdir(cfg.LEVELFILEDIR))]# 主循环for idx, levelfilepath in enumerate(levelfilepaths):switchLevelIterface(screen, cfg, idx+1)game_level = GameLevel(idx+1, levelfilepath, sounds, is_dual_mode, cfg)is_win = game_level.start(screen)if not is_win: breakis_quit_game = gameEndIterface(screen, cfg, is_win)return is_quit_game'''run'''
if __name__ == '__main__':while True:is_quit_game = main(cfg)if is_quit_game:break

cfg.py

import os'''字体'''
FONTPATH = os.path.join(os.getcwd(), 'resources/font/font.ttf')
'''图片'''
BULLET_IMAGE_PATHS = {'up': os.path.join(os.getcwd(), 'resources/images/bullet/bullet_up.png'),'down': os.path.join(os.getcwd(), 'resources/images/bullet/bullet_down.png'),'left': os.path.join(os.getcwd(), 'resources/images/bullet/bullet_left.png'),'right': os.path.join(os.getcwd(), 'resources/images/bullet/bullet_right.png')}
ENEMY_TANK_IMAGE_PATHS = {'1': [os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_1_0.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_1_1.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_1_2.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_1_3.png')],'2': [os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_2_0.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_2_1.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_2_2.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_2_3.png')],'3': [os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_3_0.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_3_1.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_3_2.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_3_3.png')],'4': [os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_4_0.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_4_1.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_4_2.png'),os.path.join(os.getcwd(), 'resources/images/enemyTank/enemy_4_3.png')]}
PLAYER_TANK_IMAGE_PATHS = {'player1': [os.path.join(os.getcwd(), 'resources/images/playerTank/tank_T1_0.png'),os.path.join(os.getcwd(), 'resources/images/playerTank/tank_T1_1.png'),os.path.join(os.getcwd(), 'resources/images/playerTank/tank_T1_2.png')],'player2': [os.path.join(os.getcwd(), 'resources/images/playerTank/tank_T2_0.png'),os.path.join(os.getcwd(), 'resources/images/playerTank/tank_T2_1.png'),os.path.join(os.getcwd(), 'resources/images/playerTank/tank_T2_2.png')]}
FOOD_IMAGE_PATHS = {'boom': os.path.join(os.getcwd(), 'resources/images/food/food_boom.png'),'clock': os.path.join(os.getcwd(), 'resources/images/food/food_clock.png'),'gun': os.path.join(os.getcwd(), 'resources/images/food/food_gun.png'),'iron': os.path.join(os.getcwd(), 'resources/images/food/food_iron.png'),'protect': os.path.join(os.getcwd(), 'resources/images/food/food_protect.png'),'star': os.path.join(os.getcwd(), 'resources/images/food/food_star.png'),'tank': os.path.join(os.getcwd(), 'resources/images/food/food_tank.png')}
HOME_IMAGE_PATHS = [os.path.join(os.getcwd(), 'resources/images/home/home1.png'),os.path.join(os.getcwd(), 'resources/images/home/home_destroyed.png')]
SCENE_IMAGE_PATHS = {'brick': os.path.join(os.getcwd(), 'resources/images/scene/brick.png'),'ice': os.path.join(os.getcwd(), 'resources/images/scene/ice.png'),'iron': os.path.join(os.getcwd(), 'resources/images/scene/iron.png'),'river1': os.path.join(os.getcwd(), 'resources/images/scene/river1.png'),'river2': os.path.join(os.getcwd(), 'resources/images/scene/river2.png'),'tree': os.path.join(os.getcwd(), 'resources/images/scene/tree.png')}
OTHER_IMAGE_PATHS = {'appear': os.path.join(os.getcwd(), 'resources/images/others/appear.png'),'background': os.path.join(os.getcwd(), 'resources/images/others/background.png'),'boom_dynamic': os.path.join(os.getcwd(), 'resources/images/others/boom_dynamic.png'),'boom_static': os.path.join(os.getcwd(), 'resources/images/others/boom_static.png'),'gameover': os.path.join(os.getcwd(), 'resources/images/others/gameover.png'),'logo': os.path.join(os.getcwd(), 'resources/images/others/logo.png'),'mask': os.path.join(os.getcwd(), 'resources/images/others/mask.png'),'protect': os.path.join(os.getcwd(), 'resources/images/others/protect.png'),'tip': os.path.join(os.getcwd(), 'resources/images/others/tip.png'),'gamebar': os.path.join(os.getcwd(), 'resources/images/others/gamebar.png')}
'''声音'''
AUDIO_PATHS = {'add': os.path.join(os.getcwd(), 'resources/audios/add.wav'),'bang': os.path.join(os.getcwd(), 'resources/audios/bang.wav'),'blast': os.path.join(os.getcwd(), 'resources/audios/blast.wav'),'fire': os.path.join(os.getcwd(), 'resources/audios/fire.wav'),'Gunfire': os.path.join(os.getcwd(), 'resources/audios/Gunfire.wav'),'hit': os.path.join(os.getcwd(), 'resources/audios/hit.wav'),'start': os.path.join(os.getcwd(), 'resources/audios/start.wav')}
'''屏幕'''
WIDTH = 630
HEIGHT = 630
BORDER_LEN = 3
GRID_SIZE = 24
PANEL_WIDTH = 150
TITLE = '坦克大战'
'''关卡'''
LEVELFILEDIR = os.path.join(os.getcwd(), 'modules/levels')

效果

在这里插入图片描述

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

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

相关文章

CHI协议学习

原始文档:https://developer.arm.com/documentation/102407/0100/?langen CHI 总线拓扑结构 CHI总线拓扑是实现自定义的,可以是RING/MESH/CROSSBAR的类型; RING 一般适用于中等规模芯片MESH 一般适用于大规模芯片CROSSBAR 一般适用于小规模…

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器: 二、Queue队列 三、Map映射 四、题目(快递分拣 vector): 代码: 五、题目(CLZ银行问题 queue): 代码: 六、题目(费里的语言 map&…

【Spring底层原理高级进阶】Spring Kafka:实时数据流处理,让业务风起云涌!️

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:从入门到入魔》 🚀 本…

三星成功研发出业界首款12层堆叠HBM3E

三星电子有限公司成功研发出业界首款12层堆叠HBM3E DRAM——HBM3E 12H,这是迄今为止容量最大的HBM产品。这款新型HBM3E 12H内存模块提供了高达1,280GB/s的史上最高带宽,并拥有36GB的存储容量,相较于之前的8层堆叠HBM3 8H,在带宽和…

记录一次排查负载均衡不能创建的排查过程

故障现象,某云上,运维同事在创建负载均衡的时候,发现可以创建资源,但是创建完之后,不显示对应的负载均衡。 创建负载均衡时候,按f12发现console有如下报错 后来请后端网络同事排查日志发现,是后…

《PyTorch深度学习实践》第十一讲卷积神经网络进阶

一、 1、卷积核超参数选择困难,自动找到卷积的最佳组合。 2、1x1卷积核,不同通道的信息融合。使用1x1卷积核虽然参数量增加了,但是能够显著的降低计算量(operations) 3、Inception Moudel由4个分支组成,要分清哪些是在Init里定义…

汽车后视镜反射率检测仪厂家

随着汽车工业的快速发展,汽车后视镜作为驾驶员观察车辆周围环境的重要工具,其性能和质量对于交通安全至关重要。汽车后视镜的反射率检测仪是一种用于检测汽车后视镜反射性能的专业设备,其重要性不言而喻。本文将重点介绍汽车后视镜反射率检测…

猜数字小游戏

目录 java: c语言: java编写: 首先我们要获取随机数 java帮我们写好了一个类叫Random,这个类就可以生成一个随机数 那我们该如何使用Random类呢? 1、导包———Random这个类在哪呢(导包必须出现在类定义…

短视频矩阵系统--抖去推---年后技术还能迭代更新开发运营吗?

短视频矩阵系统#短视频矩阵系统已经开发3年,年后这个市场还能继续搞吗?目前市面上开发短视频账号矩阵系统的源头公司已经不多了吧,或者说都已经被市场被官方平台的政策影响的不做了吧,做了3年多的矩阵系统开发到现在真的是心里没有…

二叉树——700. 二叉搜索树中的搜索、98. 验证二叉搜索树

二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3], val 2 …

2024全国水科技大会暨新能源及电子行业废水论坛(十一)

一、会议背景 为深入学习贯彻《中共中央、国务院关于全面推进美丽中国建设的意见》,全面贯彻实施《固体废物污染环境防治法》、《“十四五”全国城市基础设施建设规划》,推进我国污泥处理工程建设,提高处理产物资源化利用水平,促进…

分享两会焦点热词,深化AI多场景应用,推动大模型垂直化与产业化

大模型、机器人、智能制造、自动驾驶……过去一年,人工智能频上头条,也成为今年北京两会上的热词。全球新一轮技术变革加速来临,大模型作为人工智能发展的核心引擎,正引发一场全新的工业革命。 在这一关键时期,全国政协…