VR部プログラミング勉強会
今回ブログを担当します、三年のなおしです。
紹介する内容はプログラミング勉強会です。 勉強会では部活のみなさんのサポートがあったのでとても助かりました。 また、新入生からの質問などで私自身の復習、反省にもなりました。
勉強会で行った内容はC言語の基本的な文法
1 出力 / 入力
2 if文 / switch文
3 for文 / while文
4 配列
5 関数
6 構造体
です。 これらの機能をもとに、簡単なゲームを作成しました。
よくあるターン制のゲームを真似て作りました。
このプログラムでは配列以外のすべての内容を使いました。
まずは、キャラクターの構造体を作ります。
typedef struct { int HP; int panch; int kick; int destroybeam; }Character;
この構造体を使って、プレイヤーとモンスターを宣言しそれぞれステータスを設定します。
次に、while文で無限ループを作ります。ループ内では、モンスターの出力、プレイヤーの出力、攻撃方法の入力、プレイヤーの攻撃、モンスターの攻撃を順に行います。
モンスターとプレイヤーの出力では関数を使って出力しました。例えば、モンスターの出力では
void printMonster(int HP) { printf("モンスター\n"); printf("\n"); printf(" \\_\\ ☆ ---------------\n"); printf(" (^q^)/ < 楽にしてやろう|\n"); printf(" -- ( )/ ---------------\n"); printf(" /|\n"); printf("\n"); printf("HP:%d\n", HP); }
と、しました。
次に、攻撃方法の入力を行います。入力された値をもとにswitch文を使ってダメージを求めます。もし、指定されていない入力がされた場合はcontinue文を使って入力をやり直します。
scanf("%d", &attack); switch(attack){ case 1: dmg = player.panch; break; case 2: dmg = player.kick; break; case 3: dmg = player.destroybeam; break; } if(attack < 1 || 3 < attack){ printf("入力が間違っています。\n"); continue; }
ダメージを求めたら、ダメージ分の値をモンスターの体力から引きます。もし、このときモンスターの体力が0以下になればbreak文を使ってループから抜け出します。 また、同じようにプレイヤーもダメージを受けて、体力が0以下になればループから抜け出します。
printf("モンスターは %d のダメージを受けた\n", dmg); monster.HP -= dmg; if(monster.HP <= 0){ printf("モンスターを倒した!\n"); break; } printf("モンスターの攻撃! %d のダメージを受けた\n", monster.panch); player.HP -= monster.panch; if(player.HP <= 0){ printf("あなたは力尽きた!\n"); break; }
これで、while文を閉じればゲームが完成です!
また、乱数を使用することで攻撃力に幅を持たせり、モンスターが様々な攻撃を行うようにできます。
このプログラムの他に、2次配列をしようしてマップを作りました。
以上の機能を使えばオセロなども作成することもできます。
プログラミングは大変ではありますが、何かを作り始めると楽しくなります。私も前にカードゲームなどを作ってみたことがあります。 「これプログラムにできるんじゃね?」と思ったらプログラミングしてみましょう!