幾乎所有的rpg遊戲(一種源自《龍與地下城》的遊戲型別)在進入遊戲時都會讓使用者自己來建立自己喜歡的角色。本次上機要求編寫乙個簡化的建立遊戲角色的程式。
本題目要求的遊戲角色應有以下屬性:名字、性別、種族、職業、力量、敏捷、體力、智力、智慧型、生命值和魔法值。
名字:不超過50個字元。
性別:可以選擇男性和女性。
種族:一共可選五個種族,人類、精靈、獸人、矮人和元素。
職業:可選六種職業,狂戰士、聖騎士、刺客、獵手、祭司和巫師。
其餘屬性均為整數。
本題目要求首先使用者輸入角色姓名,然後由使用者選擇角色性別,然後由使用者選擇種族,然後選擇職業,然後自動分配力量、敏捷、體力、智力和智慧型屬性,並計算生命值和魔法值。
生命值=體力*20。
魔法值=(智力+智慧型)*10。
很多職業會限制某些種族選擇,例如獸人不能就職聖騎士等等,種族和職業的限制表如下:
本題目要求力量、敏捷、體力、智力和智慧型要求是隨機值(利用隨機數函式來取得隨機數),但是五項屬性的總和應該是100,並且應該和職業相關。例如狂戰士的體力和力量就要比較高,而巫師需要較高的智力,而祭司則需要較高的智慧型。各職業初始屬性的大致比例應遵從下表:
最後向使用者顯示該角色的所有資訊,然後詢問使用者是否滿意,如使用者不滿意則重新建立,若使用者滿意則程式結束,並將使用者建立角色的相關資訊寫入檔案儲存
1.建立乙個基類base用來儲存玩家輸入的姓名和性別的選擇,同時需要宣告兩個友元類display,file可以訪問該類中的資料。
2.在基類base基礎上建立乙個派生類role,用來記錄玩家選擇的種族,和職業,同時規定什麼種族可以選擇什麼職業,同時需要宣告兩個友元類display,file可以訪問該類中的資料。
3.在派生類role上派生乙個attribute類用來記錄角色隨機生產的屬性,首選規定各個職業每個屬性的最小值,在這個最小值的基礎上,隨機生成差距在3左右的屬性,再根據隨機生成的屬性計算出該角色的生命值,魔法值,同時需要宣告兩個友元類display,file可以訪問該類中的資料。
4.建立乙個display類可以訪問base,role,attribute三個類中的資料,輸出三個類中記錄的資料。
5.建立乙個file類可以訪問base,role,attribute三個類中的資料,並且將三個類中的資料進行文字輸出儲存。
#include// i/o流控制標頭檔案
#include"string"
#include"ctime"
#include"fstream" //檔案的讀寫
using namespace std;
int occupation_choice;//玩家所選擇職業的序號
class base//儲存玩家姓名和角色
;void base::getbase()
//根據選擇的職業,向getrandom傳各職業屬性的最小值
void attribute::getattribute()
class display//輸出角色屬性
遇到的第乙個問題是設計思路中的第三步,在attribute類中記錄各角色隨機產生的屬性值。這一步一直想不明白,設計要求中給出了各屬性的最小值,那麼怎麼讓產生的隨機數不小於要求的最小值呢?解決方案:首先將要求的各個屬性的最小值傳給getrandom(),然後在最小值的基礎上利用隨機函式rand()%3隨機生成0、1、2三個數。這樣便能解決該問題。
另外,將display、file設定為友元類是因為當將類b宣告為類a的友元類時,類b中的所有函式都可以訪問類a 中的所有成員,這樣便於輸出父類和子類中的資訊。
最後,將建立的角色資訊寫入檔案的操作遇到了問題。對於c++中檔案的讀寫沒有學通透,經查詢資料和請教同學,對讀寫檔案有以下學習:
在c++中對檔案的操作是通過stream的子類fstream來實現的,所以要用這種方式操作檔案,必須加入標頭檔案#include.
(1)開啟檔案——void open(const char*filename,int mode,int access) 其中引數filename:要開啟的檔名; mode:要開啟檔案的方式;access:開啟檔案的屬性。
(2)讀寫操作——用插入器(<>)從檔案輸入(讀操作)。
(3)fstream子類
ofstream向檔案中寫資料;ifstream從檔案中讀資料。
物件導向程式設計 五 構造方法
構造器,又稱構造方法 constructor 構造器用於構造該類的例項 物件 格式如下 構造方法是一種特殊的方法 通過new關鍵字呼叫!構造器雖然有返回值,但不能定義返回型別 返回值型別肯定是本類 不能在構造器裡呼叫return。如果我們沒有定義構造器,則系統會自動定義乙個無參的建構函式。如果已定義...
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
物件導向程式設計
物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...