游戲開發實戰(一):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.pswp.cn/pingmian/81718.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81718.shtml
英文地址,請注明出處:http://en.pswp.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;因為明確而詳細的計劃能提…