自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 Pygame坦克大战游戏8

游戏运行过程会根据玩家及敌人的动作播放对应的游戏音效,当前只是配置了主要的音效,读者可以根据自己的需求增加更多的音效以提高游戏的体验。当前阶段要实现的是为游戏增加声音效果,以提升游戏体验。2-3、执行命令:python main.py。2-1、打开cmd命令窗口。2-2、进入code目录。

2025-10-21 09:14:50 469

原创 Pygame坦克大战游戏9

打包完成后将在dict目录中生成main.exe文件,直接双击main.exe文件便可以运行游戏程序。将生成dist目录拷贝到根目录,此时双击dict目录中的main.exe便可以运行游戏程序。其中–upx-dir=D:/upx/upx-5.0.2-win64是压缩生成的exe文件。在code目录中生成main.spec文件,按下面方式修改生成的main.spec文件。当前阶段将游戏程序包打包成exe执行文件。在cmd窗口中执行下面命令。

2025-10-21 09:13:04 295

原创 Pygame坦克大战游戏7

提供start(self, level)方法,执行游戏开屏操作,方法可复用(游戏进入下一关后,调用此方法可重复显示开屏效果)当前阶段要实现的是增加游戏开始时候的开屏动画,游戏通关逻辑(玩家打死所有敌人后,游戏自动进入下一关)以及游戏失败后的操作。1-2-1、增加方法start_game(self),实现当游戏失败后重新开始游戏或者当游戏通过后开始下一关游戏。1-2-3、增加方法game_is_over(self),处理游戏失败后的逻辑(等待指定时间后,重新开始游戏)2-2、进入code目录。

2025-10-20 09:13:19 277

原创 Pygame坦克大战游戏6

游戏屏幕的宽和高分别是1440 * 960,图片块的宽和高分别是60 * 60,游戏屏幕按图片块分为水平方向 1440 / 60 = 24块,垂直方向 960 / 60 =16块, 其中上,左,下分别占用一块的尺寸(游戏边界),右边占用2块的尺寸(用于显示游戏基本信息)。当前阶段要实现的是增加游戏信息显示功能(包括关卡信息,用户生命信息,敌人待生成信息显示功能)以及玩家重生(玩家被敌人打死后,如果玩家生命数大于0)功能。,采用【P1 数字】方式显示,其中数字表示玩家1还剩多少条命,可根据需求扩展玩家2。

2025-10-20 09:11:49 981

原创 Pygame坦克大战游戏5

当前阶段要实现的是增加宝物功能,包括系统随机生成宝物, 玩家吃到宝物的效果, 玩家出生默认戴帽子(无敌)一段时间的效果。玩家吃到帽子宝物后,玩家产生戴帽子效果,并且在一定时间内处于无敌状态。2-3、执行命令:python main.py。2-1、打开cmd命令窗口。2-2、进入code目录。

2025-10-17 15:50:18 892

原创 Pygame坦克大战游戏4

1-1-7、增加玩家发射的炮弹碰撞敌人发射的炮弹的方法collision_missile(self),处理逻辑是玩家发射的炮弹同敌人发射的炮弹发生碰撞时,比较两个碰撞炮弹谁的伤害值(attack_harm),伤害值大的炮弹在更新伤害值(假如attack_harm1 > attack_harm2, 则更新后的伤害值= attack_harm1- attach_harm2)后,继续存在且向前运动。当前阶段要实现的功能是增加玩家坦克或者敌人坦克发射炮弹的功能,以及炮弹击打在障碍物,玩家和敌人身上的逻辑和效果。

2025-10-17 15:48:51 679

原创 Pygame坦克大战游戏3

Enemy类继承Activity类,并且在Enemy类中增加rand_direction(self)方法,这个方法实现敌人坦克自由移动的业务逻辑,具体思路是敌人先从四个方向(前后左右)中随机选中一个,然后随机选择一个移动时间(0-6s),然后锁定移动时间,让敌人坦克调用move()方法进行移动,等移动时间到了之后,重复上面的操作使敌人坦克可以随机的自由移动。1-1-2、移动方法【move(self)】,该方法实现玩家和敌人的移动效果(此方法是从player.py中复制过来)2-1、打开cmd命令窗口。

2025-10-17 15:43:42 552

原创 Pygame坦克大战游戏2

