C++——清明

?

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>
#include <ctime>using namespace std;class Weapon; // 前置聲明class Hero{
private:int hp;int atk;int def;int spd;string job;  // 新增職業屬性public:Hero(int h=0, int a=0, int d=0, int s=0, string j="Warrior"): hp(h), atk(a), def(d), spd(s), job(j){}void setAtk(int a) { atk = a; }void setDef(int d) { def = d; }void setSpd(int s) { spd = s; }void setHp(int h) { hp = h; }void setJob(string j) { job = j; }int getAtk() { return atk; }int getDef() { return def; }int getSpd() { return spd; }int getHp() { return hp; }string getJob() { return job; }void equipWeapon(Weapon* w);
};class Weapon{
private:int atk;public:Weapon(int atk = 1) : atk(atk) {}void setAtk(int a) { atk = a; }int getAtk() { return atk; }// 根據武器類型的不同,英雄獲得不同的屬性virtual void getAttr(Hero& hero) {int new_atk = hero.getAtk() + atk;hero.setAtk(new_atk);}virtual void purl_virtual_func() = 0;virtual string getType() = 0;  // 新增獲取武器類型
};class Sword : public Weapon {
private:int hp;public:Sword(int atk = 1, int hp = 1): Weapon(atk), hp(hp) {}void setHp(int h) { hp = h; }int getHp() { return hp; }virtual void getAttr(Hero& hero) {Weapon::getAttr(hero);int new_hp = hero.getHp() + hp;hero.setHp(new_hp);}void purl_virtual_func() {}string getType() override {return "Sword";}
};class Blade : public Weapon {
private:int spd;public:Blade(int atk = 1, int spd = 1): Weapon(atk), spd(spd) {}void setSpd(int s) { spd = s; }int getSpd() { return spd; }virtual void getAttr(Hero& hero) {Weapon::getAttr(hero);int new_spd = hero.getSpd() + spd;hero.setSpd(new_spd);}void purl_virtual_func() {}string getType() override {return "Blade";}
};class Monster {
private:int hp;int atk;public:Monster(int h = 50, int a = 10) : hp(h), atk(a) {}int getHp() { return hp; }int getAtk() { return atk; }// 怪物死亡時掉落武器Weapon* die(Hero& hero) {srand(time(0));  // 初始化隨機種子string job = hero.getJob();// 根據英雄的職業掉落不同的武器if (job == "Warrior") {return new Sword(10, 20);  // 戰士掉落劍,增加攻擊力和生命值} else if (job == "Rogue") {return new Blade(8, 15);  // 盜賊掉落短劍,增加攻擊力和速度} else {// 默認掉落短劍return new Blade(5, 10);  // 其他職業掉落短劍}}
};void Hero::equipWeapon(Weapon* w) {w->getAttr(*this);
}int main(int argc, const char** argv) {Hero hero(100, 15, 10, 5, "Warrior");  // 創建一個戰士Monster monster(50, 10);  // 創建一個怪物cout << "Hero HP: " << hero.getHp() << " Attack: " << hero.getAtk() << endl;// 英雄擊敗怪物,掉落武器Weapon* droppedWeapon = monster.die(hero);// 英雄裝備掉落的武器hero.equipWeapon(droppedWeapon);cout << "After defeating the monster and equipping dropped weapon:" << endl;cout << "Hero HP: " << hero.getHp() << " Attack: " << hero.getAtk() << endl;delete droppedWeapon;  // 清理掉落的武器return 0;
}

