游戏开发实战(一):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】

news2025/5/20 18:08:54

文章目录

  • 奇美拉项目
    • 游戏规则
    • 奇美拉(Chimeras)档案
      • 领队
      • 成员
  • 结果展示:

奇美拉项目

由于项目工程较大,并且我打算把我的思考过程和实现过程中踩过的坑都分享一下,因此会分3-4篇博文详细讲解本项目。本文首先介绍下游戏规则并给出奇美拉档案。

游戏规则

对局开始前,玩家可以选择多个奇美拉去完成任务队列里的任务。游戏开始后,在每个回合只有队头奇美拉 可以选定任务队列里的可选定任务开始工作。领队奇美拉位于后台,不参与工作,会根据自己的能力给其他奇美拉添加增益效果。当任务队列中的所有任务均被完成时,游戏结束即,玩家取得胜利;当所有奇美拉(领队奇美拉除外)均离场时,游戏失败。

任务队列: 任务队列是一系列待完成的任务的有序组合。每个任务都有一定的生命值和攻击力。

奇美拉: 每个奇美拉都有一定的生命值和攻击力,部分奇美拉有特殊的被动技能。

工作: 奇美拉选定一个任务,每次工作使得该任务的生命值降低(降低程度等于奇美拉的攻击力),并且该奇美拉的生命也会降低(降低程度等于任务的攻击力)。当任务的攻击力为0时,任务被完成,当奇美拉的生命值为0时,奇美拉会离场。

队头奇美拉: 玩家可以选择多个奇美拉组成一个有序的奇美拉队列,当奇美拉离场时,按照顺序使得下一个奇美拉成为队头奇美拉。

可选定任务: 在任务队列中,只有队头任务可以被选中,当队头任务被完成后,按照顺序使得下一个任务成为队头任务。

奇美拉(Chimeras)档案

首先我们先按照奇美拉类型进行分类,良好的分类会极大方便程序的设计和编码。

领队

职业经理【自我驱动】: 登场后:使全体奇美拉效率+3体力+3

严酷恶魔【不准停!】: 奇美拉完成工作后,使其效率+5

职场清流【抚慰之心】: 登场后:全体奇美拉效率+2。奇美拉追加工作后:使其效率+1

成员

我们将奇美拉分为4类被,普通奇美拉,回合/登场技的奇美拉,自身触发被动的奇美拉,队友触发被动的奇美拉【atk,hp】

1 普通类别

摸鱼仔【3,2】 :平平无奇

负能量【7,3】: 平平无奇

真老实【1,16】: 平平无奇

小坏蛋【3,5】: 平平无奇

压力怪【5,3】:平平无奇

2 回合/登场技的奇美拉

治愈师【温暖,2,5】: 每回合开始,使前一格同伴体力+1

小团体【排外,3,3】: 每回合开始时,使前两格同伴效率+1,其余同伴体力-1

画饼王【话术,2,7】: 登场后所有同伴效率+8 ,若自身在场,每回合使所有同伴效率-2

平凡王【联合,7,7】: 登场后,获得场上所有无特性同伴100%的效率和体力(单次上限均为25)

3 自身触发被动的奇美拉

坏脾气【发作,2,9】: 自身工作时:使后一格同伴体力-1

抗压包【熟练,2,5】: 自身体力降低时使前后一格同伴效率+1

请假狂【装病,2,7】:自身体力降低后,与后一格同伴交换位置,并使自身效率+2

请假王【开摆,6,3】自身体力降低后,与后一格同伴交换位置,并使自身体力+3

内卷王【激励,3,8】:自身完成工作时:获得效率+2体力+3 【hp<0也会生效,在每回合结束后才让hp<0的奇美拉退场。】

受气包【道歉,2,5】: 自身体力降低时,使全局同伴效率+1

跑路侠【怂恿,1,1】自身累倒时,和后一格同伴一起逃离工作,并使其他同伴体力+8

4 队友触发被动的奇美拉

小夸夸【鼓励,3,3】:同伴工作或追加工作时,若同伴效率》5使其效率+2

看乐子【围观,3,3】同伴累到后,自身效率+2体力+2

背锅侠【接锅,3 ,6:同伴累倒时,使该同伴体力+10,自身逃离工作

抢功劳【独占,15,2: 同伴工作时:若自身效率》=剩余工作进度,则进行追加工作完成该任务

