現在課題にてJavaでオセロを作成しております。
最終的な課題としては、コンピューター同士を戦わせることです。
またその際に条件があり、
1・指定の動作で作る。(コンピューターの強さをある程度強くするため)
2・CSVファイルで読み取った、盤面に格納されている優先順位から駒を置いていけるように。
3・今後先読みの処理を加えるため、コンピューターが配置する直前に2秒の空き時間を作る。
オセロ自体の処理・コンピュターの処理は完了しており現在は3の動作を作成しております。
こちらでは失敗したコードではなく、現状タイマーを実施していないコードを作成しています。
実際に行ったことは、
(//盤面描写)の直前に2秒スリープするコードを実行しました。そのコードは二つ目の引用に載せています。
結果として、全てのコンピューターの処理が終わった後に、コンピューターのやり取りの数だけ、遅れて”テスト”と表示される状況に陥ってしまいました。
While文の中で、スリープを使うことはできないのでしょうか…?
ご教授いただければ幸いです。
java
1public static void main(String[] args) throws IOException { 2 Timer time = new Timer(); 3 String[] kazu = { "1", "2", "3", "4", "5", "6", "7", "8" }; 4 String[] color = { "", "●", "◯", "置ける場所(?)" }; 5 int[] status = new int[4];//盤面の状況を格納 6 int col, row = 0;//コマを置く縦位置、横位置 7 int failed_cnt = 0; //駒をおけなかったらカウント 8 p1 = new Player('c', 1);//プレイヤー1 黒 9 p2 = new Player('c', 2);//プレイヤー1 白 10 pw = p1;//作業用 11 while (true) {//ゲームメインループ 12 =============中略=============== 13 配列の初期化おける位置の初期化 14 置ける場所チェック 15 コマが置かれていない場所をチェック 16 17 if (Code.check_change(board, i, j, pw.color, "check")) { 18 board[i][j] = 3;//置ける時statusを3に 19 } 20 //盤面描画 21 time.schedule(new task(),2000); 22 Code.print(kazu, board, rank);//Code:コードをいくつか格納したクラス 23 24 //盤面のチェックその2 25 for (int i = 0; i < board.length; i++) { 26 for (int j = 0; j < board[i].length; j++) { 27 status[board[i][j]]++; 28 } 29 } 30 =============中略=============== 31(ゲームを続行できるかのチェック)ex)置ける位置がない、二人とも置けなかったらゲーム終了 32 33 for (int i = 1; i < status.length; i++) {//盤面の状態を表示 34 System.out.println(color[i] + ":" + status[i] + " "); 35 } 36 System.out.println("------------------------"); 37 System.out.println(color[pw.color] + "のターン" + " "); 38 int[] point = pw.getPoint(); 39 col = point[0]; 40 row = point[1]; 41 if (board[col][row] != 3) { 42 System.out.println("指定された位置にはコマを置けません。"); 43 System.out.println("置ける位置を指定して下さい。"); 44 System.out.println("------------------------"); 45 continue; 46 } else {//コマを置き、ひっくり返す 47 board[col][row] = pw.color; 48 Code.check_change(board, col, row, pw.color, "change"); 49 System.out.println("------------------------"); 50 } 51 Player.changePlayer();//プレイヤー交代 52 } //mainループ 53 54 =============中略===============(勝敗判定) 55 } 56 }
Java
1import java.util.TimerTask; 2 3public class task extends TimerTask { 4 public void run(){ 5 try { 6 Thread.sleep(1000); 7 System.out.println("テスト"); 8 9 }catch(Exception ex) { 10 ex.printStackTrace(); 11 } 12 } 13}