2017-12-17 13 views
0

私は非常に初心者のプログラマーです。自分のプログラムでサイコロをどのように書き直すことができますか?私が取り組んでいるプロジェクトはYahtzeeです。 Yahtzeeでは、5つのサイコロを振り、どのサイコロをリロールするか(「r」)、どのサイコロをサイコロにするか(k)を選択できます。私は2回転がそうとしています。 パッケージyahtzee1;ヤッツェでサイコロを再登録する方法

import java.util.Scanner; 

public class Yahtzee1 { 
    /** 
    * Allows the get information from the user like to keep or reroll 
    * @param prompt 
    * @return 
    */ 
    public static char getcharFromUser(String prompt) { 
     Scanner sc = new Scanner(System.in); 
     System.out.println(prompt); 
     char c = sc.next().charAt(0); 
     return c; 
    } 

    /** 
    * generate 5 random numbers from 1 to 6, inclusive 
    * @param dice array to store the numbers 
    */ 
    public static void roll(int[] dice) { 
     for (int i = 0; i < 5; i++) { 
      dice[i] = (int) (Math.random() * 6 + 1); 
     } 
    } 

    /** 
    * generate 5 random numbers from 1 to 6, inclusive 
    * 
    * @param dice array to store the numbers 
    */ 
    public static void printDice(int[] dice) { 
     for (int i = 0; i < 5; i++) { 
      System.out.print(dice[i]); 
     } 
    } 

    /** 
    * After the 5 dice are "rolled" user picks which dice to re-roll or keep 
    * @param dice 
    * @param option 
    */ 
    public static void reRoll(int[] dice, String option) { 

     //help here 
    } 

    /** 
    * 
    * @param dice 
    */ 
    public static void playRound(int [] dice){ 
     for (int i = 0; i < 2;i++){ 
      reRoll(dice, option); 

      roll(dice); 

      printDice(dice); 
     } 
    } 
    /** 
    * play Yahtzee 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     int[] dice = new int[6]; 
     playRound(dice); 
    } 


} 

私の助けが必要なセクションは、reRollメソッドにあります。

+1

私は私はあなたのprogamロジックをiunderrstandかなりわかりません。メソッド 'playRound(...)'では、 'roll(...)'を呼び出す前に 'reRoll(...)'を呼び出します。これが正しいと確信していますか? – Turing85

+0

あなたのコードを説明し、あなたのプログラムを案内してください。そうすれば、私たちがバグを見つけやすくなります。 – Zabuza

答えて

0

あなたはこのような何かを行うことができます。

public static void reRoll(int[] dice, String option) { 
    //Change the split parameter to whatever you need the delimiter to be 
    for(String numString: option.split(" ")){ 
     int die = Integer.parseInt(numString); 
     dice[die-1] = (int) (Math.random() * 6 + 1); 
    } 

} 

public static void playRound(int [] dice){ 

    roll(dice); 

    printDice(dice); 

    Scanner sc = new Scanner(System.in); 

    for (int i = 0; i < 2;i++){ 

     System.out.print("Enter dice to reroll: "); 

     String option = sc.nextLine(); 

     reRoll(dice, option); 

     printDice(dice); 
    } 

    sc.close(); 
} 
関連する問題