/*TeRes PG班 第7回(だよね?)講義*/
/* 今回はせっかくなんで簡単なゲームを作ってみました 戦闘システムはデ○モンTCGをちょっとパクってたり…w */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIFFICULT 5 // CPUは"1/DIFFICULT"の確立でこちらの手を読みます
/* あれ? main()の外に初期化がある…と気づいてもスルーしてください
※次回説明予定です */
int chara[2][4]={{1000,400,250,0},{1000,400,250,0}}; int x,y;
/* 今回は関数について講義します
定義は以下のとおり 戻り値 関数名(引数){んにゃんにゃ~;return 式;} んじゃどんなもんか見てみましょう */
int input(void){// ← 戻り値 関数名(引数){
printf("攻撃方法を1~3から選択してください\n"); printf("1:400\n2:250\n3:0(相手が1なら反射)\n"); scanf("%f",&x); while(x<1||x>3){ printf("erorr!\n\n"); x=input();//こんな感じで関数内で同じ関数を呼び出すことも可能です } /* 戻り値って何? 戻り値ってのは関数から呼び出し元の関数に返す情報のことです 戻り値の型は関数の最初に定義しなきゃいけません 戻り値は必ず1つだけですが、下のようなことはできます if(~){return x;} else{return y;} */ return x;// ← return 式;
}
/* ここで引数について説明~ 引数ってのは呼び出し元の関数から呼び出された関数に渡す値のことです
引数は呼び出された関数内のみで使える変数になります ちなみに下の関数みたいに複数個設定することができます */
void battle(int x/*引数1*/,int y/*引数2*/){// ← 戻り値 関数名(引数){
if(x==3 && y==1) chara[1][0]-=chara[1][1]; else if(x==1 && y==3) chara[0][0]-=chara[0][1]; else{ chara[0][0]-=chara[1][y]; chara[1][0]-=chara[0][x]; } /* 戻り値がvoidなのでreturn 式;は省略できます */
}
int main(void) {
srand(time(NULL));//乱数列の初期化だぜ while(chara[0][0]>0 && chara[1][0]>0){ printf("YOU HP:%4d\nENEMY HP:%4d\n\n",chara[0][0],chara[1][0]); /* ではここで関数の呼び出し方です 関数名(引数);とすることで関数の呼び出しができます */ x=input();//こいつはxにinput()のreturnを代入するって感じ y=rand()%DIFFICULT+1;//CPUの後出し判定 if(y==1){ if(x==1) y=3; if(x==2) y=1; if(x==3) y=2; } else//失敗したらランダムに手を選択 y=rand()%3+1; battle(x,y);// 同じく関数呼び出し 戻り値がないからこの表記 } printf("\nYOU HP:%4d\nENEMY HP:%4d\n\n",chara[0][0],chara[1][0]); if(chara[0][0]<=0 && chara[1][0]<=0) printf("DRAW\n"); else if(chara[0][0]<=0) printf("YOU LOST\n"); else printf("YOU WIN\n"); return 0;
}
/* 自分は毎回言ってますがプログラムはやらなきゃ覚えません
今回は無理やり関数使ってるだけなんで、関数部分は前回までの講義内容で置き換え可能です んで、このぐらいの簡単なゲームなら1時間もあれば組めると思います どうせ音楽の時間なんかは暇なんだから自分で考えたプログラムをノートとかに書いてみてください 実際にコンパイルしたら動かなかったとしてもスキルは上がるはずなので… 自分も音楽の時間とか教習所の座学の時間に書いて覚えましたw あとは参考書買って無い人は買っておくことをホントにお勧めします 退屈な授業中の暇つぶしにもなる貴重な一冊です ところでそろそろゲームを作っていける段階まで進んできたので皆さんの構想を聞きたいです あと3~4回ぐらい講義したらやりたいこと聞く予定なんでなんか考えておいてください */