#include <iostream>
using namespace std;template <typename T>
class list {
public:struct Node {T val;Node* next;Node* prev;Node(const T& value) : val(value), next(nullptr), prev(nullptr) {}};list() : head(nullptr), tail(nullptr) {}~list() {clear();}void push_back(const T& value) {Node* newNode = new Node(value);if (!tail) {head = tail = newNode;  // 如果鏈表為空,新節點既是頭節點又是尾節點} else {tail->next = newNode;   // 將當前尾節點的 next 指向新節點newNode->prev = tail;   // 新節點的 prev 指向當前尾節點tail = newNode;         // 更新尾節點為新節點}}friend ostream& operator<<(ostream& os, const list<T>& lst) {Node* current = lst.head;while (current) {os << current->val << " ";current = current->next;}return os;}T& operator[](size_t index) {Node* current = head;size_t count = 0;while (current && count < index) {current = current->next;count++;}if (!current) {throw out_of_range("Index out of range");}return current->val;}void clear() {Node* current = head;while (current) {Node* nextNode = current->next;delete current;  // 刪除當前節點current = nextNode;}head = tail = nullptr;  // 清空頭尾指針}
private:Node* head;  // 記錄鏈表頭節點Node* tail;  // 記錄鏈表尾節點
};
int main() {list<int> myList;myList.push_back(10);myList.push_back(20);myList.push_back(30);cout << "List: " << myList << endl;try {cout << "Element at index 1: " << myList[1] << endl;cout << "Element at index 5: " << myList[5] << endl;  // 會拋出異常} catch (const out_of_range& e) {cout << e.what() << endl;}return 0;
}

C語言

?C++

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75010.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

es --- 集群數據遷移

目錄 1、需求2、工具elasticdump2.1 mac安裝問題解決 2.2 elasticdump文檔 3、遷移 1、需求 遷移部分新集群沒有的索引和數據 2、工具elasticdump Elasticdump 的工作原理是將輸入發送到輸出 。兩者都可以是 elasticsearch URL 或 File 2.1 mac安裝 前置&#xff1a;已經安裝…

鴻蒙開發_ARKTS快速入門_語法說明_組件聲明_組件手冊查看---純血鴻蒙HarmonyOS5.0工作筆記010

然后我們來看如何使用組件 可以看到組件的組成 可以看到我們使用的組件 然后看一下組件的語法.組件中可以使用子組件. 然后組件中可以有參數,來修改組件的樣式等 可以看到{},這種方式可以設置組件參數,當然在下面. 的方式也可以的 然后再來

【GEE學習筆記】報錯解決:Sentinel-2 數據集分為 L1C(大氣頂層)和 L2A(地表反射率),如何選擇波段進行去云處理?

【GEE學習筆記】報錯解決&#xff1a;Sentinel-2 數據集分為 L1C&#xff08;大氣頂層&#xff09;和 L2A&#xff08;地表反射率&#xff09;&#xff0c;如何選擇波段進行去云處理&#xff1f; 【GEE學習筆記】報錯解決&#xff1a;Sentinel-2 數據集分為 L1C&#xff08;大…

OpenVLA-OFT——微調VLA時加快推理的三大關鍵設計:支持動作分塊的并行解碼、連續動作表示以及L1回歸(含輸入靈活化及對指令遵循的加強)

前言 25年3.26日&#xff0c;這是一個值得紀念的日子&#xff0c;這一天&#xff0c;我司「七月在線」的定位正式升級為了&#xff1a;具身智能的場景落地與定制開發商 &#xff0c;后續則從定制開發 逐步過渡到 標準產品化 比如25年q2起&#xff0c;在定制開發之外&#xff0…

IDEA 使用Maven打包時內存溢出

IDEA 使用Maven打包時內存溢出 解決辦法&#xff1a; File -> settings -> Build,Excetion,Deployment-> Compiler 中添加配置“-Djps.track.ap.dependenciesfalse” 如圖&#xff1a;

隨機產生4位隨機碼(java)

Random類&#xff1a; 用于生成隨機數 import java.util.Random; 導入必要的類 generateVerificationCode()方法&#xff1a; 這是一個靜態方法&#xff0c;可以直接通過類名調用 返回一個6位數字的字符串&#xff0c;首位不為0 生成首位數字&#xff1a; random.nextInt…

C#調用C++動態庫時出現`System.DllNotFoundException`錯誤的解決思路

文章目錄 1. DLL文件路徑問題2. 依賴的運行時庫缺失3. 平臺不匹配&#xff08;x86/x64&#xff09;4. 導出函數名稱不匹配5. DLL文件損壞或權限問題6. 運行時庫沖突&#xff08;MT/MD不匹配&#xff09;7. 使用DLLImport時的常見錯誤總結步驟 在C#中調用C動態庫時出現System.Dl…

免費Deepseek-v3接口實現Browser-Use Web UI:瀏覽器自動化本地模擬抓取數據實錄

源碼 https://github.com/browser-use/web-ui 我們按照官方教程&#xff0c;修訂幾個環節&#xff0c;更快地部署 步驟 1&#xff1a;克隆存儲庫 git clone https://github.com/browser-use/web-ui.git cd web-ui Step 2: Set Up Python Environment 第 2 步&#xff1a;設置…

ES 參數調優

1、refresh_interval 控制索引刷新的時間間隔。增大這個值可以減少I/O操作&#xff0c;從而提升寫入性能&#xff0c;但會延遲新文檔的可見性 查看 GET /content_erp_nlp_help_202503191453/_settings?include_defaultstrue 動態修改&#xff1a;refresh_interval 是一個動態…

【Easylive】視頻刪除方法詳解:重點分析異步線程池使用

【Easylive】項目常見問題解答&#xff08;自用&持續更新中…&#xff09; 匯總版 方法整體功能 這個deleteVideo方法是一個綜合性的視頻刪除操作&#xff0c;主要完成以下功能&#xff1a; 權限驗證&#xff1a;檢查視頻是否存在及用戶是否有權限刪除核心數據刪除&…

《比特信使的七重試煉:從數據丟失到CA認證的守護史詩》

點擊下面圖片帶您領略全新的嵌入式學習路線 &#x1f525;爆款熱榜 88萬閱讀 1.6萬收藏 第一章&#xff1a;初現危機——數據丟失的陰云 比特城的清晨總是被數據流的光芒點亮&#xff0c;但這一天&#xff0c;工程師艾琳的實驗室卻籠罩在陰霾中。她剛剛嘗試通過古老的“疾風…

如何更好的理解 beforeEach 全局前置守衛,在處理路由跳轉前觸發,怎么實現常用的全局權限校驗、登錄狀態檢查的呢?

以下將深入講解 Vue Router 的全局前置守衛 beforeEach 在權限系統中的實現原理和實戰應用&#xff0c;結合企業級項目代碼進行拆解&#xff08;基于 Vue 3 TypeScript Pinia&#xff09;。 一、前置守衛核心機制 1.1 執行時機與特性 全局前置守衛在路由跳轉前觸發&#xf…

VMware上的windows虛擬機安裝使用Docker方法

因為在實體機上使用Docker會導致VMware無法啟動虛擬機&#xff0c;所以嘗試了在虛擬機中安裝Docker. 1. 創建Windows虛擬機. windows至少是Win10 1.9***或者Win 11. 這是Docker Desktop要求的。 2. 虛擬機CPU要開啟虛擬化功能。 虛擬機的CPU開啟虛擬化 虛擬機的memory要不小…

項目中集成ECharts圖表(通過定時任務SpringTask統計每天的訂單金額)

項目應用Echarts ①、前端終端安裝Echarts npm install echarts --save ②、src/views創建order目錄&#xff0c;在order目錄下創建orderStatistics.vue ③、src/router/modules目錄下創建order.js&#xff0c;配置路由 const layout ()>import(/layout/index.vue) …

2022第十三屆藍橋杯大賽軟件賽省賽C/C++ 大學 B 組(題解解析)

記錄刷題的過程、感悟、題解。 希望能幫到&#xff0c;那些與我一同前行的&#xff0c;來自遠方的朋友&#x1f609; 大綱&#xff1a; 1、九進制轉十進制-&#xff08;解析&#xff09;-簡單的進制轉化問題&#x1f604; 2、順子日期-&#xff08;解析&#xff09;-考察日期 3…

python應用之使用pdfplumber 解析pdf文件內容

目錄標題 一. 通過 pdfplumber.open() 解析復雜PDF&#xff1a;1-2. 報錯&#xff1a;V2 &#xff1a; 1-3. v3 使用tk 庫&#xff0c;彈框選擇文件運行環境準備完整代碼保存運行測試步驟方式二&#xff1a;命令行方式&#xff08;適用于自動化&#xff09; 測試用例示例常見問…

力扣熱題100刷題day61|234.回文鏈表(兩種方法)

一、回文鏈表 234.回文鏈表 兩種解法 解法1&#xff1a;時間復雜度O(n) 空間復雜度O(n) 遍歷鏈表&#xff0c;計算鏈表長度&#xff0c;創建同樣長度大小的數組&#xff0c;用數組存儲鏈表中所有元素&#xff0c;之后雙指針遍歷鏈表&#xff0c;一個從頭開始&#xff0c;一…

vue3+element-plus動態與靜態表格數據渲染

一、表格組件&#xff1a; <template> <el-table ref"myTable" :data"tableData" :header-cell-style"headerCellStyle" header-row-class-name"my-table-header" cell-class-name"my-td-cell" :row-style"r…

Kafka 中的生產者分區策略

Kafka 中的 生產者分區策略 是決定消息如何分配到不同分區的機制。這個策略對 Kafka 的性能、負載均衡、消息順序性等有重要影響。了解它對于高效地使用 Kafka 進行消息生產和消費至關重要。 讓我們一起來看 Kafka 中 生產者的分區策略&#xff0c;它如何工作&#xff0c;以及…

《從零搭建Vue3項目實戰》(AI輔助搭建Vue3+ElemntPlus后臺管理項目)零基礎入門系列第二篇:項目創建和初始化

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 《從零搭建Vue3項目實戰》&#xff08;AI輔助…