AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

クイズゲーム

今回は趣向を変えて、
クイズゲームを作ってみました。

http://rafeel.s602.xrea.com/webplay.html
WebPlayer版もビルドしたので実際に遊べます。
問題は2600問ぐらい入ってます。
難易度はかなり高いです。


f:id:yasu9780:20150504012457p:plain

uGUIの勉強で前から少しづついじってたのですが、
今遊んでいる某社のクイズゲームの攻略wikiにクイズがあったんで
そのデータをお借りしました(というか本番のための暗期練習に使えます)
せっかくunityなのでunity-chanもお借りしました。

uGUIの構造としては、Canvas→Panel→クイズの問題、選択ボタン
といった構造
パネルは、解答用とジャンル選択用があって、初めはジャンル選択用を表示させて、
パネルの表示・非表示でメニューを切り替えてます。


正解とか不正解なんかの文字。縁取りや影つけもできます。
文字を大きくするとややボケますね。
fontサイズで直接大きくしても20ぐらいから大きくならないので
Scaleで大きくしてるんだけど、なんか間違ってるのかな?
あと、漢字のfontがなんか変な気がする。なんか中国語みたいな日本語。


【Unity開発】uGUIのTextまとめ【ひよこエッセンス】 - ひよこのたまご Unity5(C#)でゲーム開発入門
こちらを読んで分かりましたが、テキストを表示するエリアを大きくしてないから
fontサイズを大きくすると表示されない模様。解決しました!



あと、音を初めて出してみました。正解音、不正解音
さすがゲームエンジンなのですごい簡単に出ました。


問題の読み込みです
問題はテキストファイルをResourcesフォルダに置いて、読み込んでます。"/"でjoinされたCSVファイルになります。

qq=new ArrayList();
TextAsset csv = Resources.Load("qow") as TextAsset;
StringReader reader = new StringReader(csv.text);
while(reader.Peek()>-1) {
	qq.Add ( reader.ReadLine() );
}


問題の構造は、

ジャンル番号/問題/答え/選択肢1/選択肢2/選択肢3

になります。すべて四択問題です。


まず問題全体から任意の問題を選び、ジャンルを表示します
(ジャンル限定ではこの時に特定ジャンルで縛ります)
次に選択した問題の答えと誤答選択肢を、
4つのボタンにランダムに配置します。

string qqq=(string)qq[no];
string[] values = qqq.Split('/');
GameObject.Find ("SectionText").GetComponent<Text>().text=Section[ int.Parse(values[0]) ];
string atxt = "";
string atxt1 = "";
string atxt2 = "";
string atxt3 = "";
int mode = Random.Range (0, 10);
if (mode == 0)
{
	atxt=values[2];GoodNo=1;
	atxt1=values[3];
	atxt2=values[4];
	atxt3=values[5];
}
…
quizText="問題: "+(string)values[1];
bt1.text = atxt;
bt2.text = atxt1;
bt3.text = atxt2;
bt4.text = atxt3;

あとはボタンをクリックしたタイミングで、答えとあっているか判定し
合っていれば、「正解」表示、正解音、unitychanがWINモーションといった感じです