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

文章目录

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

奇美拉项目

由于项目工程较大,并且我打算把我的思考过程和实现过程中踩过的坑都分享一下,因此会分3-4篇博文详细讲解本项目。本文首先介绍下游戏规则并给出奇美拉档案。
后续见:
游戏开发实战(二):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所—源码级解析该小游戏背后的算法与设计模式【纯原创】-CSDN博客

游戏开发实战(三):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所—源码级解析该小游戏背后的算法与设计模式【纯原创】-CSDN博客
项目githu地址 https://github.com/Hanachirusat/Chimeras

游戏规则

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

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

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

工作: 奇美拉选定一个任务,每次工作使得该任务的生命值降低(降低程度等于奇美拉的攻击力),并且该奇美拉的生命也会降低(降低程度等于任务的攻击力)。当任务的攻击力为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.mzph.cn/pingmian/81718.shtml

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

相关文章

说一下响应状态码有哪些?

HTTP响应状态码分类(RFC 7231标准) 1. 1xx(信息类) 临时响应,表示请求已被接收,需要继续处理 100 Continue:客户端应继续发送请求体 101 Switching Protocols:服务器同意升级协议(如WebSocket) 102 Processing(WebDAV):服务器正在处理但未完成 2. 2xx(成功类)…

Linux多进程 写时拷贝 物理地址和逻辑地址

如果不采用写时拷贝技术 直接fork子进程 会发生什么&#xff1f; 如上图所示 橙色为父进程所占内存空间 绿色为子进程所占内存空间。 如果子进程只是需要做出一点点和父进程不一样的 其余和父进程均为相同 第一 就会出现复制开销比较大&#xff1b;第二占用内存空间 所以 …

【TTS回顾】Bert-VITS2深度解析:融合BERT的多语言语音合成模型

一、基本介绍 Bert-VITS2是基于VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的改进版本,通过整合BERT语义编码能力,显著提升了语音合成的自然度和表现力。项目地址:https://github.com/fishaudio/Bert-VITS2 语种自然度相似度流…

win11下docker 的使用方案

Windows 11 Docker 使用方式对比 特性Docker Desktop (使用 WSL 2 后端)直接在 WSL 2 中安装 Docker Engine安装与易用性极简&#xff0c;一键安装&#xff0c;提供直观的 GUI 界面 管理容器、镜像、卷等相对复杂&#xff0c;需手动在 Linux 环境中安装 Docker Daemon 并配置G…

配合本专栏前端文章对应的后端文章——从模拟到展示:一步步搭建传感器数据交互系统

对应文章&#xff1a;进一步完善前端框架搭建及vue-konva依赖的使用&#xff08;Vscode&#xff09;-CSDN博客 目录 一、后端开发 1.模拟传感器数据 2.前端页面呈现数据后端互通 2.1更新模拟传感器数据程序&#xff08;多次请求&#xff09; 2.2&#x1f9e9; 功能目标 …

牛客网NC209794:使徒袭来

牛客网NC209794:使徒袭来 题目背景 问题分析 数学建模 设三位驾驶员的战斗力分别为 a, b, c已知条件&#xff1a;a b c n (n为输入的正整数)目标&#xff1a;求 a b c 的最小值 解题思路 根据算术-几何平均值不等式(AM-GM不等式)&#xff0c;对于任意正实数a, b, c&a…

动态规划之爬楼梯模型

文章目录 爬楼梯模型LeetCode 746. 使用最小花费爬楼梯思路Golang 代码 LeetCode 377. 组合总和 Ⅳ思路Golang 代码 LeetCode 2466. 统计构造好字符串的方案数思路Golang 代码 LeetCode 2266. 统计打字方案数思路Golang 代码 爬楼梯模型 爬楼梯模型是动态规划当中的一个经典模型…

【每天一个知识点】湖仓一体(Data Lakehouse)

“湖仓一体”&#xff08;Data Lakehouse&#xff09;是一种融合了数据湖&#xff08;Data Lake&#xff09;与数据仓库&#xff08;Data Warehouse&#xff09;优势的新型数据架构。它既继承了数据湖对多类型数据的灵活存储能力&#xff0c;也具备数据仓库对结构化数据的高效查…

