有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法正确结束此骰子游戏

我正试图恰当地结束这场比赛,但边做边做的循环或我正在做的事情导致比赛继续进行。如果有人有进一步的建议,让我在任何一个分数达到99分后结束这场比赛,我将不胜感激。我已经粘贴了这两个类的源代码。我也是学生,所以请原谅我

阶级

package programming2;

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

public class Matador {

    public static void main(String[] args) {
        
        /*The game is played between the player and the computer.
        The player's score and the computer's score each begin at 0.
        The object of the game is to be the first reach 99 points.
        The player and the computer take turns. On each turn: */
        
        Scanner scnr = new Scanner(System.in);  
        Die matador = new Die();
        
        int playerScore = 0;
        int computerScore = 0;
        int playerPick = 0;
        int cpu;
        int turn;
        
        Random randGen = new Random();
        cpu = randGen.nextInt(6) + 2; 
        int cpuPick = 0;
        int quit = 0;
        
        System.out.println("Welcome to el Matador!");
        System.out.println("The winner of this game is the first to score 99 points");
        
        do {System.out.println("Player 1 please pick your number");  // start of master loop
        
        playerPick = scnr.nextInt();
        
        System.out.println("Player 1 you selected " + playerPick);
        
        System.out.println("Player 2 please pick your number");
        
        cpuPick = cpu;
        
        System.out.println("Player 2 selects " + cpuPick);
        
        
           // 
        do {    // start of game loop - master do loop player 1
            
            if (computerScore > 98) {
                
                quit = 1;
                break;
            }
            
            System.out.println("Player 1 rolls dice");
            
            matador.rollDieNow();
            
            System.out.println("Values for 1st dice is: " + matador.getValueDie1() + " and " + matador.getValueDie2());
            System.out.println("Combined values are " + matador.getValue());
            
            turn = 0;       // start of loop marker for player 1 
            
            
            
            if (matador.getValueDie1() == 1 && matador.getValueDie2() == 1) {
        
            
            playerScore = playerScore + -25;
            break;
            
            }
            
            
        
        if (matador.getValueDie1() == 1 || matador.getValueDie2() == 1) {
            
            playerScore = playerScore + 0;
            System.out.println("Changing Turns!");
            break;
            
        }
        
        if (matador.getValueDie1() != 1 || matador.getValueDie2() != 1) {     // sum of dicevalue added to score 
            
            playerScore = playerScore + matador.getValue();
           
           
           }
        
        if (playerPick == matador.getValueDie1() || playerPick == matador.getValueDie2()) {  // if picked number appears on at least 1 
            
            turn = turn + 1;
        }
        
        if (playerPick == matador.getValueDie1() && playerPick == matador.getValueDie2()) {   // if picked number appears on both dice
            
            System.out.println("You are the winner player 1 you matched your numbers!!");
            System.out.print("Player 1 final score is: " + playerScore + " |-| player 2 final score is " + computerScore);
            quit = 1;
            break;
            
            
        }
        
       
            
            System.out.println("Player 1 Score: " + playerScore);
        
        
        }
    
        while (turn < turn + 1 || quit != 1);
        
        // turn changes and also end of loop marker 
        System.out.println("Score update! Player 1 score is: " + playerScore + " |-| player 2 score is " + computerScore);
        
        turn = 0;     // turn counter resets 

        do {       // start of computer player's turn 
            
            if (playerScore > 98) {
                
            quit = 1;
            break;
            
            }
            
            System.out.println("Player 2 rolls dice");
            matador.rollDieNow();
            System.out.println("Values for 1st dice is: " + matador.getValueDie1() + " and " + matador.getValueDie2());
            System.out.println("Combined values are " + matador.getValue());
            
            
            
            if (matador.getValueDie1() == 1 && matador.getValueDie2() == 1) {    // loop marker for cpu starts 
    
        
        computerScore = computerScore + -25;   
        
    
        break;
        
        }
        

    
    if (matador.getValueDie1() == 1 && matador.getValueDie2() == 1) {      // loses turns if 1 appears on both sides
        
        computerScore = computerScore + 0;
        System.out.println("Changing Turns!");
        break;
        
    }
    
    if (matador.getValueDie1() != 1 || matador.getValueDie2() != 1) {  // computer scores  value of dice 
        
        computerScore = computerScore + matador.getValue();
        
        if (computerScore > 98) {
    
        break; 
        
        }
        
    }
    
    if (cpuPick == matador.getValueDie1() || cpuPick == matador.getValueDie2()) {
        
        turn = turn + 1;
    }
    
    if (cpuPick == matador.getValueDie1() && cpuPick == matador.getValueDie2()) {
        
        System.out.println("You are the winner player 2 you matched your numbers!!");
        System.out.println("Player 1 final score is: " + playerScore + " |-| player 2 final score is " + computerScore);
        quit = 1;
        break;
    }
        
    
    System.out.println("Player 2 Score: " + computerScore);
    
    
        }   

        
        
    while (playerScore < 98 || computerScore <98 || quit != 1);   
        
        
        
        }
        
        while (playerScore < 98 || computerScore < 98 || quit != 1);    // end of master loop 
        System.out.println("Player 1 final score is: " + playerScore + " |-| player 2 final score is " + computerScore);
        

        
        

    }

}

如果需要,可以选择其他类别,但与分数无关,因为它主要用于确定一些值:

package programming2;

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

public class Die {   
    
    private int die1;   //instance variable 
    private int die2;
    private int rolledDice;
    
    
    public Die() {                //constructor assigns random value
        
        
        
        die1 = (int) (Math.random()*6)+1;   
        die2 = (int) (Math.random()*6)+1;
          
                
    }
    
    public void rollDieNow () {                     //rolls dice 
        
        
        Random randGen = new Random();
        
        
        
        die1 = randGen.nextInt(6) + 1; 
        die2 = randGen.nextInt(6) + 1; 
           
       }
    
     
    public int getValue() {       // gets dice value 
    
    
        
    rolledDice = die1 + die2;
    
        
    return rolledDice;
    
    }
    
    public int getValueDie1() {       // gets die1 value 
        
        
        
        
        
            
        return die1;
        
        }
    
    public int getValueDie2() {       // gets die2 value 
        
        
        
        
        
            
        return die2;
        
        }

    

}

共 (0) 个答案