Shakiba Akhbari Ответов: 2

Напишите программу, которая имитирует игру в кости.


Напишите программу, которая имитирует игру в кости. В этой игре 3 игрока будут
поочередно бросайте две кости. На каждом повороте они записывают сумму
два кубика и добавьте это к их общей сумме. Если игрок бросает Дуплет (оба кубика
имеют одинаковое значение), затем игрок снова получает бросок. После каждого поворота
(когда оба броска), код проверяет сумму каждого игрока и первого игрока
чтобы достичь в общей сложности 15 или более будет выиграть первое место. Затем код проверяет
за второе и третье места победители. Код будет распечатан пользователю
победители по порядку.

Что я уже пробовал:

static int player1Total = 0;
	static int player2Total = 0;
	static int winner = 0;	//0 = no winner yet;  1 = player 1 wins; 2 = player 2 wins
	static int round = 1; //record the play round;
	public static void main(String [] args)
	{		
		while (winner == 0)
		{
			System.out.println("\n------------This is round "+round+"-------------");
			round++;			
			rollDice1();			
			rollDice2();
		}
	}		
	public static void rollDice1()
	{
		if (winner == 0)
		{
			int num1=0;
			int num2=0;	
			do
			{
				num1 = (int) (Math.random() * 6)+1;
				num2 = (int) (Math.random() * 6)+1;
				System.out.println("Player 1 rolls a "+num1+" and a "+num2);	
				player1Total = player1Total+num1+num2;
				System.out.println("Player 1 now has "+player1Total);
				if (num1==num2&&player1Total<75)
				{
					System.out.println("Player 1 gets to roll again");
				}				
			}
			while(num1==num2&&player1Total<75);
			if (player1Total>=75)
			{
				winner = 1;
				System.out.println("Player 1 wins with a total of "+player1Total);
				System.out.println("\nFinal score is \nplayer 1: "+player1Total+"\nplayer 2: "+player2Total);
			}
		}		
	}
	

	public static void rollDice2()
	{
		if (winner == 0)
		{			
			int num1 = (int) (Math.random() * 6)+1;			
			int num2 = (int) (Math.random() * 6)+1;
			System.out.println("Player 2 rolls a "+num1+" and a "+num2);			
			player2Total = player2Total+num1+num2;
			System.out.println("Player 2 now has "+player2Total);
			if (player2Total <75)
			{
				if(num1==num2)
				{
					System.out.println("Player 2 gets to roll again");
					rollDice2();//recall		
				}
			}
			else
			{
				winner = 2;
				System.out.println("Player 2 wins with a total of "+player2Total);
				System.out.println("\nFinal score is \nplayer 1: "+player1Total+"\nplayer 2: "+player2Total);
			}
		}
	}
}

2 Ответов

Рейтинг:
0

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали. Этот код не отвечает на вопрос в какой-либо существенной детали: где находится игрок три? Откуда взялось "75"? Почему код для "rollDice1" и "rollDice2" практически идентичен? Честно говоря, этот код выглядит так, как будто кто-то взглянул на вопрос и просто прыгнул в код, не задумываясь о том, что включает в себя эта задача, и вот почему это полный беспорядок.
Начните с того, что внимательно прочтите вопрос и подумайте о том, что требуется. Затем подумайте о том, как бы вы сделали это на бумаге, прежде чем прыгать

Если у вас вообще возникли проблемы с началом работы, то это может помочь: Как написать код для решения проблемы, руководство для начинающих[^]


CPallini

5.

Рейтинг:
0

CPallini

Ваши требования довольно ясны. Поэтому постарайтесь следовать им дословно. Во-первых, вы можете пропустить дублет угловой корпус (а затем добавьте его в окончательный выпуск).