Я написал игру «Рок, бумага, ножницы, стрельба» одним способом с использованием Java.Мне нужна помощь в зацикливании программы - PullRequest
0 голосов
/ 25 февраля 2012

Я могу зациклить программу, но каждый раз, когда я вводю значение, оно возвращает 2 значения: выигрыш пользователя и проигрыш пользователя.Я экспериментировал с использованием нескольких методов и создавал новый класс, который был тестером, но у меня были некоторые проблемы с выяснением логики.Что касается циклов, я попытался использовать цикл for, while и do while.

Заранее спасибо!


// Rock Paper Scissor Shoot Game

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

public class RockPaperSciccor {
  public static void main(String[] args){

    int wins = 0;
    int losses = 0;

    int rnd;


    for(rnd=0;rnd<=10;rnd++)
    {

    Random GAME = new Random();
    int PC = 1+GAME.nextInt(3);

    Scanner input = new Scanner (System.in);
    int SCISSOR, ROCK, PAPER;
    SCISSOR = 1;
    ROCK = 2;
    PAPER = 3;

    System.out.println("");
    System.out.println("Choose Your Weapon! ");
    System.out.println("1 = Scissor| 2 = Rock| 3 = Paper");
    System.out.println("");
    int USER =  input.nextInt();

    while (USER > 3) {
      System.err.println("Incorrect value entered, fool");
      System.err.println("Choose a number 1-3");
      return;
      }
    System.out.println("___________________");

    if(USER == PC){
      if(USER == SCISSOR){
        System.out.println("You Both Played Scissor");
      }
      if(USER == ROCK){
        System.out.println("You Both Played Rock");
      }
      if(USER == PAPER){
        System.out.println("You Both Played Paper");
      }
      System.out.println("Draw");
      System.out.println("___________________");
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }
    //User wins
    if(USER == SCISSOR && PC == PAPER){
      System.out.println("You: Scissor");
      System.out.println("PC: Paper");
      System.out.println("Scissor Cuts Paper");
      System.out.println("You Win!");
      System.out.println("___________________");
      wins++;
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }
    //Pc wins
    else if(PC == ROCK){
      System.out.println("You: Scissor");
      System.out.println("PC: Rock");
      System.out.println("Rock Breaks Scissor!");
      System.out.println("PC Wins!");
      System.out.println("___________________");
      losses++;
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }
    //User wins
    if(USER == ROCK && PC == SCISSOR ){
      System.out.println("You: Rock");
      System.out.println("PC: Scissor");
      System.out.println("Rock Breaks Scissor");
      System.out.println("You Win! ");
      System.out.println("___________________");
      wins++;
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }
    //Pc wins
    else if (PC == PAPER){
      System.out.println("You: Rock");
      System.out.println("PC: Paper");
      System.out.println("Paper Covers Rock!");
      System.out.println("PC Wins!");
      System.out.println("___________________");
      losses++;
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }
    //User Wins
    if(USER == PAPER && PC == ROCK){
      System.out.println("You: Paper");
      System.out.println("PC: Rock");
      System.out.println("Paper Covers Rock");
      System.out.println("You Win!");
      System.out.println("___________________");
      wins++;
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }
    // Pc Wins
    else if (PC == SCISSOR){
      System.out.println("You: Paper");
      System.out.println("PC: Scissor");
      System.out.println("Scissor Cuts Paper!");
      System.out.println("PC Wins!");
      System.out.println("___________________");
      losses++;
      System.out.println("Wins: " + wins + "| Losses: " + losses);
    }


  }





}
}

1 Ответ

4 голосов
/ 25 февраля 2012

Ваша проблема - ваши блоки выбора else / if.Каждый раз вы позволяете этому продолжаться, даже если выбор прошел.Вы также не проверяете должным образом.В каждой паре if / else, которую вы используете, вы проверяете

if(user X && pc Y) ...
else if (pc Z) ...

. Это будет оценка одного из двух блоков, если пользователь играет X, а ПК Y, ИЛИ, если ПК играет z.Вы должны настроить его так:

if(user X)
   if(pc Y) ...
   else if (pc Z) ...

Или

if(user X && pc Y) ...
else if(user X && pc Z) ...

Я предлагаю первое.Это немного более эффективно, потому что он проверяет пользователя X только один раз.Это не даст половины заметной разницы.

Вы должны сделать это так:

if(user plays paper)
    if(pc plays rock)
        ...
    else if (pc plays scissors)
        ...
else if(user plays rock)
    if(pc plays scissors)
        ...
    else if (pc plays paper)
        ...
else if(user plays scissors)
    if(pc plays rock)
        ...
    else if (pc plays paper)
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...