資料整理してたらふるーいソース出てきたのでここに残す
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define KIZUGUSURI 5
#define MONSTER 5
short input_1,input_2,random,par,W;
short damage=0,command=0,game=0,myturn=0,next;
short mo_code;
short win=0;
struct charactor
{
char name[20];
char level;
short hp,kou,bou,spd;
short par_kou,turn;
short item_01;
};
struct charactor *po_mo,*po_pl;
struct charactor player =
{"主人公",1,50,5,3,3,4,1,5};
struct charactor monster[MONSTER] =
{
{"ゴブリン" ,1,30,5,3,3,4,1,3},
{"スライム" ,1,20,4,4,4,6,1,2},
{"フライ" ,1,25,4,3,6,4,2,0},
{"マイコニド",1,30,3,6,3,8,1,0},
{"怪魚" ,1,15,7,4,5,4,2,0}
};
struct challenger
{
short level;
short hp,kou,bou,spd;
short turn;
short item_01;
};
struct challenger vs_pl;
struct challenger vs_mo;
short attack_check(short,short,short);
void attack();
void item1();
void entory();
void main(void)
{
for(;;)
{
while(!game)
{
printf("the VSゲーム\n");
printf("1:ゲームを始める\n");
scanf("%d",&input_1);
switch(input_1)
{
case 1:
game=1;
break;
default:
printf("\n\n\n");
break;
}
win=0;
}
while(game)
{
entory();
printf("%s",po_mo->name);
printf("が現れた!!\n");
next=0;
while(game && !next)
{
vs_pl.turn = po_pl -> turn;
vs_mo.turn = po_mo -> turn;
while(command==0)
{
printf("\n[あなた HP:%d/%d] ",vs_pl.hp,po_pl -> hp);
printf("[%s HP:%d/%d]\n\n",po_mo->name,vs_mo.hp,po_mo->hp);
printf("どうしますか \n 1:戦う 2:アイテム 3:ステータス 4:逃げる\n>");
scanf("%d",&input_1);
/*** コマンド入力 ***/
switch(input_1)
{
case 1: /*戦う*/
input_1 = 1;
command=1;
break;
case 2:/*アイテム*/
input_1 = 2;
printf("何を使いますか?\n");
if(vs_pl.item_01)
{
printf("1:傷薬 ×%d\n",vs_pl.item_01);
}
printf("0:キャンセル\n");
scanf("%d",&input_2);/*アイテムに行かない原因*/
switch(input_2)
{
case 1: /*傷薬*/
input_2 = 1;
if(vs_pl.item_01)
{ command=1; }
else
{ printf("\n"); }
break;
case 0: /*キャンセル*/
printf("\n\n");
break;
default :
printf("\n");
}
break;
case 3: /*ステータス*/
printf("レベル :%d",po_pl -> level);
printf("攻撃力 :%d 防御力 :%d \n素早さ :%d",vs_pl.kou,vs_pl.bou,vs_pl.spd);
printf(" 現在%d連勝中\n",win);
break;
case 4: /*逃げる*/
command=1;
break;
default :
printf("\n");
break;
}
}
command=0;
/************************/
/* 戦闘シーン */
/************************/
while(game)
{
while(vs_pl.turn || vs_mo.turn)
{
/*自分のターン*/ if((vs_pl.turn && (vs_pl.spd > vs_mo.spd)) || !vs_mo.turn)
{
W = 0;
myturn=1;
switch(input_1)
{
case 1: /*戦う*/
attack();
break;
case 2: /*アイテム*/
printf("abd");
switch(input_2)
{
case 1: /*傷薬*/
item1();
break;
default:
printf("cckc");
}
break;
case 4:/*逃げる*/
srand(time(NULL));
random = (rand()%10 + (po_pl -> par_kou));
if(random >= 10)
{
printf("は逃げ出した…\n");
vs_pl.turn = vs_mo.turn = 0;
game=0;
}
else
{
printf("\nあなたは逃げるのに失敗した…\n");
}
break;
default:
printf("miss");
}
vs_pl.turn--;
myturn=0;
}
/*敵のターン*/
else{
if(vs_mo.turn)
{
if(vs_mo.hp <= po_mo -> hp - KIZUGUSURI && vs_mo.item_01)
{
item1();
}
else
{
attack();
}
vs_mo.turn--;
W = 1;
}
}
if(vs_pl.hp<=0 && game)
{
printf("あなたの負け…\n\n\n\n\n\n");
vs_pl.turn = vs_mo.turn = 0;
game=0;
}
if(vs_mo.hp <= 0 && game)
{
printf("あなたの勝利!!\n\n");
vs_pl.turn = vs_mo.turn = 0;
win++;
next=1;
}
}
break;
}
}
}
}
}
short attack_check(short kou,short bou,short kakuritu)
{
short damage=0,lucky=0;
srand(time(NULL));
lucky=(rand()%10)+kakuritu;
if(lucky>=10)
{
par = 1;
damage += (kou-1)/2+1;
}
damage+=kou-bou;
if(damage<=0)
{
srand(time(NULL));
random = (rand()%10);
if(random <=5)
damage=1;
else
damage=0;
}
return damage;
}
void attack()
{
if(myturn)
{
damage = attack_check(vs_pl.kou,vs_mo.bou,po_pl->par_kou);
if(W)
{
printf("\n連続攻撃!!\n");
}
else
{
printf("%sの攻撃!!\n",player.name);
}
if(damage)
{
if(par)
printf("会心の一撃!!\n");
printf("%sに%dポイントのダメージを与えた!!\n\n",po_mo->name,damage);
vs_mo.hp -= damage;
}
else
{
printf("しかし、失敗に終わった…");
}
par = 0;
}
else
{
damage=attack_check(vs_mo.kou,vs_pl.bou,po_mo -> par_kou);
printf("%sの攻撃!!\n",po_mo -> name);
if(damage)
{
if(par)
printf("痛恨の一撃!!\n");
printf("%sは%dポイントのダメージを受けた!!\n\n",po_pl -> name,damage);
vs_pl.hp -= damage;
}
else
{
printf("しかし、失敗に終わった…");
}
}
}
void item1()
{
if(myturn)
{
printf("%s",po_pl->name);
}
else
{
printf("%s",po_mo->name);
}
printf("は『傷薬』を使った!!\n");
printf("HPが回復した!!\n");
if(myturn)
{
vs_pl.hp += KIZUGUSURI;
vs_pl.item_01--;
if((po_pl -> hp) < vs_pl.hp)
{
vs_pl.hp = (po_pl -> hp);
}
}
else
{
vs_mo.hp += KIZUGUSURI;
vs_mo.item_01--;
if(po_mo -> hp < vs_mo.hp)
{
vs_mo.hp = po_mo -> hp;
}
}
}
void entory()
{
if(!win)
{
po_pl = &player;
vs_pl.level = po_pl -> level;
vs_pl.hp = po_pl -> hp;
vs_pl.kou = po_pl -> kou;
vs_pl.bou = po_pl -> bou;
vs_pl.spd = po_pl -> spd;
vs_pl.turn = po_pl -> turn;
vs_pl.item_01 = po_pl -> item_01;
}
srand(time(NULL));
mo_code=(rand()% MONSTER);
po_mo = &monster[mo_code];
vs_mo.hp = po_mo -> hp;
vs_mo.kou = po_mo -> kou;
vs_mo.bou = po_mo -> bou;
vs_mo.spd = po_mo -> spd;
vs_mo.turn = po_mo -> turn;
vs_mo.item_01 = po_mo -> item_01;
}