此处将草地类单独从障碍物类提取出来的目的是,玩家以及敌人在移动过程中都存在与障碍物对象碰撞的情况,在同非草地的碰撞逻辑是玩家及敌人不会同障碍物重叠,当时可以与草地重叠,并且玩家和敌人是在草地的下方(被草地遮挡)。由于pygame最后渲染的图片是会覆盖之前渲染的图片,所以此处将草地放到最后渲染,这样当玩家移动到草地的时候,玩家的图片就会在草地图片的下方。当前游戏的单元格图片尺寸设定为60*60,所以游戏总的屏幕尺寸为:(宽,高)=(24 * 60, 16 * 60)=(1440, 960)

2025-10-17 15:42:36 855

原创 Pygame坦克大战游戏1

Pygame是一个跨平台的python游戏开发库,基于 SDL(Simple DirectMedia Layer)库,提供图像渲染、音频处理、输入管理和游戏逻辑开发等功能。它结合了Python的灵活性与游戏开发的实用性,广泛应用于教育和开发领域,并且它提供了丰富的功能,例如图形渲染、声音处理、事件处理以及碰撞检测等,这些功能使得开发2D游戏变得更加简单。

2025-10-17 15:37:34 1210

原创 Camunda已办流程图如何高亮显示连线以及箭头

Camunda是一个工作流引擎,执行Bpmn2.0标准。与它同类型的流程引擎有jbpm、activiti、flowable。它是一个开源的工作流引擎和业务流程管理平台,允许用户通过图形界面或编程方式定义复杂的工作流和业务流程。Camunda是2012年从Activiti分裂出一个新的开源工程,它提供免费的建模工具,它有网页版和桌面版。连线监听的事件类型为take, 监听器类型为class,Java类为自己定义的java类。

2025-04-30 17:50:31 1355

原创 实现Springboot整合uflo2

UFLO2是一款纯Java流程引擎,它架构于Spring、Hibernate之上,提供诸如并行、动态并行、串行、会签等各种常见及不常见的业务流程流转功能署。它采用全新的基于网页的流程模版设计器,打开网页即可完成流程模版的设计与制作。它是锐道自主研发的一款开源的工作流引擎,采用Apache-2.0开源协议(点击进入gitee源码页面),有兴趣的同学可以download下来进行学习和交流。

2022-09-13 17:40:07 2087 8

原创 实现Springboot整合UReport2

UReport2是一款高性能的架构在Spring之上纯Java报表引擎,它由上海锐道信息技术有限公司开发的一款基于Apache-2.0协议开源的中式报表引擎

2022-08-19 16:32:18 14144 22

原创 ShardingSphere分库分表(SpringBoot+mybatis+mysql)配置

ShardingSphere定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能。

2022-03-18 13:49:41 6079 2

原创 Java+Springboot+Websocket在线聊天室

1、什么是websocket?websocket是由HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。它是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。2、为啥要实现web在线聊天程序?最近在学习过程中看到了websocket协议,于是就有了一

2021-10-08 13:55:21 3797 4

原创 Python在线聊天室(windows)

Python在线聊天室(windows)1、:准备系统参数配置模块 (settings.py)#服务器地址HOST = 'localhost'#服务器端口PORT = 9999#服务器管道地址PIPE_PORT=9998#数据缓冲大小BUFFERSIZE = 1024#服务器端socket连接地址ADDR = HOST,PORT#服务端连接键盘和服务端的管道地址PIPE_ADDR = HOST,PIPE_PORT#默认语言选择language = 'cn'2、:国际化语

2021-09-28 16:31:21 1600 1

原创 达梦数据库入门:管理实例(Linux)

达梦数据库管理实例(Linux)1、:创建数据库实例一、使用数据库助(GUI)创建数据库实例(安装用户:dmdba,安装路径/dm8)1)、登录到dmdba用户,cd到目录/dm8/tool[root@localhost mnt]$ su dmdba[dmdba@localhost mnt]$ cd /dm8/tool[dmdba@localhost mnt]$ ./dbca.sh注意:如果提示不能打开达梦数据库配置助手,则先重新打开一个命令窗口,执行命令xhost +将桌面共享出来,然后再

2021-01-13 15:40:44 3155

原创 达梦数据库入门:达梦8安装与卸载(Linux)

达梦数据库Linux安装1、准备linux操作系统:笔者采用的操作系统是中标麒麟高级服务器操作系统软件V7.0,其它常用的linux操作系统也可以进行安装(比如CentOS7)。2、规划安装用户以及安装路径1)、首先使用root用户创建用户组dmgroup[root@localhost ~]# groupadd dmgroup2)、然后创建用户dmdba[root@localhost ~]# useradd -g dinstall dmdba3)、规划安装目录,并将目录的所属权限设置给d

2021-01-13 12:00:47 1409

原创 springBoot+myBatis配置基于mysql的读写分离

xxx

2020-05-04 20:43:08 439

原创 mysql半同步配置

半同步复制,即semi-sync复制,指的就是主库写入binlog日志之后,就会将强制此时立即将数据同步到从库,从库将日志写入自己本地的relay log之后,接着会返回一个ack给主库,主库接收到至少一个从库的ack之后才会认为写操作完成了。半同步复制提高了数据的一致性和安全性(并不绝对保证一致性,当延时超过设置的超时时间,半同步会自动转为异步执行),但同时它也造成了一定程度的延迟,这个延迟最...

2020-04-27 13:59:34 880

原创 Windows同一台服务器mysql主从配置方式

mysql主从库配置方式先下载mysql数据库绿色安装包(下载地址),解压为两份,一份为mysql主库(D:/mysql/mysql5.6.17),一份为mysql从库(D:/mysql/mysql5.6.17_slave)【一】、主库my.ini配置信息server-id = 1port=3306basedir=D:/mysql/mysql5.6.17datadir=D:/mysql...

2020-04-27 10:52:07 979 2

Pygame坦克大战游戏9-将游戏打包成exe执行文件

当前程序包将游戏打包成exe执行文件 1、安装pyinstaller pip install pyinstaller 2、进入code目录(cd code), 执行下面命令进行打包操作 2-1、方式一: 2-1-1、pyinstaller --onefile --windowed --upx-dir=D:/upx/upx-5.0.2-win64 main.py 其中--upx-dir=D:/upx/upx-5.0.2-win64是压缩生成的exe文件 upx的下载地址为:https://github.com/upx/upx/releases/tag/v5.0.2 2-1-2、将生成dist目录copy到根目录,此时双击dict目录中的main.exe便可以运行游戏程序 2-2、方式二: 2-2-1、pyinstaller --onefile --windowed main.py 修改生成的main.spec文件 a = Analysis( ... datas=[ ('graphics', 'graphics'), ('audio', 'audio'), ('fonts', 'fonts'), ('map', 'map') ], ... ) exe = EXE( ... upx=True, upx_exclude=[], upx_dir='=D:/upx/upx-5.0.2-win64', ... ) 2-2-2、pyinstaller main.spec 打包完成后将在dict目录中生成main.exe文件,直接双击main.exe文件便可以运行游戏程序

2025-10-17

Pygame坦克大战游戏8-增加游戏音效

当前程序包增加游戏音效 1、增加audio.py # 玩家发射炮弹的声音 self.bullet = pygame.mixer.Sound('../audio/bullet.mp3') # 加载音效-玩家攻击石头的声音 self.hit_stone = pygame.mixer.Sound('../audio/hit_stone.mp3') # 加载音效-玩家攻击坦克的声音 self.hit_tank = pygame.mixer.Sound('../audio/hit_tank.mp3') # 加载音效-玩家吃到获取生命的声音 self.get_live = pygame.mixer.Sound('../audio/get_live.mp3') # 加载音效-玩家吃到宝物的声音 self.get_treasure = pygame.mixer.Sound('../audio/get_treasure.mp3') # 加载音效-玩家吃到暂停的声音 self.get_pause = pygame.mixer.Sound('../audio/get_pause.mp3') # 玩家被打死的声音 self.player_dead = pygame.mixer.Sound('../audio/player_dead.mp3') # 敌人被打死的声音 self.enemy_dead = pygame.mixer.Sound('../audio/enemy_dead.mp3') # 加载音效-玩家移动的声音 self.move = pygame.mixer.Sound('../audio/move.wav') # 加载

2025-10-17

Pygame坦克大战游戏7-增加游戏开始时候的开屏动画,游戏通关逻辑(玩家打死所有敌人后,游戏自动进入下一关)以及游戏失败后的操作

