2015-03-15 6 views
-1

Я новичок в java. Я пишу образец игры с ножницами из каменной бумаги. пользовательский ввод 0,1,2 для скалы, бумаги, ножниц соответственно. программа произвольно сгенерировала результат. мне почти удалось заставить его работать, но единственное, за что я застрял, - это как STOP THE FOR LOOP IF ONE OF THE SIDE WINS CONSECUTIVELY FOR THREE TIMES.Как остановить цикл в java, если значение увеличивается в три раза подряд?

ЭТО ОРИГИНАЛ ВОПРОС

Напишите программу, которая играет рок-ножницы-бумага игры. Правило заключается в том, что ножница выигрывает против бумаги, нокамедцы выигрывают, а бумага выигрывает у скалы. Программа представляет собой ножницу как 0, камень как 1, а бумагу как 2. Игра должна воспроизводиться между компьютером и игроком. Программа предложит пользователю ввести количество раундов, чтобы выиграть. Например, если пользователь вводит 4, победитель должен выиграть в наименее 3 из 4 раундов. Если любая из сторон побеждает 3 раза подряд, игра заканчивается раньше, чем . Если пользователь вводит 5 раундов, победитель должен выиграть как минимум 3 из 5 раундов. такое же правило последовательных 3-выигрышей также применяется. После того, как пользователь ввел количество раундов, компьютер случайным образом генерирует число от 0 до 2. Затем программа запрашивает у пользователя число 0, 1 или 2. После последнего раунда (с учетом вышеизложенного правило раннего победителя), программа отображает сообщение о том, побеждает ли компьютер или пользователь, проигрывает или рисует.

ЭТО МОЙ КОД.

package assignment1; 

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

public class question1_9 { 

// This program is used to play scissor-rock-paper game. 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     Random random = new Random(); 
     int scissor = 0, rock = 1, paper = 2, round, userinput,comprand, userresult = 0, compresult = 0, control,j,k; 

     // Variables used in this program is declared and initialized. 

     /* Number of rounds wished to be play are obtained from user. */ 

     System.out.println("WELCOME TO ROCK PAPER SCISSOR GAME. "); 
     System.out.println("PLEASE ENTER THE NUMBER OF ROUND YOU WANT TO PLAY: "); 
     round = scan.nextInt(); 
     control = (round/2)+1; 

     for(int i = 0; i<round; i++) 
     { 
      if (compresult == control | userresult == control) 
      { 
       break; 
      } 
      System.out.println("ROUND " + (i+1)); 
      System.out.println("PLEASE ENTER:\n 0 for scissor \n 1 for rock \n 2 for paper \n"); 
      userinput = scan.nextInt(); 
      comprand = random.nextInt(3); 
      if (userinput == 0) 
      { 
       if (comprand == 0) 
       { 
        System.out.println("COMPUTER IS SCISSOR"); 
        System.out.println("DRAW!!!"); 
        i--; 
       } 
       else if (comprand == 1) 
       { 
        System.out.println("COMPUTER IS ROCK"); 
        System.out.println("COMPUTER WINS!!!"); 
        compresult++; 
       } 
       else 
       { 
        System.out.println("COMPUTER IS PAPER"); 
        System.out.println("YOU WIN!!!"); 
        userresult++; 
       } 
       } 
      else if (userinput == 1) 
      { 
       if (comprand == 0) 
       { 
        System.out.println("COMPUTER IS SCISSOR"); 
        System.out.println("COMPUTER WINS!!!"); 
        compresult++; 
       } 
       else if (comprand == 1) 
       { 
        System.out.println("COMPUTER IS ROCK"); 
        System.out.println("YOU WIN!!!"); 
        userresult++; 
       } 
       else 
       { 
        System.out.println("COMPUTER IS PAPER"); 
        System.out.println("DRAW!!!"); 
        i--; 
       } 
       } 
      else 
      { 
       if (comprand == 0) 
       { 
        System.out.println("COMPUTER IS SCISSOR"); 
        System.out.println("YOU WIN!!!"); 
        userresult++; 
       } 
       else if (comprand == 1) 
       { 
        System.out.println("COMPUTER IS ROCK"); 
        System.out.println("DRAW!!!"); 
        i--; 
       } 
       else 
       { 
        System.out.println("COMPUTER IS PAPER"); 
        System.out.println("COMPUTER WINS!!!"); 
        compresult++; 
       } 
       } 
      } 
     if(compresult == userresult) 
      System.out.println("\n\nFINAL RESULT IS DRAW!!!"); 
     else if (compresult > userresult) 
      System.out.println("\n\nFINAL RESULT IS COMPUTER WIN!!!"); 
     else 
      System.out.println("\n\nFINAL RESULT IS YOU WIN!!!"); 

     } 

    } 

ответ

1

break; заявление, когда вы хотите выбраться из токовой петли.

В верхней части петли,

магазин выигрывает в массиве

String[] results=new String[rounds]; 

магазин ваши результаты как «пользователь» или «Комп» для каждого раунда и в конце цикла сделать это

if((results[i].equals("user") && results[i-1].equals("user") && results[i-2].equals("user") || (results[i].equals("comp") && results[i-1].equals("comp") && results[i-2].equals("comp"))) 
{ 
break; 
} 
+0

Это не относится ко всем условиям. скажем, что есть 10 матчей, я выиграю матч № 2, 4, 6, ваше решение приведет к разрыву цикла, даже если он не последователен. –

+0

Я понимаю. Я отредактировал свой ответ, просто попробуй это. – shreyas

0

Как сказал shreyas, используйте инструкцию break, когда вы хотите выйти из цикла.

Я бы установил compresult в ноль, когда игрок выигрывает раунд, и устанавливает userresult в ноль, когда выигрывает компьютер. Затем, в верхней части петли, сразу после { добавить:

if(userResult == 3 || computerResult == 3 || round/2 > 10) 
{ 
    break; 
} 

Некоторый код приходит от Shreyas изначальном post.

+0

ваше решение поставит под угрозу другое условие для победы. что, если оба не получат три прямой победы и будут играть в игру до конца? –

+0

@LingShiWu Исправлено. – alphadelta