#include #include #include double calc_n(); struct character{ char name[20]; double shuzoku,kotai,doryoku; int HP; double level; }; int main(){ int difficulty,number1,attack=0,HP1=300,HP2=600,HP3=1000; printf("\n\n目指せ!ポケモンマスター!\n\n"); printf("\t<<<<<ルール>>>>>\n\tあなたの手持ちポケモン3体で対戦相手のポケモン1体を倒してください。\n\t相手のポケモンのHPが0になればあなたの勝ちです。\n\tあなたのポケモンが3体ともHPが0になればあなたの負けです。\n\t本家のように途中でポケモンを入れ替えることはできません(ごめんなさい)。\n\tしかしどのポケモンを出すか、またどの技を出すかは選ぶことができます。\n\tあなたのポケモンたちは5ターンごとに強力な必殺技が使えます。\n\t効果的に使ってバトルに勝利しましょう!\n\n"); printf("\t注:入力はすべて半角英数字で行ってください。バグります。\n\n\n"); printf("難易度を選んでください。\n1⇒初級\n2⇒中級\n3⇒上級\n"); scanf("%d",&difficulty); struct character c[3]; int i,counter=0; double s,k,d,lv,nouryoku[3]; char n[20]; for(i=0;i<3;i++){ printf("あなたの手持ちポケモンの%d匹目の情報をキャラ名、種族値、個体値、努力値、レベルの順に入力してください。\n",i+1); scanf("%s %lf %lf %lf %lf",n,&s,&k,&d,&lv); strcpy(c[i].name,n); c[i].shuzoku=s; c[i].kotai=k; c[i].doryoku=d; c[i].level=lv; c[i].HP=100; } nouryoku[0]=calc_n(c[0]); nouryoku[1]=calc_n(c[1]); nouryoku[2]=calc_n(c[2]); printf("\n\nあなたのポケモンたちです。\n%s\tHP:100\t通常攻撃:%.0f\t必殺技:%.0f\n%s\tHP:100\t通常攻撃:%.0f\t必殺技:%.0f\n%s\tHP:100\t通常攻撃:%.0f\t必殺技:%.0f\n\n\n",c[0].name,nouryoku[0],nouryoku[0]+100,c[1].name,nouryoku[1],nouryoku[1]+100,c[2].name,nouryoku[2],nouryoku[2]+100); printf("\t*****バトルスタート!!*****\t\n\n"); if(difficulty==1){ printf("コイキングがあらわれた!\tHP:300\n"); while(c[0].HP>0||c[1].HP>0||c[2].HP>0){ if(HP1==0){ break; } printf("どのポケモンを出す?\n0⇒%s\t1⇒%s\t2⇒%s\n",c[0].name,c[1].name,c[2].name); scanf("%d",&number1); printf("%s[HP:%d]VSコイキング[HP:%d]!\n通常攻撃⇒0\t必殺技⇒1\n",c[number1].name,c[number1].HP,HP1); while(c[number1].HP>0){ counter++; printf("%sはどの攻撃をする?\n",c[number1].name); scanf("%d",&attack); HP1-=nouryoku[number1]; if(attack==1&&counter>=5){ HP1-=100; counter=0; } if(attack==1&&counter<5){ printf("チャージが足りない!通常攻撃になった!\n"); } if(HP1<0){ HP1=0; } printf("%sの攻撃!コイキングのHPは%dになった!\n",c[number1].name,HP1); if(HP1==0){ break; } c[number1].HP-=30; if(c[number1].HP<0){ c[number1].HP=0; } printf("コイキングの攻撃!%sのHPは%dになった!\n",c[number1].name,c[number1].HP); } } if(HP1==0){ printf("コイキングは気絶した!\nバトルに勝利!!おめでとう!!!\n"); } else{ printf("手持ちポケモンがみんな気絶した!\nバトルに負けた!!残念!!!\n"); } } else if(difficulty==2){ printf("ピカチュウがあらわれた!\tHP:600\n"); while(c[0].HP>0||c[1].HP>0||c[2].HP>0){ if(HP2==0){ break; } printf("どのポケモンを出す?\n0⇒%s\t1⇒%s\t2⇒%s\n",c[0].name,c[1].name,c[2].name); scanf("%d",&number1); printf("%s[HP:%d]VSピカチュウ[HP:%d]!\n通常攻撃⇒0\t必殺技⇒1\n",c[number1].name,c[number1].HP,HP2); while(c[number1].HP>0){ counter++; printf("%sはどの攻撃をする?\n",c[number1].name); scanf("%d",&attack); HP2-=nouryoku[number1]; if(attack==1){ HP2-=100; counter=0; } if(attack==1&&counter<5){ printf("チャージが足りない!通常攻撃になった!\n"); } if(HP2<0){ HP2=0; } printf("%sの攻撃!ピカチュウのHPは%dになった!\n",c[number1].name,HP2); if(HP2==0){ break; } c[number1].HP-=60; if(c[number1].HP<0){ c[number1].HP=0; } printf("ピカチュウの攻撃!%sのHPは%dになった!\n",c[number1].name,c[number1].HP); } } if(HP2==0){ printf("ピカチュウは気絶した!\nバトルに勝利!!おめでとう!!!\n"); } else{ printf("手持ちポケモンがみんな気絶した!\nバトルに負けた!!残念!!!\n"); } } else{ printf("カイリューがあらわれた!\tHP:1000\n"); while(c[0].HP>0||c[1].HP>0||c[2].HP>0){ if(HP3==0){ break; } printf("どのポケモンを出す?\n0⇒%s\t1⇒%s\t2⇒%s\n",c[0].name,c[1].name,c[2].name); scanf("%d",&number1); printf("%s[HP:%d]VSカイリュー[HP:%d]!\n通常攻撃⇒0\t必殺技⇒1\n",c[number1].name,c[number1].HP,HP3); while(c[number1].HP>0){ counter++; printf("%sはどの攻撃をする?\n",c[number1].name); scanf("%d",&attack); HP3-=nouryoku[number1]; if(attack==1){ HP3-=100; counter=0; } if(attack==1&&counter<5){ printf("チャージが足りない!通常攻撃になった!\n"); } if(HP3<0){ HP3=0; } printf("%sの攻撃!カイリューのHPは%dになった!\n",c[number1].name,HP3); if(HP3==0){ break; } c[number1].HP-=90; if(c[number1].HP<0){ c[number1].HP=0; } printf("カイリューの攻撃!%sのHPは%dになった!\n",c[number1].name,c[number1].HP); } } if(HP3==0){ printf("カイリューは気絶した!\nバトルに勝利!!おめでとう!!!\n"); } else{ printf("手持ちポケモンがみんな気絶した!\nバトルに負けた!!残念!!!\n"); } } printf("また遊んでね!\n /::∥_____\n/::::∥      ∥\n|:::::∥ガチャッ ∥\n|:::::∥ /) /)∥\n|:::::∥ / ⌒ ヽ∥\n|:::::∥|●_ ● ∥ BYE!!\n|:::::∥(〇 ~ 〇∥\n|:::::と_/    ∥\n|:::::∥|   L/∥\n|:::::∥ \   ∥\n\::::∥  L/ ̄L/∥\n \::∥ ̄ ̄ ̄ ̄ ̄\n  \∥\n"); } double calc_n(struct character x){ double n; n=((x.shuzoku*2+x.kotai+x.doryoku/4)*x.level)/100+x.level+10; return n; }