Skip to content

Instantly share code, notes, and snippets.

@alphaKAI
Created December 14, 2012 17:06
Show Gist options
  • Save alphaKAI/4286987 to your computer and use it in GitHub Desktop.
Save alphaKAI/4286987 to your computer and use it in GitHub Desktop.
ねむいけど なんとなくCUI RPGの戦闘処理書いた コンパイルしたけど まともに動いてないから 明日修正する
#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