Linux | mdadm 创建软 RAID

注&#xff1a;本文为 “Linux mdadm RAID” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Linux 下用 mdadm 创建软 RAID 以及避坑 喵ฅ・&#xfecc;・ฅ Oct 31, 2023 前言 linux 下组软 raid 用 mdadm 命令&#xff0c;multi…

Unity自定义shader打包SpriteAtlas图集问题

Unity打包图集还是有一些坑的&#xff0c;至于图集SpriteAtlas是什么请参考我之前写的文章&#xff1a;【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程_spriteatlas 使用-CSDN博客 问题&#xff1a; 今天碰到的问题是&#xff0c;shader绘制的时候&#xff0c;因…

如何用 OceanBase 的 LOAD DATA 旁路导入进行大表迁移

前言 在日常工作中&#xff0c;我们时常会遇到需要将某个大数据量的单表进行迁移的情况。在MySQL中&#xff0c;针对这样的大表&#xff0c;我们通常会选择先将原表导出为csv格式&#xff0c;然后利用LOAD DATA语法来导入csv文件&#xff0c;这种方法相较于mysqldump在效率上有…

VR 互动实训的显著优势​

&#xff08;一&#xff09;沉浸式学习&#xff0c;提升培训效果​ 在 VR 互动实训中&#xff0c;员工不再是被动的知识接受者&#xff0c;而是主动的参与者。以销售培训为例&#xff0c;员工戴上 VR 设备&#xff0c;就能置身于逼真的销售场景中&#xff0c;与虚拟客户进行面对…

OpenCV 第6课 图像处理之几何变换(重映射)

1. 概述 简单来说,重映射就是把一副图像内的像素点按照规则映射到到另外一幅图像内的对应位置上去,形成一张新的图像。 因为原图像与目标图像的像素坐标不是一一对应的。一般情况下,我们通过重映射来表达每个像素的位置(x,y),像这样: g(x,y)=f(h(x,y)) 在这里g()是目标图…

Java虚拟机 - 程序计数器和虚拟机栈

运行时数据结构 Java运行时数据区程序计数器为什么需要程序计数器执行流程虚拟机栈虚拟机栈作用虚拟机栈核心结构运行机制 Java运行时数据区 首先介绍Java运行时数据之前&#xff0c;我们要了解&#xff0c;对于计算机来说&#xff0c;内存是非常重要的资源&#xff0c;因为内…

MySQL数据库——支持远程IP访问的设置方法总结

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实…

CSS- 4.6 radiu、shadow、animation动画

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff01; 点…

排序算法之基础排序:冒泡,选择,插入排序详解

排序算法之基础排序&#xff1a;冒泡、选择、插入排序详解 前言一、冒泡排序&#xff08;Bubble Sort&#xff09;1.1 算法原理1.2 代码实现&#xff08;Python&#xff09;1.3 性能分析 二、选择排序&#xff08;Selection Sort&#xff09;2.1 算法原理2.2 代码实现&#xff…

第十节第一部分:常见的API:Math、System、Runtime

Math类介绍及常用方法&#xff08;了解知道即可&#xff09; System类介绍及常用方法&#xff08;了解知道即可&#xff09; Runtime类介绍及常用方法&#xff08;了解知道即可&#xff09; 代码&#xff1a; 代码一&#xff1a;Math类 package com.itheima.d14_math;public …

智能体间协作的“巴别塔困境“如何破解?解读Agent通信4大协议:MCP/ACP/A2A/ANP

AI 智能体的兴起触发了AI应用协作的新领域。这些智能体不再局限于被动的聊天机器人或独立的系统&#xff0c;它们现在被设计用于推理、计划和协作ーー跨任务、跨域甚至跨组织。但随着这一愿景成为现实&#xff0c;一个挑战很快浮出水面&#xff1a; 智能体如何以一种安全、可伸…

项目进度延误,如何按时交付?

项目进度延误可以通过加强计划管理、优化资源分配、强化团队沟通、设置关键里程碑和风险管理机制等方式来实现按时交付。加强计划管理、优化资源分配、强化团队沟通、设置关键里程碑、风险管理机制。其中&#xff0c;加强计划管理尤为关键&#xff0c;因为明确而详细的计划能提…