急先锋【带头,2,5】:同伴工作或追加工作时,自身与前一格同伴交换位置,并且体力+6

说怪话【暗讽,14,1】:同伴完成工作时,使该同伴效率+4 并发表自己的意见

帮倒忙【捣乱,-1,5】:同伴工作时,自身进行一次追加工作

工作狂【争先 6,10】:同伴工作或追加工作时,进行一次等于自身50%效率的追加工作

结果展示:

本人对于测试方面并不太精通,仅对单个奇美拉进行了测试,以及对游戏中较为复炸的追击队做了测试。
待我讲解完毕后会在GitHub上开源,欢迎大家在GiuHub上讨论~

队列如下:有条件的可以登陆游戏验证一下哦~
在这里插入图片描述
程序结果如下:
注意,每回合内不同奇美拉的行动顺序可能和游戏里并不一致,但每回合的结果和游戏里一致。在后续源码级的详细讲解中我会详细解释为什么顺序不一致以及如何不影响每回合的结果的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

02- 浏览器运行原理

文章目录 1. 网页的解析过程浏览器内核 2. 浏览器渲染流程2.1 解析html2.2 生成css规则2.3 构建render tree2.4 布局(Layout)2.5 绘制(Paint) 3. 回流和重绘3.1 回流reflow&#xff08;1&#xff09;理解&#xff1a;&#xff08;2&#xff09;出现情况 3.2 重绘repaint&#x…

移除链表元素数据结构oj题(力扣题206)

目录 题目描述&#xff1a; 题目解读&#xff08;分析&#xff09; 解决代码 题目描述&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 题目解读&#xff08;分析&#…

OpenTelemetry 从入门到精通

快速入门 OpenTelemetry 是一个可观测性框架和工具包&#xff0c; 旨在创建和管理遥测数据&#xff0c;如链路、 指标和日志。 重要的是&#xff0c;OpenTelemetry 是供应商和工具无关的&#xff0c;这意味着它可以与各种可观测性后端一起使用&#xff0c; 包括 Jaeger 和 Pro…

【免杀】C2免杀技术(六)进程镂空(傀儡进程)

一、技术定位与核心思想 进程镂空&#xff08;Process Hollowing&#xff09;属于 MITRE ATT&CK 中 T1055.012 子技术&#xff1a;先创建一个合法进程并挂起&#xff0c;随后把其主模块从内存“掏空”并替换为恶意映像&#xff0c;最后恢复线程执行&#xff0c;从而让…

Eclipse Java 开发调优:如何让 Eclipse 运行更快?

Eclipse Java 开发调优&#xff1a;如何让 Eclipse 运行更快&#xff1f; 在 Java 开发领域&#xff0c;Eclipse 是一款被广泛使用的集成开发环境&#xff08;IDE&#xff09;。然而&#xff0c;随着项目的日益庞大和复杂&#xff0c;Eclipse 的运行速度可能会逐渐变慢&#x…

彻底理解事件循环(Event Loop):从单线程到异步世界的桥梁

关于事件循环被问了很多次&#xff0c;也遇到过很多次&#xff0c;一直没有系统整理&#xff0c;网上搜的&#xff0c;基本明白但总感觉不够透彻&#xff0c;最后&#xff0c;自己动手&#xff0c;丰衣足食&#xff0c;哈哈 一、为什么需要事件循环&#xff1f;—— 单线程的困…

Linux(2)——shell原理及Linux中的权限

目录 一、shell的运行原理 二、Linux中权限的问题 1.权限的概念 2.如何进行用户的切换 1&#xff09;从普通用户切到超级用户 2&#xff09;从root用户切到普通用户 3.如何实现提权操作 4.如何将普通用户添加到信用列表&#xff08;sudoers&#xff09; ​编辑5.Lin…

如何在线免费压缩PDF文档?

PDF文件太大&#xff0c;通常是因为内部嵌入字体和图片。怎么才能将文件大小减减肥呢&#xff0c;主要有降低图片清晰度和去除相关字体两个方向来实现文档效果。接下来介绍三个免费压缩PDF实用工具。 &#xff08;一&#xff09;iLoveOFD在线转换工具 iLoveOFD在线转换工具&a…

汽车装配又又又升级,ethernetip转profinet进阶跃迁指南

