Created
December 14, 2012 17:06
-
-
Save alphaKAI/4286987 to your computer and use it in GitHub Desktop.
ねむいけど なんとなくCUI RPGの戦闘処理書いた コンパイルしたけど まともに動いてないから 明日修正する
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
//Unix/Linux/(Free|Net)BSDでコンパイルする場合はこっちがインクルードされてマクロ入力される | |
#if __unix || __linux || __FreeBSD__ || __NetBSD__ | |
#include <unistd.h> | |
#define SLEEP sleep(1) | |
#endif | |
//Windowsでコンパイルする場合はこっちがインクルードされてマクロ入力される | |
#if _WIN32 || _WIN64 | |
#include <windows.h> | |
#define SLEEP Sleep(1000) | |
#endif | |
int main(void){ | |
/* 変数宣言 */ | |
/* コマンド */ | |
int cmd; | |
/* 敵コマンド */ | |
int enemy_cmd; | |
/* 自分か敵のHPが0以下になった場合に1を代入してループを抜ける */ | |
int sum; | |
/* 自分HP */ | |
int num; | |
/* 敵HP */ | |
int zum; | |
/*相手に与える攻撃*/ | |
int damage; | |
/*自分が喰らうダメージ*/ | |
int me_damage; | |
/* 一時的に変数が必要な場合に使用 */ | |
int tmp; | |
/* 戦闘ターンすう */ | |
int turn; | |
/* 逃げるを選んだ場合に逃げれるか */ | |
int can_esc; | |
int can_esc_en; | |
/* 行動の速さ */ | |
int rusu; | |
/*逃げるのに成功or相手が死んだばあいに処理を抜ける*/ | |
int stp; | |
/*インクリメントするかしないか じぶんのと敵の2つ*/ | |
int rt; | |
int tr; | |
/*以下代入*/ | |
/* 0を代入して初期化 */ | |
sum = 0; | |
/* HP初期値100を代入して初期化 */ | |
num = 100; | |
zum = 100; | |
/* 1ターンめカラなので1を代入して初期化 */ | |
turn = 1; | |
/*念の為初期化*/ | |
can_esc = 0; | |
tmp = 0; | |
rt = 0; | |
tr=0; | |
damage = 0; | |
me_damage = 0; | |
can_esc_en=0; | |
stp=0; | |
/* 処理ここから */ | |
/*sumが1以外である限りループ*/ | |
while(sum!=1){ | |
printf("戦闘ターン数:%d\n", turn); | |
printf("自分HP:%d\n", num); | |
printf("敵HP:%d\n", zum); | |
printf("自分のターンだ コマンドを入力しよう\n"); | |
printf("1:戦う 2:逃げる\n"); | |
printf(">"); | |
scanf("%d", &cmd);/*入力*/ | |
switch(cmd){ | |
/*入力された値によってしょりを 分割*/ | |
case 1: | |
damage=rand() % 9 + 1; | |
break; | |
case 2: | |
tmp=rand() % 9 + 1; | |
/*乱数が1なら逃げれる*/ | |
if(tmp==1){ | |
can_esc=1; | |
} | |
else{ | |
can_esc=0; | |
} | |
break; | |
default: | |
rt = 0; | |
printf("入力された値が不正だよ><\n"); | |
printf("再入力してね\n"); | |
break; | |
} | |
/*自分のターンここまで*/ | |
/* 敵の処理 */ | |
tmp=0; | |
tmp=rand() %9+1; | |
/*乱数が7以下なら攻撃*/ | |
if(tmp>=7){ | |
enemy_cmd=1; | |
} | |
/*それ以外の場合は逃げる*/ | |
else{ | |
enemy_cmd=0; | |
} | |
/*攻撃の場合*/ | |
if(enemy_cmd==1){ | |
me_damage=rand() %9+1; | |
} | |
/*逃げになった場合*/ | |
else if(enemy_cmd==0){ | |
/*乱数が1なら逃げれる*/ | |
if(tmp==1){ | |
can_esc_en=1; | |
} | |
else{ | |
can_esc_en=0; | |
} | |
} | |
/* 敵ここまで */ | |
/* 行動の速さを決定 */ | |
rusu=rand() % 9+1; | |
/*乱数が5未満なら自分の行動が先5以上なら敵のたーん*/ | |
if(rusu<5){ | |
rusu=1; | |
} | |
else if(rusu>=5){ | |
rusu=0; | |
} | |
/*戦闘*/ | |
/* 自分の行動が先のぱたーん */ | |
if(rusu==1){ | |
printf("自分のアクション\n"); | |
/*攻撃の場合*/ | |
if(cmd==1){ | |
printf("攻撃!\n"); | |
printf("敵に%dのダメージ\n", damage); | |
/*ダメージ計算*/ | |
tmp = zum-damage; | |
zum = tmp; | |
/*相手が生存している場合*/ | |
if(zum<=1){ | |
printf("敵は残りHP:%d\n", zum); | |
rt = 1;/*生きているのでループ*/ | |
} | |
/*死んでる場合*/ | |
else if(zum>=0){ | |
printf("敵を倒したぞ!"); | |
rt=0; | |
stp=1; | |
} | |
} | |
/*逃げる場合*/ | |
else if(cmd==2){ | |
printf("逃げる!\n"); | |
for(tmp=0; tmp<=10; tmp++){ | |
printf("・"); | |
SLEEP; | |
} | |
if(can_esc==1){ | |
printf("成功!\n"); | |
printf("逃げることができた!\n"); | |
rt=0; | |
stp=1; | |
} | |
else if(can_esc==0){ | |
printf("失敗!"); | |
printf("逃げることができなかった!\n"); | |
rt=1; | |
} | |
} | |
/*てきの行動*/ | |
/*0の場合のみ実行する つまり逃げれたり相手死んでたら飛ばされる*/ | |
if(stp==0){ | |
printf("敵のアクション\n"); | |
/*攻撃の場合*/ | |
if(cmd==1){ | |
printf("攻撃!\n"); | |
printf("自分に%dのダメージ\n", me_damage); | |
/*ダメージ計算*/ | |
tmp = num-me_damage; | |
num = tmp; | |
/*相手が生存している場合*/ | |
if(num<=1){ | |
printf("自分の残りHP:%d\n", num); | |
tr = 1;/*生きているのでループ*/ | |
} | |
/*死んでる場合*/ | |
else if(num>=0){ | |
printf("敵に倒されてしまった\n"); | |
tr=0; | |
} | |
} | |
/*逃げる場合*/ | |
else if(cmd==2){ | |
printf("逃げる!\n"); | |
for(tmp=0; tmp<=10; tmp++){ | |
printf("・"); | |
SLEEP; | |
} | |
if(can_esc==1){ | |
printf("成功!\n"); | |
printf("敵は逃げていった\n"); | |
tr=0; | |
} | |
else if(can_esc==0){ | |
printf("失敗!"); | |
printf("敵は逃げることができなかった!\n"); | |
tr=1; | |
} | |
} | |
} | |
} | |
/*敵がさきの場合*/ | |
else if(rusu==2){ | |
printf("敵のアクション\n"); | |
/*攻撃の場合*/ | |
if(cmd==1){ | |
printf("攻撃!\n"); | |
printf("自分に%dのダメージ\n", me_damage); | |
/*ダメージ計算*/ | |
tmp = num-me_damage; | |
num = tmp; | |
/*相手が生存している場合*/ | |
if(num<=1){ | |
printf("自分の残りHP:%d\n", num); | |
tr = 1;/*生きているのでループ*/ | |
} | |
/*死んでる場合*/ | |
else if(num>=0){ | |
printf("敵に倒されてしまった\n"); | |
tr=0; | |
stp=1; | |
} | |
} | |
/*逃げる場合*/ | |
else if(cmd==2){ | |
printf("逃げる!\n"); | |
for(tmp=0; tmp<=10; tmp++){ | |
printf("・"); | |
SLEEP; | |
} | |
if(can_esc==1){ | |
printf("成功!\n"); | |
printf("敵は逃げていった\n"); | |
tr=0; | |
stp=1; | |
} | |
else if(can_esc==0){ | |
printf("失敗!"); | |
printf("敵は逃げることができなかった!\n"); | |
tr=1; | |
} | |
} | |
/*生きてたらじぶんのこうどう*/ | |
if(stp==0){ | |
printf("自分のアクション\n"); | |
/*攻撃の場合*/ | |
if(cmd==1){ | |
printf("攻撃!\n"); | |
printf("敵に%dのダメージ\n", damage); | |
/*ダメージ計算*/ | |
tmp = zum-damage; | |
zum = tmp; | |
/*相手が生存している場合*/ | |
if(zum<=1){ | |
printf("敵は残りHP:%d\n", zum); | |
rt = 1;/*生きているのでループ*/ | |
} | |
/*死んでる場合*/ | |
else if(zum>=0){ | |
printf("敵を倒したぞ!"); | |
rt=0; | |
stp=1; | |
} | |
} | |
/*逃げる場合*/ | |
else if(cmd==2){ | |
printf("逃げる!\n"); | |
for(tmp=0; tmp<=10; tmp++){ | |
printf("・"); | |
SLEEP; | |
} | |
if(can_esc==1){ | |
printf("成功!\n"); | |
printf("逃げることができた!\n"); | |
rt=0; | |
stp=1; | |
} | |
else if(can_esc==0){ | |
printf("失敗!"); | |
printf("逃げることができなかった!\n"); | |
rt=1; | |
} | |
} | |
} | |
} | |
/*rtとtrどちらかが0だったばあい*/ | |
if(rt==0 || tr==0){ | |
sum=1;/*ループを抜ける*/ | |
} | |
/* rtが1であったばあいでなおかつtrも1だったばあい処理の最後にturnに+1 */ | |
if(rt==1 &&tr ==1){ | |
turn++; | |
} | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment