игра в дурака

саня филинов
Дата: 09.10.2006 21:22:00
вобщем у меня такое задание - написать такую игру. нужно исп-ть при написании не менее 3-х классов(наследование). на мой взгляд одного класса вполне достаточно чтобы реализовать эту игру.
класс:
масти, размерность карт, кол-во у каждого игрока, обработка ходов каждого игрока, ну и по мелочам остатки...
есть ли смысл спорить с преподом и доказывать что он не прав? а если не прав я подскажите в двух словах что делить аж на 3 класса (естественно код я не прошу). просто на словах.
WildSery
Дата: 09.10.2006 22:04:05
Блин, неужели выдумать нельзя на каждый чих отдельный класс?
Не задумывался над алгоритмом карточных игр, из головы вот сразу:
TCustomCard = class;
  Размер: integer;
  Рубашка: TBitmap;
end;

TCard = class (TCustomCard)
  Масть: (Пики, Черви, Трефы, Бубны);
end;

TCustomGameCard = class (TCard)
  Чья: TCardPlayer;
  Состояние: (ВКолоде, УИгрока, Открыта, Бита, ...);
end;
Можно и ещё чего-нибудь придумать, если алгоритм поглядеть.
И для игрока классов наворотить не проблема.
Anatoly Podgoretsky
Дата: 09.10.2006 22:48:06
Не стоит, поскольку можно написать и с большим количеством классов, практически даже трех не достаточно.
Но от тебя ТРЕБУЕТСЯ написать минимум с тремя, можешь конечно поспорить, но задание будет не выполнено. Так что наряду с кличкой неумеха, еще добавиться и кличка скандалист.
Shr
Дата: 10.10.2006 08:02:06
Классы:
Карта
Игрок
Колода (список карт), присутствует у игроков, в отыгрыше, в неразданном.
Может, стоит сделать связь карта - колода двусторонней, чтобы не допускать дублирования. Типа
procedure TCard.SetPack(APack: TPack);
begin
  if Assigned(FPack) then
    FPack.Delete(Self);
  FPack := APack;
  if Assigned(FPack) then
    FPack.Add(Self);
end;
Игра - для хранения всего остального (данных и состояний)
_spy_
Дата: 10.10.2006 10:44:10
Лет 6-7 назад я тоже написал программу для игры в "Дурака" в качестве курсовика. Там можно было выбирать режимы Человек-Человек, Человек-Компьютер, Компьютер-Компьютер. Помнится преподаватель сказал мне - ну если она обыграет меня по результатам 3-х попыток - поставлю максимальный бал. В итоге программа выигрыла у него 2:1, хотя алгоритм игры в конечной ее стадии, когда в колоде нет карт не был до конца доделан. Жаль не сохранилось исходников игры.
Что касается классов, то там если память не изменяет, у меня были классы: Игрок, Карта, Колода, Игровое поле. Возможно, было что-то еще.
Energizer91
Дата: 10.10.2006 15:44:25
автор
Компьютер-Компьютер


Мда.... И какой же был счет?
_spy_
Дата: 10.10.2006 16:06:35
Energizer91
Мда.... И какой же был счет?

Кстати на этом режиме удобно было отлаживать прогу. У меня там был хитрый самосочиненный алгоритм, основанный на весовых коэффициентах. Например, вычислялось значение, при котором игрок отказывался отбиваться и забирал карты себе - не потому что нечем отбиваться, а потому что жалко больших козырей(коэффициент жадности). Он вычислялся на основе кол-ва карт на руках у отбивающегося игрока, от кол-ва уже отбитых карт, от кол-ва карт в колоде, от размера козыря, которым нужно отбиться ну и т.д. Так же вычислялись и другие подобные коэффициенты (например, тот же коэф. жадности, но уже при подкидывании карты). Таким образом - меняя эти коэфф-ты можно было менять поведение игрока-компьютера. А с помощью режима Компьютер-Компьютер я настраивал оптимальные коэфф-ты. Ставил одному игроку одни значения, другому - другие и запускал игру, раз 100, и смотрел, кто выиграет. Ну в таком вот ключе)
softwarer
Дата: 10.10.2006 16:11:03
_spy_
Помнится преподаватель сказал мне - ну если она обыграет меня по результатам 3-х попыток - поставлю максимальный бал.

Преподу - двойка по терверу и теории научного исследования :)
_spy_
Дата: 10.10.2006 16:14:41
softwarer
Преподу - двойка по терверу и теории научного исследования :)

Ну зачем же так жестко) У него кроме меня еще было достаточно студентов, чьи творения нужно было оценить. Поэтому времени делать репрезентативную выборку у него не было. Кроме того, думаю, за 3 попытки вполне можно оценить адекватность поведения программы)
softwarer
Дата: 10.10.2006 16:22:34
Насчет адекватности - не вопрос, но это уже противоречит сформулированному критерию. А вот насчет попыток - если говорится число 3, значит подразумевается существенная вероятность счета 2-1. А если так, подразумевается большая дисперсия исходов. А при большой дисперсии 3 попытки - очень мало для оценки матожидания.