Игра 37

Kanibalus

New member
17.01.2010
1
0
#1
Здравствуйте. Я студент мне задали разработать игру 37 по программированию на ЯВУ, не могу придумать стратегию. Помогите пожалуйста. Вот задание: на столе лежат пять карточек, на которых соответственно написано 1, 2, 3, 4, 5. играют двое и ходят по очереди. первый игрок кладет монету на произвольную карточку, например, на 5, что дает ему 5 очков, затем второй перекладывает монету на 3, прибавит 5 к 3 получает 8 очков, затем первый игрок кладет монету допустим на 1 и получает сумму очков равную 9 и т.д. тот игрок который первым наберет 37 или принудит своего противника превзойти эту сумму, выигрывает. Играет компьютер против пользователя, нужно разработать стратегию когда комп ходит первым и когда узер ходит первым. Выполнение на языке Паскаль.
Два варианта: можно сделать так чтобы карточку уже занятую первым игроком второй игрок на следующем ходе занимать не мог, и можно сделать так чтобы можно было занимать уже занятую предыдущим игроком карточку - это не важно, нужно выбрать тот вариант что проще и удобнее для вас и для написания.
Я начал делать первый вариант когда второй игрок не может брать занятую карточку тогда используя алгоритм: первый ход 1 остальные 6 минус ход противника, я наткнулся на проблему 6-3=3 так нельзя. Тогда начал делать другой вариант занимать любые карточки, когда компьютер ходит первым все безупречно у юзера шансов нет, но как наставить комп на эту стратегию (в случае ошибки игрока) когда он ходит вторым ни как не могу врубиться. Код процедуры хода компьютера:
procedure get_pc(var h1:integer; last:integer; hum_n:integer);
begin
if pc_turns then {h1 - число которое возьмет компьютер за ход}
begin {last - занятая пользователем карточка}
if last=0 then {hum_n - сумма очков игрока}
h1:=1 {pc_turns - признак компьютер ходит первым}
else
h1:=6-last
end
else
if (hum_n mod 6)<>0 then
h1:=6-last
else
h1:=(hum_n mod 6);
if h1=0 then
h1:=5;
end;
Если потребуется выложу полностью код игры.