0

わかりました、コンピューターのクラスに参加するのは初めてで、問題が発生しています。教師から提供された方法を使用して、三目並べゲームを作成する必要があり、メインの方法を変更することは許可されていません。 . ユーザーに 4x4 5x5 または 6x6 のどちらが必要かを尋ねるボードを作成し、「-」を使用して表示するとします。私はその部分を正しく行いましたが、移動したい行と列のユーザー入力でボードを置き換える方法がわかりません。

私の主な問題は getMove メソッドにあります。「-」を x または o に置き換える入力を取得する方法がわかりません。

import java.util.Scanner;
import java.util.Random;

public class Lab7 {
public static int currentPlayer;

    public static void main(String[] args) {
        char [] [] board; char win; char player;
        Random randy = new Random();
        int size = getBoardSize();

        while(size >= 4) {
            board = createEmptyBoard( size );
            player = getStartingPlayer(randy);
            do {
                getMove(board, player);
                player = player=='O'?'X':'O'; 
                win = checkForWin(board);
            } while(win == 'N'); 
            if(win == 'F'){
                System.out.printf("\nThe board is Full: no Winner\n");
            } else {
                System.out.printf("\nThe winner is %c\n", win);
            }
            displayBoard(board);
            size = getBoardSize();

        } 
    } 

    public static int getBoardSize() {
        int retval;
        Scanner keyboard = new Scanner(System.in);
        do {
            System.out.printf("Enter board size 4, 5, 6 or -1 to quit: ");
            retval = keyboard.nextInt(); 
        } while(retval != 4 && retval != 5 
                && retval != 6 && retval != -1);
        keyboard.nextLine(); 

        return retval; 
    }

    public static char getStartingPlayer(Random rangen){
        char retval = 'X'; 



        System.out.printf("\n\tNew Game. Starting player is %c\n", retval);
        return retval;
    } 

    public static char [][] createEmptyBoard(int size) {
        char [] [] board = new char [size][size];
        // two loops to fill cells with '-'
        for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            if ((board[i][j] == 'x') || (board[i][j] == 'o'))
                System.out.print(" " + board[i][j]);
            else
                System.out.print(" -");
        System.out.println();
    } return board;
    }



public static void getMove(char [][] board, char player){
 int row;
int column;

    System.out.printf("Player %c move\n", player);
    System.out.print("Enter Row:");
    System.out.println();


      displayBoard(board);  
    }

    public static void displayBoard(char [][] board) {     

    } 

    public static char checkForWin(char [][] board){
        char retval = 'F';

        return retval; 
    }    
} 
4

1 に答える 1

0

方法がわかっている場合は、画面をクリアしてボードを再描画します。しかし、それが最初のコンピュータークラスで必要になるとは思えません。毎ターンボードを再印刷するだけです。

于 2013-11-10T06:16:40.017 に答える