Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 2
Регистрация: 04.10.2012
Сообщений: 4

Игра. Игроки по очереди вычеркивают 1 или 2 или 3 клетки, следующие подряд. Проигрывает тот, кто вычеркнет последнюю клетку

05.10.2012, 14:52. Показов 1835. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!!
Есть полоска из 11 клеток. Играют 2 игрока, по очереди вычеркивают 1 или 2 или 3 клетки, следующие подряд. Проигрывает тот, кто вычеркнет последнюю клетку.
Надо написать симмулятор этой игры.
Я написал код(ниже), но после того, как уточнил условие задачи(надо через рекурсию написать), я встал в ступор(по правде с рекурсией у меня очень тухло ( )
В общем, надеюсь на Вашу помощь: помочь переделать код программы.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
program sex;
uses crt;
var rand1,taken,pl1,pl2,xod,score:integer;
label 1,2,3,4;
begin
clrscr;
writeln('Полосочоный нагибатор 1.0');
readln;
clrscr;
1:rand1:=random(3);
score:=11;
if rand1<1 then goto 1;
if rand1=1 then begin
writeln('По результатам жребия право первого хода передается игроку!');
xod:=1;
end;
if rand1=2 then begin
writeln('По результатам жребия право первого хода передается нагибатору!');
xod:=2;
end;
readln;
while (score<>0) do
begin
if xod=1 then
begin
2:
clrscr;
writeln('Ход игрока');
write('Осталось клеточек: ');writeln(score);
write('Введите,сколько клеточек вы хотите отрезать : ');readln(pl1);
if (pl1>0) and (pl1<4) and (pl1<=score) then
begin score:=score-pl1;
xod:=2;write('Вы отрезали ',pl1,' клеточ');
if (pl1>1) and (pl1<4) then writeln('ки') else writeln('ку');
write('Осталось клеточек: ');writeln(score);
end
else begin clrscr;writeln('Вы не можете столько отрезать!'); end;
readln;
if score=0 then goto 4;
end;    {ход игрока}
 
 
if xod=2 then
begin
case score of
11:pl2:=3;
10:pl2:=3;
9:pl2:=1;
8:pl2:=2;
7:pl2:=2;
6:pl2:=1;
5:pl2:=1;
4:pl2:=3;
3:pl2:=2;
2:pl2:=1;
1:pl2:=1;
end;
write('Ход нагибатора');
write('Осталось клеточек: ');writeln(score);
score:=score-pl2;
clrscr;
write('Нагибатор,недолго думая,отрезал ',pl2,' клеточ');
if (pl2>1) and (pl2<4) then writeln('ки') else writeln('ку');
readln;
xod:=1;
end;   {ход нагибатора}
4:
if xod=1 then
begin
writeln('Противостояние закончилось победой игрока!');
end
else
writeln('Противостояние закончилось победой нагибатора!');
 
end;  {Конец цикла игры}
 
end.
Добавлено через 15 часов 58 минут
Люди! АП!)
Я все ещё надеюсь на вашу помощь)) Или на светлые идеи, где можно рекурсию пихнуть))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2012, 14:52
Ответы с готовыми решениями:

Какую наибольшую стоимость может иметь путь из клетки (1, 1) в клетку (n, m), если передвигаться за 1 шаг можно только на правую или нижнюю клетку.
кому не трудно помогите сделать. если не трудно вам написать код. Дана прямоугольная таблица nxn клеток. В каждой клетке содержится...

Есть пирог. Игроки по очереди выбирают какую-либо клетку пирога. Определить проигравшего
Пирог.Имеетсяпрямоугольныйпирог,разрезанныйнаm×nчастей (клеток),причем,леваянижняяклеткапирогаотравлена.Игроки по...

Вставить "Х" в клетку StringGrid по щелчку с условием выбора клетки или как сделать "Ход конем"
Занялся созданием игры &quot;Ход конем&quot; в Лазарусе. Поле - StringGrid. Что нужно: Щелкаем мышкой по клетке - в ней появляется &quot;Х&quot;....

1
0 / 0 / 2
Регистрация: 04.10.2012
Сообщений: 4
16.12.2012, 14:44  [ТС]
Игра. Играют 2 игрока, по очереди отрезают 1,2 или 3 клетки из 11, кто отрежет последнюю - проиграл.
Прописал "руками" ИИ, надо переписать через dfs (поиск в глубину). Может кто помочь в этом деле или подкинуть светлые идеи/какие-то ссылки??

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
uses
  crt;
 
