Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
4 / 4 / 2
Регистрация: 26.02.2012
Сообщений: 67
1

Игра крестики и нолики - найти ошибку в коде

07.08.2014, 14:32. Показов 1268. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите в чём ошибка. Когда запускаю программу первый раз "Х" пишется а потом нет.

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
uses crt;
var
a: array[1..3,1..3] of char;
b,c,i,j,v1,v2: integer;
label 1;
begin
 v1:=0;
 v2:=0;
 for i:=1 to 3 do
  for j:=1 to 3 do
   a[i,j]:='-';
 for i:=1 to 3 do
  begin
   for j:=1 to 3 do
    write(a[i,j], ' ');
    writeln();
  end;
 1:readln(b);                            //Игрок Х
 case b of
 1: a[3,1]:='X';
 2: a[3,2]:='X';
 3: a[3,3]:='X';
 4: a[2,1]:='X';
 5: a[2,2]:='X';
 6: a[2,3]:='X';
 7: a[1,1]:='X';
 8: a[1,2]:='X';
 9: a[1,3]:='X';
 end;
 clrscr;
 for i:=1 to 3 do
  begin
   for j:=1 to 3 do
    write(a[i,j], ' ');
    writeln();
  end;
  if (a[1,1]='X') and (a[1,2]='X') and (a[1,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[2,1]='X') and (a[2,2]='X') and (a[2,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[3,1]='X') and (a[3,2]='X') and (a[3,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,1]='X') and (a[2,1]='X') and (a[3,1]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,2]='X') and (a[2,2]='X') and (a[3,2]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,3]='X') and (a[2,3]='X') and (a[3,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,1]='X') and (a[2,2]='X') and (a[3,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[3,1]='X') and (a[2,2]='X') and (a[1,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
   readln(c);                                 //Игрок О
 case c of
 1: a[3,1]:='O';
 2: a[3,2]:='O';
 3: a[3,3]:='O';
 4: a[2,1]:='O';
 5: a[2,2]:='O';
 6: a[2,3]:='O';
 7: a[1,1]:='O';
 8: a[1,2]:='O';
 9: a[1,3]:='O';
 end;
 clrscr;
 for i:=1 to 3 do
  begin
   for j:=1 to 3 do
    write(a[i,j], ' ');
    writeln();
  end;
  if (a[1,1]='O') and (a[1,2]='O') and (a[1,3]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[2,1]='O') and (a[2,2]='O') and (a[2,3]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[3,1]='O') and (a[3,2]='O') and (a[3,3]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[1,1]='O') and (a[2,1]='O') and (a[3,1]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[1,2]='O') and (a[2,2]='O') and (a[3,2]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[1,3]='O') and (a[2,3]='O') and (a[3,3]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[1,1]='O') and (a[2,2]='O') and (a[3,3]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
    if (a[3,1]='O') and (a[2,2]='O') and (a[1,3]='O') then
  begin
   v2:=v2+1;
   writeln('Выйграл игрок O');
  end;
  goto 1;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2014, 14:32
Ответы с готовыми решениями:

Игра крестики-нолики
Сталкиваюсь с этой проблемой не первый раз. Суть проблемы в том,что когда я пытаюсь прописать код...

Игра: Крестики-нолики
program tictac; uses GraphAbc, ABCobjects; var mas: array of rectangleABC; wx, wy,...

Игра в Крестики-нолики с двумя игроками
Доброго времени суток! Требуется программа под названием крестики-нолики (3x3). Ввод происходит...

Игра крестики-нолики в графическом режиме
Крестики-нолики. Описание: Игра осуществляется по стандартным правилам для поля 3х3....

8
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.08.2014, 14:42 2
У меня ошибок нет. Выбираю число от 1 до 9, жму, выводит Х, снова-выводит О и так до конца. Также при повторном запуске.
0
4 / 4 / 2
Регистрация: 26.02.2012
Сообщений: 67
07.08.2014, 14:47  [ТС] 3
У меня первый раз Х ставится потом только О, а на Х нажимаю цифру а он не реагирует.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.08.2014, 15:02 4
У меня так
Миниатюры
Игра крестики и нолики - найти ошибку в коде  
0
4 / 4 / 2
Регистрация: 26.02.2012
Сообщений: 67
07.08.2014, 15:07  [ТС] 5
Так и должно работать, но у меня не работает.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.08.2014, 15:08 6
Ничем помочь не могу.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
07.08.2014, 15:21 7
Лучший ответ Сообщение было отмечено VxVxN как решение

Решение

VxVxN, замени строку №18 вот с такой:
Pascal
1
1:readln(b);                            //Игрок Х
на такие 3 строчки:
Pascal
1
2
3
1:
 b := -1;
 readln(b);                            //Игрок Х
, программа заработает как ожидалось...
1
4 / 4 / 2
Регистрация: 26.02.2012
Сообщений: 67
07.08.2014, 15:52  [ТС] 8
Большое спасибо, все заработало.
0
22 / 22 / 34
Регистрация: 29.04.2014
Сообщений: 145
09.08.2014, 14:28 9
И еще:
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
if (a[1,1]='X') and (a[1,2]='X') and (a[1,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[2,1]='X') and (a[2,2]='X') and (a[2,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[3,1]='X') and (a[3,2]='X') and (a[3,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,1]='X') and (a[2,1]='X') and (a[3,1]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,2]='X') and (a[2,2]='X') and (a[3,2]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,3]='X') and (a[2,3]='X') and (a[3,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[1,1]='X') and (a[2,2]='X') and (a[3,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
    if (a[3,1]='X') and (a[2,2]='X') and (a[1,3]='X') then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
Лучше замени на:
Pascal
1
2
3
4
5
if ((a[1,1]='X') and (a[1,2]='X') and (a[1,3]='X')) or ((a[2,1]='X') and (a[2,2]='X') and (a[2,3]='X')) or ... then
  begin
   v1:=v1+1;
   writeln('Выйграл игрок Х');
  end;
0
09.08.2014, 14:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2014, 14:28
Помогаю со студенческими работами здесь

Найти ошибку в коде (мини-игра с пушечными выстрелами)
Пишу мини-игру, про пушечные выстрелы, почему после первого выстрела не пишет надпись ввести то-то...

Игра "Угадай число". Найти ошибку в коде
uses graphabc,ABCButtons; var p,c,i,h,n,y,g,f,d,o,u:longint; l,s:string; btn:buttonabc;...

Крестики-нолики: плохо прорисовываются "нолики"
Я, наверное, всех уже достал своей игрой, но я опять напоролся на подводный камень. Игра -...

Крестики-нолики
Нужно реализовать в Pascal. Что бы были входные(1.in) и выходные(1.out) данные. ) создать .ехе файл...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru