C++(11)--編程實踐1-經典養成類游戲簡單實踐

經典養成類游戲簡單實踐-小公主養成記


《老九學堂C++課程》學習筆記。《老九學堂C++課程》詳情請到B站搜索《老九零基礎學編程C++入門》
-------------簡單的事情重復做,重復的事情用心做,用心的事情堅持做(老九君)---------------
致敬:日本Gainax公司推出養成游戲,美少女夢工廠

使用控制臺編寫一個小游戲需要實現的基礎功能

  1. 新增數據
  2. 修改數據
  3. 刪除數據
  4. 查詢數據

游戲規則:游戲一共運行78個月,安排每個月的行程,合理規劃增加基礎屬性。最后主人公成為什么靠的是不同的培養模式。

將使用的技能點:分支結構,循環結構,數組,*vector/array, 指針

劇情策劃-》原畫-》劇情動畫-》寫程序把動畫串起來成為場景(10幾個人,2年)

/****************************** 文件名:main.cpp* 創建人:cyy* 日 期:2021-01-08* 描 述:C++第一階段項目《小公主養成記》* 修改人:somebody* 日 期:someday* 版 本:1.0.0* *****************************/
#include <iostream>
#include <iomanip>
#include <ctime>
#include <vector>
#include <array>
#include <cstdlib>using namespace std;int main(){// 1.為父親女兒取名字/** 父親姓名 */string value_father_name;/** 女兒姓名 */string value_daughter_name;/** 女兒生日的月份 */int value_birth_month = 7;/** 女兒生日的日期 */int value_birth_day = 5;/** 女兒的五項基本信息:體力、智力、魅力、道德、氣質*/vector<int> value_daughter_baseinfos;/** 五項基本屬性名 */array<string, 5> value_arrary_baseinfoname = {"體力","智力","魅力","道德","氣質"};/** 女兒的初始金幣*/int value_daughter_gold = 500;string value_daughter_constell;string constell_name[12][2]={{"山羊座", "水瓶座"}, // 一月{"水瓶座", "雙魚座"}, // 二月{"雙魚座", "白羊座"}, // 三月{"白羊座", "金牛座"}, // 四月{"金牛座", "雙子座"}, // 五月{"雙子座", "巨蟹座"}, // 六月{"巨蟹座", "獅子座"}, // 七月{"獅子座", "處女座"}, // 八月{"處女座", "天秤座"}, // 九月{"天秤座", "天蝎座"}, // 十月{"天蝎座", "射手座"}, // 十一月{"射手座", "山羊座"}, // 十二月};int choice, temp1, temp2, temp3;// 2.為女兒錄入初始信息,cout << "父親的姓名: ";cin >> value_father_name;cout << "女兒的姓名: ";cin >> value_daughter_name;cout << "女兒的生日(MM DD): ";cin >> value_birth_month >> value_birth_day;/** 每個星座的最后一天 */int constell_dates[] = {20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22};value_daughter_constell = constell_name[value_birth_month-1][value_birth_day / constell_dates[value_birth_month-1]];cout << "女兒的信息:";cout << "姓名:" << value_daughter_name << endl;cout << "生日:1659-" << value_birth_month << "-" << value_birth_day << endl;cout << "星座:" << value_daughter_constell << endl;// .依據女兒的星座,設置游戲的基本參數(體力,智力,魅力,道德,氣質)if(value_daughter_constell == "山羊座" || value_daughter_constell == "雙魚座" || value_daughter_constell == "白羊座"){value_daughter_baseinfos.push_back(80);value_daughter_baseinfos.push_back(15);value_daughter_baseinfos.push_back(15);value_daughter_baseinfos.push_back(11);value_daughter_baseinfos.push_back(11);}else if(value_daughter_constell == "金牛座" || value_daughter_constell =="雙子座" || value_daughter_constell =="巨蟹座"){value_daughter_baseinfos.push_back(30);value_daughter_baseinfos.push_back(20);value_daughter_baseinfos.push_back(23);value_daughter_baseinfos.push_back(35);value_daughter_baseinfos.push_back(47);}else if(value_daughter_constell == "獅子座" || value_daughter_constell =="處女座" || value_daughter_constell=="天平座"){value_daughter_baseinfos.push_back(12);value_daughter_baseinfos.push_back(13);value_daughter_baseinfos.push_back(23);value_daughter_baseinfos.push_back(32);value_daughter_baseinfos.push_back(21);}else{value_daughter_baseinfos.push_back(2);value_daughter_baseinfos.push_back(32);value_daughter_baseinfos.push_back(12);value_daughter_baseinfos.push_back(33);value_daughter_baseinfos.push_back(26);}for(int i = 0; i < 5 ; i++){cout << value_daughter_baseinfos[i] << "\t";}// 3. 開始游戲大循環// 游戲從1659年6月開始for(int year = 1659; year <= 1659 + 7; year++){for(int month = (year == 1659 ? 6 : 1); month < 13; month++){// 判斷本月是不是女兒的生日if(month == value_birth_month){cout << "本月是" << value_daughter_name << "的生日,要不要送禮物呢?" << endl;// 依據用戶的輸入做判斷  }// 顯示游戲主菜單cout << "\n 1.查看狀態 \t2.安排行程 \t3.親自談話 \t4.存檔 \t5.讀檔" << endl;cin >> choice;switch(choice){case 1:  //1.查看狀態cout << "女兒的信息:";cout << "姓名:" << value_daughter_name << endl;cout << "生日:1659-" << value_birth_month << "-" << value_birth_day << endl;cout << "星座:" << value_daughter_constell << endl;cout << "金幣:" << value_daughter_gold << endl;//打印核心屬性"cout << left;for(int i = 0; i < 5; i++){cout << value_arrary_baseinfoname[i] << ": " << setw(4) << value_daughter_baseinfos[i];// 計算實心框的百分比int solidCount = value_daughter_baseinfos[i] / 10;for(int j = 0; j < 10; j++){if(j < solidCount){cout << "?";} elsecout << "?";}cout << endl;}break;case 2:  //2.安排行程: 一個月最多安排三個行程{string month_parts[] = {"上旬","中旬","下旬"};int num;      // 課上說case里面不能定義變量,需要打括號。但是我是可以的for(int i = 0; i < 3; i++){cout << "--" << month << "月--" << month_parts[i] << endl;cout << "1.學習武藝\n 2.上私塾\n 3.學習禮法\n 4.出城修行\n 5.打工賺錢" << endl;cout << "請選擇:";cin >> choice;// 需要進行判斷沒錢的情況,強制打工srand(time(NULL));if(choice == 1){ // 加體力,加魅力,減金錢value_daughter_baseinfos[0] += temp1 = rand() % 11;value_daughter_baseinfos[2] += temp2 = rand() % 11;value_daughter_gold -= temp3 = rand() % 51;cout << "學習張無忌好榜樣!!!!" << endl;cout << "體力+" << temp1 << ",魅力+" << temp2 << ",金錢-"<< temp3 << endl;}else if(choice == 5){value_daughter_gold -= temp3 = rand() % 101;cout << "通過努力打工賺到了" << temp3 << "金幣" << endl;}}break;}case 3:  //3.親自談話break;case 4:  //4.存檔break;case 5:  //5.讀檔break;default:break;}}}// 4. 根據各項闡述,判定游戲結果int sum = 0;for(int i = 0; i < 5; i++){sum += value_daughter_baseinfos[i];}if(sum >= 2000){cout << "最優游戲結果:登基為女王陛下" << endl;}else if(sum >= 1800 && sum < 2000){cout << "次優游戲結果:成為王妃" << endl;}else if(sum >= 1200 && sum < 1600){int maxValue = value_daughter_baseinfos[0];int maxIdex = 0;for(int i = 1; i < 5; i++){if(maxValue < value_daughter_baseinfos[i]){maxValue = value_daughter_baseinfos[i];maxIdex = i;}}if ( maxIdex == 4 && value_daughter_baseinfos[2] > value_daughter_baseinfos[4]){cout << "經過長期的訓練" << value_daughter_name << "成為一名高榮的高級祭司" << endl;}return 0; 
}

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

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

相關文章

關于房屋的風水學整理

第一步&#xff1a;看缺角&#xff0c;根據戶型圖的整體形狀分析有無缺角戶型的形狀很多&#xff0c;有三角形的&#xff0c;手槍形的&#xff0c;鋸齒型的等等&#xff0c;總的來說缺角就不好&#xff0c;方方正正好&#xff0c;適合“天方地圓”。如下圖什么是缺角&#xff0…

房屋兇吉位判斷

房屋的吉兇位按八宅來判斷比較適合自身簡易的操作&#xff0c;但每個房屋&#xff0c;都是既有共性&#xff0c;也有個性的&#xff0c;具體的吉兇方位的判斷&#xff0c;可能要用到家中每個人的年命、運程&#xff0c;房屋周邊的山水形勢及地理環境要素。這些內容&#xff0c;…

leetcode226 反轉二叉樹

翻轉一棵二叉樹。 示例&#xff1a; 輸入&#xff1a; 4 / \ 2 7 / \ / \ 1 3 6 9 輸出&#xff1a; 4 / \ 7 2 / \ / \ 9 6 3 1 備注: 這個問題是受到 Max Howell 的 原問題 啟發的 &#xff1a; 谷歌&#xff1a;我們90&#xff05;的…

Linux(9)-Vim編輯器的使用

Vim編輯器的使用1.指令模式常用快捷鍵1.1 定位快捷鍵1.2 編輯快捷鍵1.3查找相關的快捷鍵2.行末模式常用命令2.1 文件操作命令3. 切換默認編輯器nano->vim4.tip4.1顯示行號vim編輯器有3種工作模式&#xff1a;指令模式–依據快捷鍵對文本進行編輯–復制、黏貼、刪除、查找輸入…

微信app公眾平臺開發

http://www.cnblogs.com/txw1958/p/wechat-tutorial.html

用awk一些常用技巧sort uniq

統計文件中第一列中同一IP出現的次數cat test123.122.123.12 12121212121.2332.121.11 232323255.255.255.255 21321123.122.123.12 12121212123.122.123.12 1212121er2123.122.123.12 12121212eer123.122.123.12 12121212ere255.255.255.255 21321121.2332.121.11 232323255.2…

leetcode234 回文鏈表

請判斷一個鏈表是否為回文鏈表。 示例 1: 輸入: 1->2 輸出: false 示例 2: 輸入: 1->2->2->1 輸出: true 進階&#xff1a; 你能否用 O(n) 時間復雜度和 O(1) 空間復雜度解決此題&#xff1f; 思路&#xff1a;逆置前一半&#xff0c;然后從中心出發開始比較即…

mysql導入source數據庫sql的C++實現和封裝

之前有好多人在為這件事情頭疼不已: 想有一個不需要安裝mysql客戶端就可以導入數據庫腳本,但找不到對應的api調用。所以得需要自己去實現導入數據庫的實現方法: common.h #ifndef _COMMON_H #define _COMMON_H #ifdef WIN32#include <winsock2.h>typedef __int8 …

C++(12)--函數基礎:按值傳遞、傳遞數組、函數指針

模塊化編程--函數1. 函數基本知識2. 函數的參數2.1 按值傳遞機制&#xff08;小議按引用傳遞&#xff09;2.2 使用數組做函數參數&#xff08;用戶頭文件&#xff0c;const的防改&#xff09;2.3 使用二維數組作為函數的參數2.4 使用函數指針作為函數的參數2.4.1 函數指針的基本…

關于關閉SELinux的方法

原貼:http://www.diybl.com/course/6_system/linux/Linuxjs/2008629/129166.html關閉SELinux的方法&#xff1a;修改/etc/selinux/config文件中的SELINUX"" 為 disabled &#xff0c;然后重啟。如果不想重啟系統&#xff0c;使用命令setenforce 0注&#xff1a;seten…

leetcode739 每日溫度

根據每日 氣溫 列表&#xff0c;請重新生成一個列表&#xff0c;對應位置的輸入是你需要再等待多久溫度才會升高超過該日的天數。如果之后都不會升高&#xff0c;請在該位置用 0 來代替。 例如&#xff0c;給定一個列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#…

scp免密碼遠程拷貝

有些時候&#xff0c;我們在復制/移動文件 到另一臺機器時會用到scp&#xff0c;因為它比較安全。但如果每次都要輸入密碼&#xff0c;就比較煩了&#xff0c;尤其是在script里。不過&#xff0c;ssh有另一種用密鑰對來驗證的方式。下面寫出我生成密匙對的過程&#xff0c;供大…

C++(13)--函數的進階:內聯、傳遞引用、參數默認值、重載、函數模板

模塊化編程--函數的進階1.內聯函數1.1 inline基本情況1.2 inline 的前世今生-帶參的宏替換2.傳遞引用&#xff08;重點&#xff09;2.1引用、理由、注意事項2.3 交換兩個變量的數值3.返回引用3.1不要返回局部變量的引用3.2函數可以不返回值&#xff0c;默認返回傳入的引用對象本…

終于,我讀懂了所有Java集合——set篇

HashSet &#xff08;底層是HashMap&#xff09; Set不允許元素重復。 基于HashMap實現&#xff0c;無容量限制。 是非線程安全的。 成員變量 private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private s…

加速scp傳輸速度

當需要在機器之間傳輸400GB文件的時候&#xff0c;你就會非常在意傳輸的速度了。默認情況下(約125MB帶寬&#xff0c;網絡延遲17ms&#xff0c;Intel E5-2430&#xff0c;本文后續討論默認是指該環境)&#xff0c;scp的速度約為40MB&#xff0c;傳輸400GB則需要170分鐘&#xf…

tcpcopy使用方法

1、下載tcpcopy http://code.google.com/p/tcpcopy/downloads/list 2、配置、編譯、安裝 依此使用如下命令&#xff1a; 配置&#xff1a; ./configure 編譯&#xff1a; make 安裝&#xff1a; make install 3、使用方法 下面以mosquitto為例&#xff0c;說明tcpcopy的用法&a…

C++(14)--面向對象

面向對象1.面向對象編程(難點)2.類和對象demo1:地主類的實現版本1demo2:地主類的實現版本23.訪問修飾符demo3:外部修改成員變量不安全(版本3)demo4: 使用封裝防止直接修改成員變量&#xff08;版本3&#xff09;demo5:進一步封裝&#xff1a;設置/獲取名字&#xff0c;修改積分…

終于,我讀懂了所有Java集合——map篇(多線程)

多線程環境下的問題 1.8中hashmap的確不會因為多線程put導致死循環&#xff08;1.7代碼中會這樣子&#xff09;&#xff0c;但是依然有其他的弊端&#xff0c;比如數據丟失等等。因此多線程情況下還是建議使用ConcurrentHashMap。 數據丟失&#xff1a;當多線程put的時候&…

system函數的返回值和執行腳本的返回值

1、先統一兩個說法&#xff1a;&#xff08;1&#xff09;system返回值&#xff1a;指調用system函數后的返回值&#xff0c;比如上例中status為system返回值&#xff08;2&#xff09;shell返回值&#xff1a;指system所調用的shell命令的返回值&#xff0c;比如上例中&#x…

OJ匯總

國內&#xff1a;&#xff08;一下排名不分先后&#xff09; 浙江大學&#xff08;ZJU&#xff09;&#xff1a;http://acm.zju.edu.cn/ 北京大學&#xff08;PKU&#xff09;&#xff1a;http://acm.pku.edu.cn/JudgeOnline/ 同濟大學&#xff08;TJU&#xff09;&#xff1a;…