題目
幾乎所有的rpg遊戲(一種源自《龍與地下城》的遊戲型別)在進入遊戲時都會讓使用者自己來建立自己喜歡的角色。本次上機要求編寫乙個簡化的建立遊戲角色的程式。
1.遊戲角色應有的屬性
本題目要求的遊戲角色應有以下屬性:名字、性別、種族、職業、力量、敏捷、體力、智力、智慧型、生命值和魔法值。
名字:不超過50個字元。
性別:可以選擇男性和女性。
種族:一共可選五個種族,人類、精靈、獸人、矮人和元素。
職業:可選六種職業,狂戰士、聖騎士、刺客、獵手、祭司和巫師。
其餘屬性均為整數。
本題目要求首先使用者輸入角色姓名,然後由使用者選擇角色性別,然後由使用者選擇種族,然後選擇職業,然後自動分配力量、敏捷、體力、智力和智慧型屬性,並計算生命值和魔法值。
生命值=體力*20。
魔法值=(智力+智慧型)*10。
2.職業限制
很多職業會限制某些種族選擇,例如獸人不能就職聖騎士等等,種族和職業的限制表如下:
所以在要求使用者選擇職業時,輸出資訊裡面只能有使用者所選擇種族可以就職的職業。
3.初始屬性
本題目要求力量、敏捷、體力、智力和智慧型要求是隨機值(利用隨機數函式來取得隨機數),但是五項屬性的總和應該是100,並且應該和職業相關。例如狂戰士的體力和力量就要比較高,而巫師需要較高的智力,而祭司則需要較高的智慧型。各職業初始屬性的大致比例應遵從下表:
例如,前面示意圖中的祭司的初始屬性,大致滿足該比例,但是應該是隨機的。
然後利用屬性值計算生命值和魔法值。
4.顯示資訊
最後向使用者顯示該角色的所有資訊,然後詢問使用者是否滿意,如使用者不滿意則重新建立,若使用者滿意則程式結束,並將使用者建立角色的相關資訊寫入檔案儲存。
題目分析
1.需要建立兩個類第乙個類存放要選擇角色的性別,職業等等,第二個類存放人的選擇。
2.需要第一類當作基類, 第二個類繼承第乙個類
3.要生成角色"力量",「敏捷」,「體力」,「智力」,「智慧型」,「生命值」,"魔法值"需要按照初始屬性表大概比例隨機生成。
4.當玩家確認時,可以將生成的資料存入檔案中。
double random(double start,double end) //絕對隨機數生成演算法
按照6種職業屬性比例求機屬性分配的比例
求6種職業的最大公約數,只有兩種,5和10,對於這兩種結果,隨機生成4-6或者9-11的隨機數,再用100逐個減去,最後剩下100中的就是最後乙個屬性。
void get_choice::randoms() //力量、敏捷、體力、智力和智慧型比例分配
else
srand((unsigned)time(null));
for(int i=0;i<4;i++)
a[4]=temp;
a[5]=a[2]*20; //生命值
a[6]=(a[3]+a[4])*10; //魔法值
}####執行截圖
title:rpg角色生成器
author: q
date:2019/4/17
具體功能:
乙個角色生成程式,可自己輸入姓名,性別,種族,職業
隨機生成符合角色的屬性
*/#include#include#include#includeusing namespace std;
double random(double start,double end) //絕對隨機數生成演算法
class person
; char race[5][20]=;
char profession[6][20]=;
};class get_choice :public person
,,,,,};
int a[7];
char b[7][20]=;
public:
void input_name();
int input_***();
int input_race();
int input_profession();
void randoms();
void display();
friend void output_file(get_choice &get);
};void get_choice::input_name()
int get_choice::input_***()
//正確則跳出
else
cout << "請輸入0或1來選擇性別!\n";
} return get_***;
}int get_choice::input_race()
//正確則跳出
else
cout << "請輸入0到5來選擇種族!\n";
} return get_race;
}int get_choice::input_profession()
//正確則跳出
else
cout << "請輸入0到6來選擇職業!\n";
}break;
case 1:
while (1)
//正確則跳出
else
cout << "請輸入2到5來選擇職業!\n";
}break;
case 2:
while (1)
//正確則跳出
else
cout << "請根據括號中的數字來選擇職業!\n";
}break;
case 3:
while (1)
//正確則跳出
else
cout << "請根據括號中的數字來選擇職業!\n";
}break;
case 4:
while (1)
//正確則跳出
else
cout << "請根據括號中的數字來選擇職業!\n";
}break;
return get_profession;
}}void get_choice::display()
else
srand((unsigned)time(null));
for(int i=0;i<4;i++)
a[4]=temp;
a[5]=a[2]*20;
a[6]=(a[3]+a[4])*10;
cout
if(n!=0&&n!=1)
else
} }while(n!=0);
output_file(get);
return 0;
}
遊戲角色建立
問題及 檔名稱 預設函式 完成日期 2016年3月30日 版本號 odeblocks 問題描述 建立遊戲角色,通過他的攻擊和被攻擊等情況,輸出狀態。輸入描述 無。輸出描述 遊戲角色狀態 include using namespace std class role void attack void e...
RPG遊戲角色建立
幾乎所有的rpg遊戲 一種源自 龍與地下城 的遊戲型別 在進入遊戲時都會讓使用者自己來建立自己喜歡的角色。本次上機要求編寫乙個簡化的建立遊戲角色的程式。分析 建立乙個角色類ch,類裡包括角色的姓名 性別 屬性,以及對屬性的建立和儲存。在建立屬性時,不同的角色職業天賦也不一樣,根據一定的天賦比例用隨機...
RPG遊戲角色
幾乎所有的rpg遊戲 一種源自 龍與地下城 的遊戲型別 在進入遊戲時都會讓使用者自己來建立自己喜歡的角色。本次上機要求編寫乙個簡化的建立遊戲角色的程式。本題目要求的遊戲角色應有以下屬性 名字 性別 種族 職業 力量 敏捷 體力 智力 智慧型 生命值和魔法值。該程式中用到了開閉原則,單一職責。clas...