当前位置: 首页 > news >正文

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

文章目录

  • 奇美拉项目
    • 游戏规则
    • 奇美拉(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上讨论~

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

相关文章:

  • 云计算简介:从“水电”到“数字引擎”的技术革命
  • 使用docker——10分钟内 完成一个高可用的 MongoDB 副本集部署
  • 【HTML】【面试提问】HTML面试提问总结
  • UE5在C++项目中判断不同平台
  • Docker项目部署深度解析:从基础命令到复杂项目部署
  • HarmonyOS实战:自定义时间选择器
  • 基于正点原子阿波罗F429开发板的LWIP应用(1)——网络ping通
  • YOLOv8 在单片机上的几种部署方案
  • 【日常笔记】wps如何将值转换成东西南北等风向汉字
  • Spring Boot与Kafka集成实践:从入门到实战
  • 使用 docker-volume-backup 备份 Docker 卷
  • Unity3D HUD UI性能优化方案
  • 深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践
  • 一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
  • B树与B+树全面解析
  • iOS热更新技术要点与风险分析
  • 用 SamGeo 库实现遥感影像自动分割:从本地 TIFF 到 SHP/GeoJSON 的一站式处理(Python 脚本实现)
  • Java POJO接收前端null值设置
  • JESD204 ip核使用与例程分析(二)
  • Spring Boot 与 RabbitMQ 的深度集成实践(三)
  • 中国首次当选联合国教科文组织1970年《公约》缔约国大会主席国
  • 六旬老人举报违建后遭蒙面袭击续:海南陵水县住建局已暂停俩房产项目网签
  • 海南省检察院专委李思阳被带走,去年曾遭人举报违规插手案件
  • 杨国荣︱以经验说事:思想史研究中一种需要反思的现象
  • 租车订单时隔7年从花呗免密扣费?“GoFun出行”引质疑
  • 泽连斯基:乌代表团已启程,谈判可能于今晚或明天举行