Подсчет очков в блэк джек

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

07 апр 2011, 16:01

Всем доброго времени суток. Столкнулся с проблемой подсчета очков игрока, а именно с тем, как правильно считать туз: если сума у игрока < 10 то туз 11, если больше - то 1.
Вот как я пробую подсчитать:

Код: Выделить всё

var score: int = 0;
			var i: int;
			for ( i = 0; i < cards.length; i++ )
			{
				if ( cards[i].rank != "Ace" )
				{
					score += cards[i].value; 
				}
			}
			
			for ( i = 0; i < cards.length; i++)
			{
				if ( (cards[i].rank == "Ace") && (this.sum <= 10) )
					{
						score += 11;
					}
					else
						if ( cards[i].rank == "Ace" )
							score += 1;
			}
подсчитываю сумму каждый раз, когда игроку сдается карта. по идее,должно работать, но подсчитывает неверно :( , и как я заметил, когда первая карта у игрока туз, или когда 3-я карта туз, а остальные меньше 10 . Может кто подсказать верный алгоритм подсчета, или исправить ошибку в этом?
BulldozerBSG
Сообщения: 263
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

08 апр 2011, 01:11

А где считается this.sum ?
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

08 апр 2011, 08:41

в том же класе в методе

Код: Выделить всё

public function takeCard(c: Card):void
		{
			this.cards.push(c);
			this.sum = calculateScore();
		}
calculateScore - в первом посте
BulldozerBSG
Сообщения: 263
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

08 апр 2011, 12:34

ну я бы заменил "&& (this.sum <= 10)" на что то типа "&& (score <= 10)". Но если score это глобальный счетчик очков карт, а не текущих то это проблема...
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

08 апр 2011, 14:34

спасибо, теперь считает верно, score это и есть счетчик текущих карт
Ответить