スポンサーリンク

OpenGLで自己学習型オセロAI  §7「リスタート」

目標

前回のセクションでゲームの終了が可能になりましたが、このままではゲームをもう一度する場合に再起動の必要があります。そこで、今回のセクションで[Shift + R]でリスタートができるようにします。

実行結果

ゲームが終了した後[Shift] + [R] の入力するとリスタートし、コマンドラインに新しいゲームが始まったことが報告されます。

ソースコード

解説

関数の定義[59]

[59] void keyboard(unsigned char key, int x, int y);

詳しくは後述しますが、キーボードの入力を検知する関数を定義します。

キーボード関連[300]-[311]

キーボードからの入力を受け取る関数です。関数を設定する(後述)ことでキーが入力された、押された時に関数が呼び出されます。その際そのキーの情報(ASCII code)とX,Y座標を返します。

[303]-[311] void keyboard(unsigned char key, int x, int y){}
関数の定義です。今回は引数としてkey, x, yを定義します。

[304]-[310] if(gamemode == STOPGAME){}
ゲームが終了している場合のみリスタートできるように設定します。書かない場合はゲームの途中でもリスタートしないようになります。

[305]-[306] if(key == ‘R’){}
keyを参照してその中身、押されたキーがRである場合のみ実行します。この時大文字で記入するとShiftを同時に押した場合のみとなります。簡単に言うと普段の入力方法と同じと言うことです。そのため、Shiftなしでリスタートしたい場合は小文字で任意の文字を使用してください。

[307] gamemode = PLAY_PVP;
ゲームモードを更新します。

[308] reset();
リセット関数を呼び出します。

キーボード関数を登録[335]

[335] gutKeyboardFunc(keyboard);
キーボードの呼び出し関数を登録します。登録することでキーが押された時にその関数が呼び出されます。

一段落

ここまでのセクションで基本的なオセロが開発できました。オセロを作ってみたい!って方はこれで十分なオセロが開発できたと思います。今後はAI開発に向けてコードを書いていきます。勝敗判定等が表示されていませんが、それらはsection9(未作成)で行うため、必要であればそちらを参照してください。

次回予告

次回はAIと対戦したり、AI同士を対戦させるなどのゲームモードを一度実装します。ただ、その後の開発中に多少変更があるので、あまり深くは考えなくても構いません。

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)