1. 场景描述&#xff1a;汽车装配线中&#xff0c;使用EtherNet/IP协议的机器人与使用PROFINET协议的PLC进行数据交互。 2. 连接设备&#xff1a;EtherNet/IP机器人控制器&#xff08;如ABB、FANUC&#xff09;与PROFINET PLC&#xff08;如西门子S7-1500&#xff09;。 3. 连…

css:无限滚动波浪线

以上是需要实现的效果&#xff0c;一条无限滚动波浪线&#xff0c;可以用来做区块的分割线。 要形成上下交替的圆形&#xff0c;思路是给div加圆角边框&#xff0c;第一个只有上边框&#xff0c;第二个只有下边框。 循环了100个div&#xff0c;这个数量根据自己容器宽度调整&…

w~自动驾驶~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13269720 #FastOcc 推理更快、部署友好Occ算法来啦&#xff01; 在自动驾驶系统当中&#xff0c;感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素&…

山东大学计算机图形学期末复习整理5——CG10上

CG10上 Frenet-Serret框架 空间中一条曲线可以写成参数形式&#xff1a; C ( u ) ( x ( u ) , y ( u ) , z ( u ) ) \mathbf{C}(u) (x(u), y(u), z(u)) C(u)(x(u),y(u),z(u)) 这表示&#xff1a;当参数 u u u 变化时&#xff0c;曲线在三维空间中移动&#xff0c;生成一条轨…

STM32移植LVGL8.3 (保姆级图文教程)

目录 前言设备清单2.8寸TFT-LCD屏原理与应用1️⃣基本参数2️⃣引脚说明3️⃣程序移植4️⃣硬件接线 LVGL8.3 移植流程1️⃣硬件及平台要求2️⃣版本说明3️⃣源码下载4️⃣源码移植 工程配置修改配置文件1️⃣lvgl_config.h2️⃣适配屏幕驱动3️⃣配置输入设备(触摸功能) 提供…

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系1.Default Pawn与Camera的关系1.1. Default Pawn 是什么&#xff1f;1.2. Default Pawn 的主要组件1.3. Default…

C++多态的详细讲解

【本节目标】 1. 多态的概念 2. 多态的定义及实现 3. 抽象类 4. 多态的原理 5. 单继承和多继承关系中的虚函数表 前言 需要声明的&#xff0c;本博客中的代码及解释都是在 vs2013 下的 x86 程序中&#xff0c;涉及的指针都是 4bytes 。 如果要其他平台下&#xff0c;部…

vue项目启动报错

vue项目启动报错 一、问题二、解决 一、问题 从vue2更换到vue3之后&#xff0c;需要将node进行版本升级&#xff0c;之后启动项目出现了下面的问题。 Uncaught Error: A route named “PageNotFound” has been added as a child of a route with the same name. Route names …

免费私有化部署! PawSQL社区版,超越EverSQL的企业级SQL优化工具面向个人开发者开放使用了

1. 概览 1.1 快速了解 PawSQL PawSQL是专注于数据库性能优化的企业级工具&#xff0c;解决方案覆盖SQL开发、测试、运维的整个流程&#xff0c;提供智能SQL审核、查询重写优化及自动化巡检功能&#xff0c;支持MySQL、PostgreSQL、Oracle、SQL Server等主流数据库及达梦、金仓…

SecureCRT 使用指南:安装、设置与高效操作

目录 一、SecureCRT 简介 1.1 什么是 SecureCRT&#xff1f; 1.2 核心功能亮点 1.3 软件特点 二、SecureCRT 安装与激活 2.1 安装步骤&#xff08;Windows 系统&#xff09; 2.2 激活与破解&#xff08;仅供学习参考&#xff09; 三、基础配置与优化 3.1 界面与编码设…

Tomcat多应用部署与静态资源路径问题全解指南

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

【微信小程序 + 高德地图API 】键入关键字搜索地址,获取经纬度等

前言 又到熟悉的前言&#xff0c;接到个需求&#xff0c;要引入高德地图api&#xff0c;我就记录一下&#xff0c;要是有帮助记得点赞、收藏、关注&#x1f601;。 后续有时间会慢慢完善一些文章&#xff1a;&#xff08;画饼时间&#xff09; map组件自定义气泡、mark标记点…