#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
Class Devil{ //個人的にメガテンが好きなので悪魔クラス
private:
int HP; //RPGキャラって大抵HPとか攻撃力は持ってるよね〜
int attack;
int defense;
int toal; //これは完全に内部処理用の変数
public;
Devil(); //コンストラクタ
char name[41];
void SetName(); //Set〜は能力値設定用関数
void SetHP();
void SetAttack();
void setDefense();
void ShowStates(); //設定した能力を表示する関数
int Attack(); //戦闘中は攻撃もするし・・・
int Damage(int x); //攻撃されるのがゲームキャラ
};
Devil::Devil(){ //コンストラクタなのでデータメンバを設定するようにしました。
total = 200;
HP = 0;
attack = 0;
defense = 0;
SetName();
SetHP(); //set関数の処理順を変えるとひどいことになりますよ、多分
SetAttack();
SetDefense();
}
void Devil::SetName(){ //名づけ関数
cout << "名前を入力してください。\n";
cin >> name;
}
void Devil::SetHP(){ //HP設定関数
int chkHP;
for(int i = 0; i < 2; i++){
cout << "HPを150以内に設定してください。\n";
cin >> chkHP;
if(chkHP <= 150 && chkHP >0){
HP = chkHP;
total -= HP;
i = 2;
}else{
cout << "正しい値を設定してください。\n";
i = 0;
}
}
}
void Devil::SetAttack(){ //攻撃力設定関数
int chkAttack;
for(int i = 0; i < 2; i++){
cout << "攻撃力を" << total - 1 <<
"以内に設定してください。\n";
cin >> chkAttack;
if(chkAttack <= total - 1 && chkAttack >0){
attack = chkAttack;
total -= attack;
i = 2;
}else{
cout << "正しい値を設定してください。\n";
i = 0;
}
}
}
void Devil::SetDeffense(){ //守備力設定関数は残り物なので処理の順番をミスると・・・
defense = total;
}
void Devil::ShowStates(){ //設定能力値表示関数
cout << name << "\n";
cout << "HP :" << HP << "\n";
cout << "攻撃力:" << attack << "\n";
cout << "守備力:" << defense << "\n";
}
int Devil::Attack(){ //攻撃関数、実は乱数におとし穴が・・・!
int damage;
int randam;
randam = rand() % 8;
switch(randam){
case 1:
damage = 0;
break;
case 2:
damage = (int)(attack * 0.8);
break;
case 3:
damage = (int)(attack * 0.9);
break;
case 4:
damage = attack;
break;
case 5:
damage = (int)(attack * 1.1);
break;
case 6:
damage = (int)(attack * 1.2);
break;
case 7:
damage = attack * 2;
break;
}
cout << name << "の攻撃!\n";
return damage;
}
int Devil::Damage(int x){ //被攻撃関数
int damage;
damage = x - defense;
if(damage < 0){
damage = 0;
}
HP -= damage;
cout << name << "に" << damage <<
"のダメージ!\n";
if(HP <= 0){
cout << name << "は倒れた。\n";
return 1;
}else{
return 0;
}
}
void main(){
Devil A; //オブジェクトの作成
Devil B; //この2行で2体の悪魔が作成されます。
A.ShowStates();
B.ShowStates();
int i = 0;
while(i == 0){ //このへんが2体の悪魔の殴り合い
i = B.Damage(A.Attack());
if(i != 1){
i = A.Damage(B.Attack());
}
}
}