0

Java を独学しようとしていて、このプロジェクトをオンラインで見つけましたが、適切に組み立てる方法がわかりません。最終的にユーザー入力(例:A1)をそのピースの値と比較できるようにするdouble配列のセットアップを誰かが手伝ってくれるかどうか疑問に思っています。

ゲームプレイ: メニューが表示されます。ユーザーは 1 を入力して再生します。2 終了します。ゲームボードが登場、こんな感じ。各ボックスの後ろには文字 (ah)

    A  B  C  D 
    -  -  -  - 
1 | .  .  .  . 
2 | .  .  .  . 
3 | .  .  .  . 
4 | .  .  .  . 

次に、ユーザーがスポットを入力します (例: A1)。ランダムな文字が表示されたボードが表示されます。

    A  B  C  D 
    -  -  -  - 
1 | b  .  .  . 
2 | .  .  .  . 
3 | .  .  .  . 
4 | .  .  .  . 

それからもう一度尋ねます。(例: ユーザーが C3 を入力)

    A  B  C  D 
    -  -  -  - 
1 | .  .  .  . 
2 | .  .  .  . 
3 | .  .  d  . 
4 | .  .  .  . 

一致する場合、それらは残り、ループが再び開始されます。一致しない場合は、両方とも "." に戻ります。

ボード全体が埋まってゲームオーバーになるまで続きます!

私はここにプロジェクトをアップロードしており、これまでに持っているものも含めていますが、大丈夫だとは思いません!

import java.util.*;

public class breitje_MatchUp{
   static Scanner input = new Scanner(System.in);
   static int i=0;
   static char[][] clearBoard = new char[4][4]; 
   static char[][] letterBoard = new char[4][4];
   public static void main(String[] args){
      drawBoard();


   }

   public static void drawMenu(){
      System.out.println("Welcome to the Match Up game! \n");  
      System.out.println("Please select from the following: ");  
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");  
      System.out.println("1. New Game");  
      System.out.println("2. Quit");  
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");  
      int optionSelect = input.nextInt();
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");  
      while(optionSelect!=1 && optionSelect !=2){
         System.out.println("Please enter 1 (New Game) or 2(Quit)");
         optionSelect = input.nextInt();}
      if (optionSelect == 1)
         System.out.print("START GAME HERE********");
      else if (optionSelect == 2)
         System.out.println("Thanks for playing! Have a great day.");  
   }


   public static void drawBoard(){
            for(int row1 = 0; row1 < 4; row1++) {
         System.out.println(""); // this will create a new line for each new row
         for(int col1 = 0; col1 < 4; col1++) {
          clearBoard[row1][col1]='.'; // this will print out the 4 row variable values            
         }        
      }

      System.out.format("   %2s %2s %2s %2s \n",'A','B','C','D');
      System.out.format("   %2s %2s %2s %2s \n",'-','-','-','-');
      System.out.format("1 |%2s %2s %2s %2s \n",clearBoard[0][0],clearBoard[0][1],clearBoard[0][2],clearBoard[0][3]);
      System.out.format("2 |%2s %2s %2s %2s \n",clearBoard[1][0],clearBoard[1][1],clearBoard[1][2],clearBoard[1][3]);
      System.out.format("3 |%2s %2s %2s %2s \n",clearBoard[2][0],clearBoard[2][1],clearBoard[2][2],clearBoard[2][3]);
      System.out.format("4 |%2s %2s %2s %2s \n",clearBoard[3][0],clearBoard[3][1],clearBoard[3][2],clearBoard[3][3]);  


      System.out.println("Please enter a column (A,B,C, or D) and row (1,2,3,or 4). Ex: A3 : ");
      String userInput = input.nextLine();
      userInput = userInput.toUpperCase().trim();


   } 
}

letterBoardカードの最初のランダムな配置を表すためにの値を初期化する方法がわかりません。Java コードで「カードを配る」にはどうすればよいですか?

4

1 に答える 1

0

これを行うには、おそらくいくつかの方法があります。考えられる解決策の 1 つは、次のようなことです。

for each letter from 'a' to 'h'
    pick two random locations
    if the given location is not yet used
        place the letter at the location

これを疑似コードでスケッチしたので、Java で詳細を独自に作成できます。ほとんどの場合、これを独自のメソッドに記述し、特定のタスクを実行するためにプライマリ メソッドが呼び出すヘルパー メソッドを作成することをお勧めします。

于 2012-11-27T04:17:35.817 に答える