Камень ножницы бумага

 
 
 
Сообщения:5
Как осуществить этот алгоритм? А именно как сравнить результаты. Есть массив не ва важно с каким количеством элементов, но в каждом либо единица либо двойка либо тройка, и как сделать чтоб единица побеждала двойку, двойка тройку а тройка единицу? Подскажите начинающему, не могу сообразить)
 
 
Сообщения:183
Как вариант:
	public int win(int a, int b) {
		if (a == 1 && b == 2) return 1;
		if (a == 2 && b == 3) return 2;
		if (a == 3 && b == 1) return 3;
		return 0;
	}
 
 
 
Сообщения:5
Это когда два участника а когда их массив... а в моем случае эррэйлист с неизвестнм заранее количеством участников
 
 
Сообщения:5
Вставить этот код в цикл и сравнить всех участников попарно данным кодом... исключив заранее варианты ничьей... результат неправильный будет...
 
 
Сообщения:183
Так во всем массиве должен быть один победитель? Если их будет слишком много, постоянно будет возникать ситуация, когда будут все три вида элементов. Единственно, что можно изначально проверить, чтобы какого-то типа элементов изначально нет. Тогда уже можно определить группу победителей. А если нужен только один победитель - это значит в массиве только 2 типа элементов + одного типа только 1 элемент.
 
 
Сообщения:5
Все как в игре камень ножницы бумага, онаже чингиса... если проигравших несколько то между ними снова разыгрывается тотже цикл пока не останется один проигравший... пробую реализовать следующий способ: каждому участнику присваевается 0 очков, если он выигрывает ему прибавляется один бал... тоесть проверяем для каждого участника естьли ктото у кого выбрано (1,2 или3/ тоесть камень ножницы или бумага) элемент способный победить то что у него выбрано, если нет ни кого то ему прибавляется бал... тут согласен что если много участников то это может повторяться безконечно... при наличае нескольких участников с одинаковым количеством очков заного запускается этот же метод... пока не останется один проигравший... вобщем реально игра чингиса но только не интересует вся программа а только алгоритм определения победителя
 
 
Сообщения:5
Присвоил каждому баллы и сравнил
public static ArrayList <Integer> arrRslt (ArrayList <Integer> myHods) {
		int sizeList = myHods.size();                    // определяем количество камНожБум
		
		ArrayList <Integer> cntPlrs = new ArrayList<>(); // массив с колличеством очков для каждого игрока
		int az;
		for (az=0; az<sizeList; az++) {                  // создаем счёт
			cntPlrs.add(0);
		}
		
int iz;
for (iz=0; iz<sizeList; iz++) {
int plNow = myHods.get(iz);                     
	if (plNow == 1) {                           // если выбран камень       !!!
		int prover = 3;                         // проверочный бумага побеждающий				
		boolean cont = myHods.contains(prover);	// проверяем содержится ли элемент способный победить	
		if (!cont) {                            // если не содержится то прибавляем бал игроку
			// кому добавлять очко
			int reedCnt = cntPlrs.get(iz);          // считываем текусчий счет
			int cntPlus = reedCnt+1;                // прибавляем один
			cntPlrs.add(iz, cntPlus);               // записываем прибавление
		}
	}
	if (plNow == 2) {                           // если выбраны ножницы      !!!
		int prover = 1;                         // проверочный параметр камень побеждающий				
		boolean cont = myHods.contains(prover);	// проверяем содержится ли элемент способный победить	
		if (!cont) {                            // если не содержится то прибавляем бал игроку
			// кому добавлять очко
			int reedCnt = cntPlrs.get(iz);          // считываем текусчий счет
			int cntPlus = reedCnt+1;                // прибавляем один
			cntPlrs.add(iz, cntPlus);               // записываем прибавление
		}
	}
	if (plNow == 3) {                           // если выбрана бумага        !!!
		int prover = 2;                         // проверочный параметр ножницы побеждающие				
		boolean cont = myHods.contains(prover);	// проверяем содержится ли элемент способный победить	
		if (!cont) {                            // если не содержится то прибавляем бал игроку
			// кому добавлять очко
			int reedCnt = cntPlrs.get(iz);          // считываем текусчий счет
			int cntPlus = reedCnt+1;                // прибавляем один
			cntPlrs.add(iz, cntPlus);               // записываем прибавление счета
		}
	}
}
return cntPlrs;

	}

Изменен:10 окт 2019 23:04
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет