12/18>>
・バトルモジュール作成に関して、switch文からfor文に変更
・構造体をポインタで宣言
・switch文からfor文にしたらプログラムが比較的すっきりしました。
<<1/8>>
担当モジュール:バトル(クイズ)モジュール
バトル(クイズ)モジュール
バトル(最終試験)に移行した際にこのモジュールを持ってくる。
まずはじめに相手側からのセリフを発言する。
その後バトルへ移行。
バトルの進行はターン制としており、相手のターン周期に関しては
プレイヤーのステータスに応じて決めていく。
毎ターンごとに問題が出題され、問題を正解すると相手にダメージを与えることができるが、
間違えると相手側のセリフが現れる。(「問題を間違えるな」など。)
なお、この時にはプレイヤー側にはダメージは発生しない。(相手のセリフが発現されるだけ。)
アイテムを使用する際は他のモジュールで宣言しているものを使用する。
相手ターンが0になった場合は相手側からのセリフが発現された後にダメージを食らう。
そして、最終的に相手のライフが0になったら勝利し、
プレイヤーのライフが0になったら敗北(ゲームオーバー)する。
それぞれに応じたセリフがその後発言される。
<<1/22>>
クイズモジュールを新たに作成(問題分は今のところ30問ほど)
バトルモジュール内に新たにitem関数を作成。
item関数を作成した理由としては、他のモジュールとの干渉が多いため。
バトルモジュールのヘッダファイルは以下となります。
-----ヘッダファイル-----
#ifndef BATTLE_H
#define BATTLE_H
int battle();
/*バトル(関数)
バトル(最終試験)に移行した際にこのモジュールを持ってくる。
まずはじめに相手側からのセリフを発言する。その後バトルへ移行。バトルの進行はターン制としており、相手のターン周期に関しては
プレイヤーのステータスに応じて決めていく。毎ターンごとに問題が出題され、問題を正解すると相手にダメージを与えることができるが、
間違えると相手側のセリフが現れる。(「問題を間違えるな」など。)なお、この時にはプレイヤー側にはダメージは発生しない。(相手のセリフが発言されるだけ。)
相手ターンが0になった場合は相手側からのセリフが発現された後にダメージを食らう。そして、最終的に相手のライフが0になったら勝利し、
プレイヤーのライフが0になったら敗北(ゲームオーバー)する。それぞれに応じたセリフがその後発言される。
*/
int item();
/*アイテム関数
アイテムを使用する際に、他のモジュールと統合するために、関数として宣言する。
*/
#endif
<<2/5>>
アイテム関数を作成した。
プログラミングは以下のとおりである。(未完成)
item.c
#include
int item(int use_item) {
switch (use_item){
extern int question; //これを利用して正解番号を把握する。(%5をして、そのあまりが正解番号となる。)
extern typedef struct{
}player;
extern typedef struct{
}enemy;
extern int HPMAX;
int true_answer;
int false_answer;
int cheat;
int i;
true_answer = question % 5;
cheat = rand()%5;
for (i=0; i>100; i++){
false_answer = rand()%5;
if(false_answer != 0 && question - false_answer != 0)
break;
}
//過去問→2択になる
case 1 : printf("過去問を使った!\n");
printf("正解は%dまたは%dのどちらかです!\n", true_answer, false_answer);
return false_answer;
break;
//カンペ→答えわかる
case 2 : printf("カンペを使った!\n");
printf("正解は%dです!\n", true_answer);
return true_answer;
break;
//コロコロ鉛筆→動画作成。1~4までの動画を作る。
case 3 :
break;
//十七茶→HP大回復(最大HPの30%回復)
case 4 : HP = HP + (HP / 30);
break;
//ブルー・ブル→hpMax回復
case 5 : HP = HPMAX;
break;
//カンニング 答えわかる(20%でバレる=ゲームオーバー)
case 6 : if(cheat == 0){
printf("カンニングがバレた!\n");
printf("先生「処分については後日連絡する」\n");
printf("主人公「(終わった…… ) 」\n");
HP = 0;
}
else if{
printf("主人公「正解は%dみたいだな…」\n"true_answer);
}
break;
//コネ 即勝ち
case 7 : printf("先生「君、合格でいいよ。」\n");
printf("主人公「ありがとうございます!!!」\n");
hp = 0;
break;
//友人のノート 知力(攻撃力up)
case 8 : IQ = IQ * 1.3;
break;
//弱み 相手の攻撃力減少
case 9 : power = power * 0.6;
break;
//アッコさん弁当 ターンを+2にする
case 10 : turn = turn + 2;
break;
}
}
<<2/17>>
統合により、大幅なプログラム変更を行った。
班員の協力により統合後のプログラムが概ね完成
担当モジュール、バトルモジュールのヘッダファイルは以下の通り。
[[g02:ヘッダファイル battle.h]]
<<感想>>
班員の中にプログラミングに関する理解が深い人がいて、その人に頼りっぱなしの状況でした。
しかし、その中で自分でもできることを探して、ある程度は班のプログラムに貢献できたと思います。
RPGは簡単だと言っていましたが、そんなことはなかったです。
この講義では実習の他に先生からのGTKの講習がありましたが、もう少し生徒にやらせる形を
とったほうがいいと思います。ただ説明を流しているようにしか感じませんでした。