procedure player(var course:integer);
  label
    1;
  var
    rand:integer;
  begin
    writeln('Полосочный нагибатор 1.0');readln;
    clrscr;
    1: rand:=random(3);
       if (rand<1) then goto 1;
       if (rand=1) then
         begin
           writeln('По результатам жребия право первого хода передается игроку!');
           course:=1
         end;
       if (rand=2) then
         begin
           writeln('По результатам жребия право первого хода передается нагибатору!');
           course:=2
         end;
       readln
  end;
 
procedure ending(var course:integer);
  begin
    if (course=1) then writeln('Противостояние закончилось победой игрока!')
      else writeln('Противостояние закончилось победой нагибатора!')
  end;
 
{---------------------------------------------------------------------------------------}
 
procedure player1(var course,score:integer);
  var
    pl1:integer;
  begin
    if (course=1) then
      begin
        clrscr;
        writeln('Ход игрока.');
        write('Осталось клеточек: ');writeln(score);
        write('Введите, сколько клеточек вы хотите отрезать: ');readln(pl1);
        if (pl1>0) and (pl1<4) and (pl1<=score) then
          begin
            score:=score-pl1;
            write('Вы отрезали ',pl1,' клеточ');
            if (pl1>1) and (pl1<4) then writeln('ки')
              else writeln('ку');
            write('Осталось клеточек: ');writeln(score)
          end
          else
            begin
              clrscr;
              writeln('Вы не можете столько отрезать!')
            end;
        readln;
        course:=2
      //  if (score=0) then ending(course)
      end;
  end;
 
procedure player2(var course,score:integer);
  label
    1;
  var
    pl2:integer;
  begin
    if (course=2) then
      begin
        case score of
            11: pl2:=2;
            10: pl2:=1;
            9:  pl2:=1;
            8:  pl2:=3;
            7:  pl2:=2;
            6:  pl2:=1;
            5:  pl2:=1;
            4:  pl2:=3;
            3:  pl2:=2;
            2:  pl2:=1;
            1:  pl2:=1;
            0:  goto 1
        end;
        write('Ход нагибатора.');
        write('Осталось клеточек: ');writeln(score);
        score:=score-pl2;
        clrscr;
        write('Нагибатор, не долго думая, отрезал ',pl2,' клеточ');
        if (pl2>1) and (pl2<4) then writeln('ки.')
          else writeln('ку.');
        readln;
        course:=1;
        1: if (score=0) then ending(course)
      end;
  end;
 
procedure game(var course,score:integer);
  begin
    player(course);
    score:=11;
    while (score<>0) do
      begin
        player1(course,score);
        player2(course,score)
      end;
  end;
 
var
  course,score:integer;
begin
  game(course,score)
end.
Добавлено через 12 часов 1 минуту
В общем есть идея, мб дополнит кто, что я упустил
Т.к. ходы мб различны, получаем граф.
Прописать:
-посещенные/не пос вершины;
-условие победы компа, когда отрезано 10 клеток (послед отрезает игрок)
-от каждой верш по 3 разветвления (1/2/3 клетки отрезаем)
-распределить это все по уровням(глубина)
-ну и собственно доходим до конца каждого вар-та
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2012, 14:44
Помогаю со студенческими работами здесь

В таблице клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N)
В таблице NхN, клетки заполнены случайным образом цифрами от 0 до 9. Найти маршрут из клетки A(1,1) в клетку A(N,N) такой, что: 1) он...

В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N
В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N), чтобы...

Вопросы по Си или кто молчит тот двух научит :)
Роюсь в чужом коде, почему вылезает варнинг? uint8_t questionYesNo(char *msg, char *param) { win_showMsgWin(); ssr_prymtf(msg,...

Фишки: Сначала нужно занять последнюю клетку, затем клетку перед ней и так далее
Дана полоска из клеток, пронумерованных от 1 до N. На каждом ходе разрешено поставить фишку на клетку (если её там еще нет) или снять фишку...

Собирание всех коней в одну клетку доски или количество коней, которые немогут прийти в даную клетку
Может кто-то помочь срочно решить олимпиадную задачку. На шахматной доске размером NxM (2 ≤ N, M ≤ 100) находится Q (0...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru