Игра 37

Тема в разделе "Pascal and Delphi", создана пользователем Kanibalus, 17 янв 2010.

  1. Kanibalus

    Kanibalus New Member

    Регистрация:
    17 янв 2010
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте. Я студент мне задали разработать игру 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;
    Если потребуется выложу полностью код игры.
     
Загрузка...

Поделиться этой страницей