当前程序包增加游戏开始时候的开屏动画,游戏通关逻辑(玩家打死所有敌人后,游戏自动进入下一关)以及游戏失败后的操作 1、增加游戏开屏动画类start_game.py 提供start(self, level)方法,执行游戏开屏操作,方法可复用(游戏进入下一关后,调用此方法可重复显示开屏效果) 开屏效果: 1-1、 开始的一秒内,全屏幕显示灰色,并且屏幕正中央显示游戏为第几关 1-2、 随后灰色屏幕从中间开屏,直至显示整个游戏画面 2、level.py, 2-1、增加方法enemy_is_all_die(self), 判断敌人是否已经全部被消灭 2-2、增加方法game_is_over(self),处理游戏失败后的逻辑(等待指定时间后,重新开始游戏)

2025-10-17

Pygame坦克大战游戏6-加游戏信息显示功能(包括关卡信息,用户生命信息,敌人待生成信息显示功能)以及玩家重生(玩家被敌人打死后,如果玩家生命数大于0)功能

当前程序包增加游戏信息显示功能(包括关卡信息,用户生命信息,敌人待生成信息显示功能)以及玩家重生(玩家被敌人打死后,如果玩家生命数大于0)功能 1、增加消息栏管理类msgbar.py 消息栏目展示的信息: 1-1、敌人未生成数量展示, 对应方法 draw_enemy_msg(self) 未生成的敌人数量超过10个或者等于0个, 使用【图标 数字】展示 未生成的敌人数量小于10个且不等0, 使用【图标,图标....】显示 1-2、玩家生命数量(玩家还剩多少条命)展示, 对应方法 draw_player(self) 采用【P1 数字】方式显示,其中数字表示玩家1还剩多少条命,可根据需求扩展玩家2 1-3、游戏关卡信息(当前属于第几关)展示, 对应方法 draw_game_level(self) 采用【旗子 数字】方式显示,其中数字表示当前是第几关 2、setting.py中配置消息显示的起始位置 # 消息bar的x轴起始位置 MSG_BAR_START_X = 1335 # 消息bar的y轴起始位置 MSG_BAR_START_Y = 60 游戏屏幕总的有24个格子,其中游戏界面占用21个格子, 剩余3个格子显示游戏信息 21 * 60 = 1260, 向右缩进75, 所以 MSG_BAR_START_X = 1260 + 75 = 1335 3、level.py中增加玩家重生方法reborn_player(self),即当玩家被敌人打死后,且玩家剩余生命数大于0,则调用此方法让玩家重生

2025-10-17

Pygame坦克大战游戏5-增加宝物功能,包括系统随机生成宝物, 玩家吃到宝物的效果, 玩家出生默认戴帽子(无敌)一段时间的效果

