お世話になっております。
オセロ自分のターンを管理する方法で悩んでいます。
リバースできた回数とリバースできなかった回数で奇数、偶数でもいいとは思うのですが他に応用が利かないため他にないかと思っております。
何かいい方法がありますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
単純にプレイヤーが移り変わる旅に、int型の変数(下記の例ではplayerChangeCounter)をインクリメントしていったらいいのではないでしょうか。
下記のようにして、PLAYER_COUNTにきちんとゲームの人数さえ入れてあげれば、そのゲームが何人で行うゲームであっても、今何ターン目で、誰の番か、何手順目かといった情報を全て管理できます。
3人麻雀、4人麻雀、もっと大人数で行うターン制のカードゲームなどでも、そのまま使えます。
Java
1/** 2 * プレイヤーの人数(オセロ、チェス、将棋などは2、四人麻雀は4、三麻は3) 3 */ 4private static final int PLAYER_COUNT = 2; 5/** 6 * ターン管理用変数 7 * 初期値を0とする。コマを置いた回数(麻雀牌を引いた回数)が入る。 8 */ 9private int playerChangeCounter = 0; 10 11private void changePlayer() { 12 playerChangeCounter++; 13 14 /* 15 * 今何ターン目かを表すturn変数 16 * 例:オセロの場合、 17 * playerChangeCounterが 0と1は1ターン目、2と3は2ターン目、4と5は3ターン目となる。 18 */ 19 int turn = (playerChangeCounter / PLAYER_COUNT) + 1; 20 21 /* 22 * 今、何番手のプレイヤーかを表す変数 23 * 例:オセロの場合、 24 * playerChangeCounterが 0, 2, 4...は1番目のプレイヤー(先攻) 25 * 1, 3, 5...は2番目のプレイヤー(後攻)ができる 26 */ 27 int player = (playerChangeCounter % PLAYER_COUNT) + 1; 28 String strPlayer = player==0 ? "先攻" : "後攻" 29 30 system.out.println("今" + turn + "ターン目で、" + strPlayer + "のプレイヤーの番です。"); 31} 32
投稿2016/03/26 02:47
編集2016/03/26 02:50総合スコア907
0
提示する案は2つあります.
1.ターン管理変数を使って
何ターン目,みたいな管理はするんじゃないですか?
そしたらそのターンカウンタを2で割った余りを使って,
1ターン目/2→余り1→自分
2ターン目/2→余り0→相手
3ターン目/2→余り1→自分
:
とする.
これ,結構自分では使ってて,制御ループのウチ,制御ループカウンタが
5の倍数の時は画面更新,
10の倍数の時はログファイル保存
とかやってます(5で割った余りが0,10で割った余りが0).
2.フリップフロップ変数を用いる
使い古されたターン管理ですけど,
turn = 1 - turn
初期値がturn = 0
処理が終わったら前述のコードを実行,するとturnは1-0で1に,
次の処理が終わったら前述のコードを実行,するとturnは1-1=0に…
これ,ポケコン(電卓にBASIC言語が乗っているすごいやつ)時代に見かけて,なんぞこれー!と思ったコードで,今でも愛用しています.
参考になれば.
投稿2016/03/26 01:50
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自分のターンが分かれば良いと言う事でしたら、
ターン管理用の変数に1:自分のターン、-1:相手のターンと定義して
ターン交代のタイミングで、ターン管理用の変数に-1をかけるで良いのでは?
またオセロぐらいなら、検索するとソースプログラムが色々引っかかりますので
他の方はどうしているか、参考に見てみたらどうでしょうか。
投稿2016/03/26 01:15
総合スコア60
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/26 10:17