RPG風なゲームを作ろうと思ってるのですが、
素早さ順にキャラクターを攻撃させたいのですが、
どうやってプログラムをすれば良いのかがわかりません・・・
素早さ順にソートしてみたのですが、飽くまでも素早さをソート出来ただけであって、そこからどうやって行動させたら良いかがわかりません…
何方かアドバイスをお願い致します!><
//=========================================================================
//【インクルード記述】
//=========================================================================
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#include<string.h>
#include<windows.h>
//=========================================================================
//【グローバル変数宣言】
//=========================================================================
char tugi; //継続判定
int chara_id={0}; //キャラ番号
int job_id=0; //職番号
int fst_chara_flg=0; //進行段階フラグ
int statusSD_ran[3][40]={{0,1,2,3,0,2,3,1,4,2,3,2,1,3,2,1,3,1,3,2,
0,3,2,1,3,2,2,1,0,0,1,3,4,3,2,1,3,3,2,5}, //低補正(分布は完全ランダム
{5,4,6,5,4,5,4,6,5,4,6,5,4,7,5,6,3,5,4,5,
4,5,4,6,5,6,5,4,5,6,5,4,7,5,6,3,5,4,5,5}, //中補正(分布は完全ランダム
{7,8,7,9,7,8,9,7,8,9,7,8,7,9,8,7,8,9,8,7,
8,7,9,7,8,7,9,7,8,8,7,9,7,8,7,9,7,8,9,7}};//高補正(分布は完全ランダム
int dn_num=0; //ダンジョン選択
int mns_id=0; //敵番号
//=========================================================================
//【グローバル構造体定義】
//=========================================================================
typedef struct //キャラクター能力
{
int job_id; //職番号
int lv; //キャラクターのレベル
int exp; //キャラクターの経験値
int hp; //キャラクターの体力
int mp; //キャラクターの魔力
int p_atk; //キャラクターの物理攻撃力
int p_def; //キャラクターの物理防御力
int s_atk; //キャラクターの魔法攻撃力
int s_def; //キャラクターの魔法防御力
int spd; //キャラクターの素早さ
int sp; //キャラクターのスキルポイント
int hp_up; //キャラクターの体力上昇力
int mp_up; //キャラクターの魔力上昇力
int p_atk_up; //キャラクターの物理攻撃力上昇力
int p_def_up; //キャラクターの物理防御力上昇力
int s_atk_up; //キャラクターの魔法攻撃力上昇力
int s_def_up; //キャラクターの魔法防御力上昇力
int spd_up; //キャラクターの素早さ上昇力
char job[11]; //キャラクターの職業
char name[16]; //キャラクターの名前
}status;
typedef struct //敵キャラクター能力
{
int mns_id; //敵の種別番号
int lv; //敵のレベル
int exp; //討伐時の入手経験値
int hp; //敵のHP
int mp; //敵のMP
int p_atk; //敵の物理攻撃力
int p_def; //敵の物理防御力
int s_atk; //敵の魔法攻撃力
int s_def; //敵の魔法防御力
int spd; //敵の素早さ
char name[16]; //敵の名前
}mns_status;
//=======================================================================
//【グローバル構造体宣言】
//=======================================================================
status dfo_PTstatus[5]= //職業毎の初期ステータス
{
{0,0,0,500,200,200,150,100,100,100,0,1,1,2,2,0,0,1,0,0}, //剣士の能力
{1,0,0,400,450,100,100,200,150,100,0,0,2,0,0,2,2,1,0,0}, //メイジの能力
{2,0,0,600,400,150,200,150,200,60 ,0,2,1,1,2,1,2,0,0,0}, //プリーストの能力
{3,0,0,450,300,150,150,150,150,150,0,1,1,1,1,1,1,2,0,0}, //シーフの能力
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
status PTstatusDATA[4]= //PTメンバーステータス
{
{0}, //1P
{0}, //2P
{0}, //3P
{0} //4P
};
status *PTstatus[4]= //PTメンバーステータスのポインタ
{
{&PTstatusDATA[0]}, //1P
{&PTstatusDATA[1]}, //2P
{&PTstatusDATA[2]}, //3P
{&PTstatusDATA[3]} //4P
};
status battleST[4]= //PTメンバーの戦闘で適用されるステータス
{
{0}, //1P
{0}, //2P
{0}, //3P
{0} //4P
};
mns_status mnsST[1]=
{
{0,1,10,300,100,100,100,100,100,80,0} //ゴブリンのステータス
};
mns_status battle_mnsST={0};
//=========================================================================
//【プロトタイプ宣言】
//========================================================================
void tutorial(void);
void opening(void);
void my_status(void);
void job_set(void);
void status_view(void);
void status_SD(void);
void sp_div(void);
void chara_make(void);
void menu(void);
void chara_del_cull(void);
void status_view_cull(void);
void dn_cull(void);
void rorien(void);
void guran(void);
void amasiro(void);
void behi(void);
void atk_spd(void);
void damage_cnt(void);
//===========================================================================
//【メイン関数】
//==========================================================================
int main(void)
{
job_set(); //ジョブの設定
tutorial(); //チュートリアル
fst_chara_flg=2; //進行1フラグ
menu(); //メニューを表示
printf("何かキーを押す事でソフトは終了します。");
rewind(stdin);
getchar();
return 0;
}
//============================================================================
//【配列文字代入】
//===========================================================================
void job_set(void)
{
/*----------↓構造体への文字列貼り付け↓------------*/
strcpy(dfo_PTstatus[0].job,"剣士");
strcpy(dfo_PTstatus[1].job,"メイジ");
strcpy(dfo_PTstatus[2].job,"プリースト");
strcpy(dfo_PTstatus[3].job,"シーフ");
strcpy(mnsST[0].name,"ゴブリン");
}
//===========================================================================
//【チュートリアル】
//===========================================================================
void tutorial(void)
{
printf("シュシア「ようそこ、月光酒場へ。\n");
printf(" 冒険の仲間をお探しかしら?\n");
printf(" ここには沢山の冒険者が集っているわ。\n");
printf(" 一緒に冒険に行きたい人に声をかけて見ては如何かしら?」\n");
printf(" ▼enter\n");
getchar();
system("CLS");
my_status(); //初期キャラクター設定
status_SD(); //ステータスのばらつき設定
status_view(); //ステータス確認
sp_div(); //SP割り振り
status_view(); //ステータス確認
printf("シュシア「どうですか?力が湧いて来たかしら?\n");
printf(" では、この月光酒場にいらっしゃる冒険者から\n");
printf(" 旅仲間を見つけてみましょうか。」\n\n\n");
printf(" ▼enter\n");
tugi=getchar();
system("CLS");
}
//===========================================================================
//【キャラの設定】
//===========================================================================
void my_status(void)
{
tugi='e';
while(tugi=='e')
{
if( fst_chara_flg==0 ) //チュートリアル時に発生するセリフ
{
printf("シュシア「ああ、そうそう\n");
printf(" 冒険に出る前に、貴方の事について教えて下さらないかしら?」\n");
chara_id=0;
}
else //新規キャラクター作成時に発生するセリフ
{
printf("シュシア「貴方の旅仲間について教えてもらえるかしら?」\n");
}
//-------------------------------
//ユーザーが職業を入力
//-------------------------------
printf("\nキャラの職業を1~4の数字を入力してenterで決定して下さい。\n");
printf(" 1=剣士\n 2=メイジ\n 3=プリースト\n 4=シーフ\n:");
rewind(stdin);
scanf("%d",&job_id); //職業番号を入力
job_id--; //職業番号を配列に対応する様に調整
tugi='n';
if(( job_id==0 )||( job_id==1 )||( job_id==2 )||( job_id==3 ))
{
}
else //入力不正時の処理
{
system("CLS");
tugi='e';
printf("入力が不正です。\n\n");
}
}
//------------------------------
//ユーザーが名前を入力
//------------------------------
if( fst_chara_flg==0 )
{
PTstatusDATA[chara_id]=dfo_PTstatus[job_id];
system("CLS");
printf("シュシア「貴方の職業は「%s」なのね?\n",PTstatus[chara_id]->job);
printf(" 素敵な職業ですね。\n");
printf(" 次に貴方のお名前を教えて下さるかしら?」");
}
else
{
PTstatusDATA[chara_id]=dfo_PTstatus[job_id];
system("CLS");
printf("シュシア「貴方のお仲間の職業は「%s」なのね\n",PTstatus[chara_id]->job);
printf(" 素敵な職業ですね。\n");
printf(" 次にお仲間のお名前を教えて下さるかしら?」\n");
}
printf("\nキャラの名前を半角英数字15文字以内で入力してenterで決定して下さい");
printf("15文字以上入力された場合は、以降の文字は消去されます。");
printf("\n\n名前:");
rewind(stdin);
scanf("%15s",&PTstatus[chara_id]->name); //キャラクター名を入力
system("CLS");
}
//============================================================================
//【レベルアップ時】
//============================================================================
void status_SD(void)
{
//注意:新キャラクター作成時は、能力のランダム性を出す為の作業をここで行います。
// キャラクター作成時はLv0とし、初期ステータス閲覧直前にLvが1上昇する様にしております。
int r;
srand(( unsigned )time( NULL )); //乱数生成
r=rand();
PTstatus[chara_id]->lv++; //LVアップ処理
/*--------↓PTstatus[chara_ID]->上昇能力 += statusSD_ran[PTstatus[chara_id]->上昇能力率][(乱数+ランダム性)%40]
↑Lvアップ前能力 ↑Lvアップ時能力 */
PTstatus[chara_id]->hp += statusSD_ran[PTstatus[chara_id]->hp_up][(r+8)%40];
PTstatus[chara_id]->mp += statusSD_ran[PTstatus[chara_id]->mp_up][(r+9)%40];
PTstatus[chara_id]->p_atk += statusSD_ran[PTstatus[chara_id]->p_atk_up][(r+21)%40];
PTstatus[chara_id]->p_def += statusSD_ran[PTstatus[chara_id]->p_def_up][(r+54)%40];
PTstatus[chara_id]->s_atk += statusSD_ran[PTstatus[chara_id]->s_atk_up][(r+423)%40];
PTstatus[chara_id]->s_def += statusSD_ran[PTstatus[chara_id]->s_def_up][(r+12)%40];
PTstatus[chara_id]->spd += statusSD_ran[PTstatus[chara_id]->spd_up][(r+99)%40];
PTstatus[chara_id]->sp += 30;
}
//============================================================================
//【スキルポイント分配】】
//============================================================================
void sp_div(void)
{
int sp_Kid=0; //上昇させたい能力の種類指定
int sp_Num=0; //上昇させたい能力の数値指定
if( fst_chara_flg==0 )
{
printf("シュシア「あら?貴方スキルポイントを持ってるのね?\n");
printf(" スキルポイントは、1ポイントにつき好きな能力を1上げる事が出来るの。\n");
printf(" 実際にスキルポイントを使ってみましょう。\n");
}
else
{
printf("スキルポイントを割り振って下さい。\n");
}
while( PTstatus[chara_id]->sp>0 )
{
printf("『%s』の能力値\n\n", PTstatus[chara_id]->name);
printf("職業:%s\n", PTstatus[chara_id]->job);
printf("\n現在のステータス\n");
printf("Lv:%d\n", PTstatus[chara_id]->lv);
printf("現在の経験値:%d\n", PTstatus[chara_id]->exp);
printf("HP:%d ・・・1\n", PTstatus[chara_id]->hp);
printf("MP:%d ・・・2\n", PTstatus[chara_id]->mp);
printf("物理攻撃力:%d ・・・3\n", PTstatus[chara_id]->p_atk);
printf("物理防御力:%d ・・・4\n", PTstatus[chara_id]->p_def);
printf("魔法攻撃力:%d ・・・5\n", PTstatus[chara_id]->s_atk);
printf("魔法防御力:%d ・・・6\n", PTstatus[chara_id]->s_def);
printf("素早さ:%d ・・・7\n\n", PTstatus[chara_id]->spd);
printf("どの能力にスキルポイントを割り振りますか?\n");
printf("1~7を入力し、enterで決定して下さい。\n");
sp_Kid=0;
rewind(stdin);
scanf("%d",&sp_Kid); //スキルポイントを割り振る能力の種類を選択
tugi='e';
if(( sp_Kid>0 )&&( sp_Kid<8 ))
{
}
else
{
tugi='n';
}
if( tugi!='n' )
{
printf("その能力に幾らのスキルポイントを割り振りますか?\n");
printf("割り振りたい数字を選択して、enterで決定して下さい\n");
printf("残りSP:%d \n\n:",PTstatus[chara_id]->sp);
for( tugi='n' ; tugi=='n' ; )
{
tugi='e';
rewind(stdin);
scanf("%d",&sp_Num); //使うスキルポイントの量を入力
if( (sp_Num>PTstatus[chara_id]->sp) || (sp_Num<0) )
{
tugi='n';
printf("入力が不正です。最大SP以内の数値で再度入力して下さい。\n");
printf("残りSP:%d \n\n:",PTstatus[chara_id]->sp);
}
else
{
tugi='e';
}
}
switch( sp_Kid )
{
case 1:PTstatus[chara_id]->hp+=sp_Num;
break;
case 2:PTstatus[chara_id]->mp+=sp_Num;
break;
case 3:PTstatus[chara_id]->p_atk+=sp_Num;
break;
case 4:PTstatus[chara_id]->p_def+=sp_Num;
break;
case 5:PTstatus[chara_id]->s_atk+=sp_Num;
break;
case 6:PTstatus[chara_id]->s_def+=sp_Num;
break;
case 7:PTstatus[chara_id]->spd+=sp_Num;
break;
}
PTstatus[chara_id]->sp-=sp_Num;
system("CLS");
}
else
{
system("CLS");
printf("1~7で入力して下さい。\n");
}
}
}
//============================================================================
//【ステータス確認画面】
//============================================================================
void status_view(void)
{
printf("『%s』の能力値\n\n",PTstatus[chara_id]->name);
printf("職業:%s\n",PTstatus[chara_id]->job);
printf("\n現在のステータス\n");
printf("Lv:%d\n",PTstatus[chara_id]->lv);
printf("現在の経験値:%d\n",PTstatus[chara_id]->exp);
printf("HP:%d\n",PTstatus[chara_id]->hp);
printf("MP:%d\n",PTstatus[chara_id]->mp);
printf("物理攻撃力:%d\n",PTstatus[chara_id]->p_atk);
printf("物理防御力:%d\n",PTstatus[chara_id]->p_def);
printf("魔法攻撃力:%d\n",PTstatus[chara_id]->s_atk);
printf("魔法防御力:%d\n",PTstatus[chara_id]->s_def);
printf("素早さ:%d\n",PTstatus[chara_id]->spd);
printf("スキルポイント:%d\n",PTstatus[chara_id]->sp);
printf("\n\nこの画面を閉じる時はenterキーを入力して下さい。\n");
rewind(stdin);
getchar();
system("CLS");
}
//===========================================================================
//【メニュー画面】
//===========================================================================
void menu(void)
{
int cull=0; //選択肢入力
for( tugi='e' ; tugi=='e' ; )
{
printf("シュシア「さて、これからどうされますか?」\n\n");
printf("選択肢を番号で選んだ後、enterで決定して下さい。\n\n");
printf("1:冒険に出る(未実装) 2:仲間を探す 3:仲間と別れる 4:ステータスを確認する。 5:ゲームを終了する\n\n:");
rewind(stdin);
cull=0;
scanf("%d",&cull); //選択肢の入力
system("CLS");
if(( cull>=1 )&&( cull<=5 ))
{
switch( cull)
{
case 1:dn_cull(); //冒険に出る
tugi='e';
break;
case 2: chara_id=0; //仲間を探す
if( PTstatus[chara_id]->lv==0 )
{
chara_make();
}
else
{
chara_id=1;
if( PTstatus[chara_id]->lv==0 )
{
chara_make();
}
else
{
chara_id=2;
if( PTstatus[chara_id]->lv==0 )
{
chara_make();
}
else
{
chara_id=3;
if( PTstatus[chara_id]->lv==0 )
{
chara_make();
}
else
{
system("CLS");
printf("キャラクターはこれ以上作成出来ません。\n\n");
tugi='e';
}
}
}
}
tugi='e';
break;
case 3: chara_del_cull(); //キャラクター削除
tugi='e';
break;
case 4: system("CLS");
status_view_cull(); //ステータス確認キャラ選択
tugi='e';
break;
case 5: tugi='n';
break;
}
}
else
{
system("CLS");
printf("入力が不正です。\n\n");
printf("1~5の選択肢を選択して下さい\n\n");
}
}
}
//------------------------------------
//【新規キャラ作成】
//------------------------------------
void chara_make(void)
{
my_status(); //初期キャラクター設定
status_SD(); //ステータスのばらつき設定
status_view(); //ステータス確認
sp_div(); //SP割り振り
status_view(); //ステータス確認
}
//------------------------------------
//【キャラクター削除】
//------------------------------------
void chara_del_cull(void)
{
int del_cull=0; //キャラデリ選択
int del_ok=0; //削除許可
tugi='e';
while( tugi=='e' )
{
del_ok=0;
//---------------------------------
//キャラクターリスト表示
//---------------------------------
chara_id=0;
if( PTstatus[chara_id]->lv==0 )
{
printf("キャラクター1:キャラクターが作成されていません。\n\n");
del_ok++;
}
else
{
printf("キャラクター1:『%s』\n\n",PTstatus[chara_id]->name);
}
chara_id=1;
if( PTstatus[chara_id]->lv==0 )
{
printf("キャラクター2:キャラクターが作成されていません。\n\n");
del_ok++;
}
else
{
printf("キャラクター2:『%s』\n\n",PTstatus[chara_id]->name);
}
chara_id=2;
if( PTstatus[chara_id]->lv==0 )
{
printf("キャラクター3:キャラクターが作成されていません。\n\n");
del_ok++;
}
else
{
printf("キャラクター3:『%s』\n\n",PTstatus[chara_id]->name);
}
chara_id=3;
if( PTstatus[chara_id]->lv==0 )
{
printf("キャラクター4:キャラクターが作成されていません。\n\n");
del_ok++;
}
else
{
printf("キャラクター4:『%s』\n\n",PTstatus[chara_id]->name);
}
if( del_ok<3 ) //キャラクターが1人しか居ない時は削除不可にする判定
{
printf("どのキャラを削除しますか?\n");
printf("キャラクター番号を入力して下さい。\n");
printf("キャラクターを削除しない場合は、5を入力して下さい");
printf(":");
rewind(stdin);
scanf("%d",&del_cull);
//-----------------------------------
//キャラクター選択結果
//------------------------------------
switch( del_cull )
{
case 1: chara_id=0;
if( PTstatus[chara_id]->lv==0 )
{
system("CLS");
printf("キャラクター1のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
PTstatusDATA[chara_id] = dfo_PTstatus[4];
tugi='n';
system("CLS");
}
break;
case 2: chara_id=1;
if( PTstatus[chara_id]->lv==0 )
{
system("CLS");
printf("キャラクター2のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
PTstatusDATA[chara_id] = dfo_PTstatus[4];
tugi='n';
system("CLS");
}
break;
case 3: chara_id=2;
if( PTstatus[chara_id]->lv==0 )
{
system("CLS");
printf("キャラクター3のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
PTstatusDATA[chara_id] = dfo_PTstatus[4];
tugi='n';
system("CLS");
}
break;
case 4: chara_id=3;
if( PTstatus[chara_id]->lv==0 )
{
system("CLS");
printf("キャラクター4のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
PTstatusDATA[chara_id] = dfo_PTstatus[4];
tugi='n';
system("CLS");
}
break;
case 5: tugi='n';
system("CLS");
printf("キャラクターの選択をキャンセルしました\n\n");
break;
default:system("CLS");
printf("入力が不正です。\n\n");
tugi='e';
}
}
else
{
system("CLS");
printf("\nこれ以上キャラクターは削除出来ません\n\n");
tugi='b';
}
}
if(tugi!='b')
{
}
}
//------------------------------------
//【ステータス確認キャラ選択】
//------------------------------------
void status_view_cull(void)
{
int st_vi=0; //ステータス閲覧選択肢入力
for( tugi='e' ; tugi=='e' ; )
{
//-----------------------------------
//キャラクターリスト表示
//-----------------------------------
chara_id=0;
if(PTstatus[chara_id]->lv==0)
{
printf("キャラクター1:キャラクターが作成されていません。\n\n");
}
else
{
printf("キャラクター1:『%s』の能力値を見る\n\n",PTstatus[chara_id]->name);
}
chara_id=1;
if(PTstatus[chara_id]->lv==0)
{
printf("キャラクター2:キャラクターが作成されていません。\n\n");
}
else
{
printf("キャラクター2:『%s』の能力値を見る\n\n",PTstatus[chara_id]->name);
}
chara_id=2;
if(PTstatus[chara_id]->lv==0)
{
printf("キャラクター3:キャラクターが作成されていません。\n\n");
}
else
{
printf("キャラクター3:『%s』の能力値を見る\n\n",PTstatus[chara_id]->name);
}
chara_id=3;
if(PTstatus[chara_id]->lv==0)
{
printf("キャラクター4:キャラクターが作成されていません。\n\n");
}
else
{
printf("キャラクター4:『%s』の能力値を見る\n\n",PTstatus[chara_id]->name);
}
printf("どのキャラの能力を見ますか?\n");
printf("キャラクター番号を入力して下さい。\n");
printf(":");
rewind(stdin);
scanf("%d",&st_vi);
system("CLS");
//-----------------------------------
//キャラクター選択結果
//------------------------------------
switch(st_vi)
{
case 1: chara_id=0;
if(PTstatus[chara_id]->lv==0)
{
system("CLS");
printf("キャラクター1のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
status_view();
tugi='n';
}
break;
case 2: chara_id=1;
if(PTstatus[chara_id]->lv==0)
{
system("CLS");
printf("キャラクター2のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
status_view();
tugi='n';
}
break;
case 3: chara_id=2;
if(PTstatus[chara_id]->lv==0)
{
system("CLS");
printf("キャラクター3のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
status_view();
tugi='n';
}
break;
case 4: chara_id=3;
if(PTstatus[chara_id]->lv==0)
{
system("CLS");
printf("キャラクター4のスロットにはキャラクターが作成されていません。\n\n");
tugi='e';
}
else
{
status_view();
tugi='n';
}
break;
default:system("CLS");
printf("入力が不正です。\n\n");
tugi='e';
}
}
}
//===========================================================================
//【ダンジョン選択】
//============================================================================
void dn_cull(void)
{
int max=0;
int hyouji=0;
int i;
battleST[0]=*PTstatus[0];
battleST[1]=*PTstatus[1];
battleST[2]=*PTstatus[2];
battleST[3]=*PTstatus[3];
for (chara_id=0; chara_id<=3 ; chara_id++ )
{
if ( max < PTstatus[chara_id]->lv )
{
max = PTstatus[chara_id]->lv;
}
}
if(max>=1)
{
hyouji++;
if(max>=5)
{
hyouji++;
if(max>=12)
{
hyouji++;
if(max<=20)
{
hyouji++;
}
}
}
}
system("CLS");
for(tugi='e';tugi=='e';)
{
printf("どこのダンジョンへ入場しますか?\n\n");
printf("行きたいダンジョンの数字を入力してenterキーで決定して下さい\n");
for(i=0 ; hyouji>=i ; i++ )
{
switch(i)
{
case 1:printf("ロリエン ・・・1\n");
break;
case 2:printf("グランプリロス ・・・2\n");
break;
case 3:printf("天城 ・・・3\n");
break;
case 4:printf("ベヒーモス ・・・4\n");
break;
}
}
printf(":");
tugi='n';
rewind(stdin);
scanf("%d",&dn_num);
system("CLS");
tugi='e';
if(hyouji<dn_num)
{
printf("入力が不正です。\n");
printf("下記の選択肢の数字から選択して下さい\n\n");
tugi='e';
}
else
{
switch( dn_num )
{
case 1:rorien();
tugi='n';
break;
case 2:guran();
tugi='n';
break;
case 3:amasiro();
tugi='n';
break;
case 4:behi();
tugi='n';
break;
default:tugi='e';
printf("入力が不正です。\n");
printf("下記の選択肢の数字から選択して下さい\n\n");
}
}
}
rewind(stdin);
getchar();
system("CLS");
}
//--------------------------------------------
//【ロリエン】
//-------------------------------------------
void rorien(void)
{
printf("ロリエン\n\n");
printf("ラウンド1\n\n");
printf("攻撃を行います。");
mns_id=0;
chara_id=0;
battle_mnsST=mnsST[0];
while(battle_mnsST.hp>0)
{
rewind(stdin);
getchar();
atk_spd(); //行動順処理
damage_cnt(); //ダメージ計算
}
}
//--------------------------------------------
//【グランプリロス】
//-------------------------------------------
void guran(void)
{
printf("グランプリロス");
}
//--------------------------------------------
//【天城】
//-------------------------------------------
void amasiro(void)
{
printf("天城");
}
//--------------------------------------------
//【ベヒーモス】
//-------------------------------------------
void behi(void)
{
printf("ベヒーモス");
}
//===============================================
//【味方攻撃時ダメージ計算】
//===============================================
void damage_cnt(void)
{
int atk=0; //最終攻撃力
int def=0; //最終防御力
int r=0;
int damage;
srand(( unsigned )time( NULL )); //乱数生成
r=rand()%16;
atk = battleST[chara_id].p_atk + ((battleST[chara_id].p_atk / 100) * r);
def = (battle_mnsST.p_def / 5 * 4) + ((battle_mnsST.p_def / 100) * r);
battle_mnsST.hp = battle_mnsST.hp-( atk - def );
printf("%sに%dのダメージを与えた\n",battle_mnsST.name,atk-def);
if(battle_mnsST.hp>0)
{
printf("%sの体力は%dです",battle_mnsST.name,battle_mnsST.hp);
}
else
{
printf("%sを倒しました",battle_mnsST.name,battle_mnsST.name);
}
rewind(stdin);
getchar();
}
//==================================================
//【素早さ処理】 作りかけ
//=================================================
void atk_spd(void)
{
int i,j;
int wk;
int str[5]={battleST[0].spd,battleST[1].spd,battleST[2].spd,battleST[3].spd,battle_mnsST.spd};
for(j=0;j<4;j++)
{
for(i=0;i<4-j;i++)
{
if(str[i]>str[i+1])
{
wk=str[i];
str[i]=str[i+1];
str[i+1]=wk;
}
}
}
}