当前程序包增加宝物功能,包括系统随机生成宝物, 玩家吃到宝物的效果, 玩家出生默认戴帽子(无敌)一段时间的效果 1、在setting.py类中增加宝物类的配置信息 TREASURE = { 'bomb': {'score': 500}, # 炸弹: 敌人全死 'gun': {'score': 500}, # 枪: 玩家升级到level4 'hat': {'score': 500}, # 帽子: 玩家固定时间段进入无敌状态 'iron': {'score': 500}, # 铁锹: 玩家老家保护墙变为铁墙 'life': {'score': 500}, # 生命: 玩家获得一条生命 'pause': {'score': 500}, # 暂停: 所有敌人暂停指定时间 'star': {'score': 500} # 五星: 玩家等级升一级 } 2、增加宝物类treasure.py 提供随机生成宝物,以及玩家吃到宝物(玩家同宝物碰撞)后的处理逻辑 3、level.py类中,在初始化地图的时候 3-1、收集玩家老家的保护强的对象(用于切换玩家吃到铁锹时替换老家保护墙) 3-2、收集可以生成宝物的坐标信息(宝物不生成在障碍物里面(草地除外)) 4、player.py类中,增加wear_hat(self)方法,使玩家产生戴帽子效果,并且在一定时间内处于无敌状态

2025-10-17

Pygame坦克大战游戏4-增加玩家和敌人可以发射子弹,以及被子弹攻击后减少生命值和死亡的效果

当前程序包增加玩家和敌人可以发射子弹,以及被子弹攻击后减少生命值和死亡的效果 1、增加炮弹类missile.py missile.py类包括炮弹的移动, 炮弹碰撞障碍物,炮弹碰撞玩家,炮弹碰撞敌人,玩家发射的炮弹碰撞敌人发射的炮弹的逻辑等 2、增加动画效果类animation.py,处理炮弹命中目标的动画效果 3、由于需要计算炮弹的伤害以及玩家和敌人的血量的逻辑,所以需要扩展player.py和enemy.py类的status属性, 并且根据玩家和敌人的等级,将属性配置在setting.py中 3-1、玩家配置四个等级,每个等级对应玩家四个方向的四张图片(U,D,L,R), 图片位置在:/graphics/player/... player.py中增加update_status(self, level, direction, daddy)方法,用于初始化以及更新玩家状态 PLAYER_LEVEL = { 'level1': { 'move_speed': 4, # 移动速度 'attack_speed': 5, # 攻击速度 'attack_harm': 1, # 攻击伤害值 'hp': 1, # 总的血量 'attack_interval': 800 # 攻击间隔时间 }, 'level2': { 'move_speed': 6, # 移动速度 'attack_sp

2025-10-17

Pygame坦克大战游戏3-增加敌人坦克,并且实现敌人的自由移动,并增加出生动画

当前程序包增加敌人坦克,并且实现敌人的自由移动,并增加出生动画 1、增加敌人类enemy.py 2、由于玩家和敌人都是可移动的对象,它们具有相同的属性以及行为,所以将它们的公用属性和行为抽象成一个activity.py 3、玩家对象player.py以及敌人对象enemy.py都继承activity.py 4、在activity.py中增加玩家碰撞敌人,敌人碰撞玩家或敌人碰撞敌人的逻辑

2025-10-17

Pygame坦克大战游戏1-渲染一个游戏界面并实现玩家坦克自由移动

当前程序包实现坦克的移动以及移动超出边界的处理 玩家移动键盘设置为 W: 向上 S: 向下 A: 向左 D: 向右

2025-10-17

Pygame坦克大战游戏2-实现根据地图(csv)文件绘制游戏地图

当前程序包实现根据地图(csv)文件绘制游戏地图 1、新增障碍物类obstacle.py,对应地图文件(level1.csv)的数字 1,2,3,4,6,7 1=>土墙 2=>铁墙 3=>雪地 4=>河流 6=>老家 7=>边界 2、新增草地类grass.py,对应地图文件(level1.csv)的数字 5 添加草地类的原因是草地要在最后渲染,以是玩家同草地碰撞的时候,玩家杯草地隐藏 5=>草地 3、新增support.py, 用于解析地图文件以及按文件目录导入图片文件 4、在player.py类中增加玩家同障碍物的碰撞逻辑 collision(self, direction) 绘制游戏地图逻辑解析: 游戏屏幕宽1440px, 高度是960px 图片素材大小是60px * 60px, 所以游戏每个瓦片(TITLE_SIZE = 60) TITLE_SIZE将游戏屏幕切分为 宽格子数 = 1440 / 60 = 24 高格子数 = 960 / 60 = 16 地图文件(level.csv)中的每一个数字所占据的尺寸都是60 * 60 所以可以根据游戏障碍物所处的宽,高格子数 * 60来获取对应障碍物所处的坐标 如下地图信息,举例获取【2(铁墙)】: 7,0,0,0,0,0 7,0,1,2,0,0 【2(铁墙)】的宽度格子数为3, 高度格子数量为1 那么【2(铁墙)】的左上角的坐标为(3 * 60, 1 * 60) = (180, 60)

2025-10-17

Springboot整合uflo2

使用springboot+mysql+jfinal+iview+jquery实现了一个简单的请假流程demo

2025-04-30

实现Springboot整合UReport2

实现Springboot整合UReport2(使用springboot+mysql+jfinal+iview+jquery实现了一个简单的报表demo 原文链接:https://blog.youkuaiyun.com/teamo_m/article/details/126423770 部署指导: 1、把jar打到maven本地仓库,自行百度mvn install命令将jar包打入到本地仓库中,先打ureport2-core-2.3.0-upro.jar,后打ureport2-console-2.3.0-upro.jar 因为ureport2-console.jar是ureport2的web包,它的代码需要引入核心包ureport2-core.jar,所以使用你的方式肯定缺少ureport2-core.jar里的代码, 你只需要将jar包正确导入maven本地仓库,源码包不需要修改pom.xml文件 2、打包注意版本号必须对应上,ureport2-core-2.3.0-upro.jar按照2.3.0-pro进行打包 -Dversion=2.3.0-pro

2023-08-16

httpclient(springboot)demo

基于springboot+httpClient无缝整合在一起的demo例子(资源分享)!

2020-05-06

springboot+mybatis的读写分离

基于springboot+mybatis+druid连接池的读写分离配置demo!!!!!!!!!!

2020-05-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除