Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/33: Рейтинг темы: голосов - 33, средняя оценка - 4.91
Moonkiller
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 6
1

Написать крестики-нолики

04.02.2012, 22:38. Просмотров 5972. Ответов 11
Метки нет (Все метки)

Умоляю помогите мне с программой. Мой Дядя задал написать мне программу на PascalABC, при запуске которой будет поле 3х3 и там можно будет играть 2 людям в крестики нолики.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 22:38
Ответы с готовыми решениями:

Написать крестики-нолики
Написал программу игры крестики нолики на 1 игрока с машиной program...

Крестики-нолики, написать условие выигрыша
uses GraphABC,Events; var i,j:integer; a:arrayof integer; ...

Крестики нолики, нужно написать процедуру для вывода условий выигрыша
uses GraphABC,Events; var i,j:integer; a:arrayof integer; ...

Крестики-нолики
Как сделать так, чтобы программа могла определять 3 в ряд в крестиках-ноликах?)...

Игра в крестики-нолики с компьютером
Помогите написать простенькую программу) плиз) очень срочно надо) Заранее...

11
Puporev
Модератор
54992 / 42295 / 29206
Регистрация: 18.05.2008
Сообщений: 99,928
05.02.2012, 08:47 2
Если лень самому думать и писать, то неужели даже лень просто набрать в Гугле крестики-нолики в Паскале?
Вот первая ссылка, другие не смотрел.
http://www.google.ru/url?sa=t&rct=j&...a7xDZA&cad=rjt
0
Moonkiller
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 6
05.02.2012, 15:33  [ТС] 3
В инете попробуй найти ее без ГРАФИКИ!!!!Там все очень трудные.....а мне нада простая...только со строками и массивами. без графики.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
05.02.2012, 16:08 4
Есть там без графики. С помощью заливки экрана цветом и линий из ASCII кодов.
0
Moonkiller
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 6
07.02.2012, 15:30  [ТС] 5
пффф я не могу найти.. везде мего сложные.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
07.02.2012, 17:44 6
Есть крестики-нолики, в которых только игрок с компьютером. Но можно и под игрока переделать. Там кода не так много. Нужна?
0
Moonkiller
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 6
08.02.2012, 18:09  [ТС] 7
Конечно! умоляю покажи ссылку, я никак найти не могу.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.02.2012, 20:09 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ссылку не знаю, а вот код имеется (причем вырезал я оттуда примерно половину лишнего)
Если вырезать еще и всякие заливки экрана, значки и звуки, то мб еще на четверть укоротить можно.
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
program X_O;
uses crt;
var mas : array[0..2,0..2] of integer;
    kletka,curX,curY,hod,cvetX,cvetO,slozhn,znach,sound1 : byte;
    krestik,nolik,klav : char;
    komb : integer;
    move : boolean;
label start,player1,comp1,urov,newgame,menu,winLose;
begin
 slozhn:=3;
 sound1:=1;
 cvetX:=10;
 cvetO:=14;
 krestik:='X';
 nolik:='O';
 randomize;
 textbackground(1);
 goto newgame;
                        {Ќ*з*«® ЁЈал}
start:
 clrscr;
 mas[0,0]:=0;
 mas[0,1]:=0;
 mas[0,2]:=0;
 mas[1,0]:=0;
 mas[1,1]:=0;
 mas[1,2]:=0;
 mas[2,0]:=0;
 mas[2,1]:=0;
 mas[2,2]:=0;
 textbackground(2);
 clrscr;
 textcolor(1);
 textbackground(7);
 textcolor(8);
 gotoxy(1,1);
 write(#24#25#26#27,' >> ¤ўЁ¦Ґ*ЁҐ Єгаб®а* ');
 gotoxy(66,1);
 write(' Їа®ЎҐ« >> 室 ');
 gotoxy (1,25);
 write(' 1 >> *®ў*п ЁЈа* ');
 gotoxy(68,25);
 clreol;
 write(' 2 >> ўл室 ');
 textbackground(2);
 if move then goto player1 else goto comp1;
                        {Џ®«Ґ ЁЈал/室 ЁЈа®Є*}
player1:
 textcolor(1);
 gotoxy(10,4);
 gotoxy(24,4);
 gotoxy(35,10);
 write('ЪДДДВДДДВДДДї');
 gotoxy(34,10);
 write(#199);
 gotoxy(35,11);
 write('і   і   і   і');
 gotoxy(34,11);
 write(#199);
 gotoxy(35,12);
 write('ГДДДЕДДДЕДДДґ');
 gotoxy(34,12);
 write(#199);
 gotoxy(35,13);
 write('і   і   і   і');
 gotoxy(34,13);
 write(#199);
 gotoxy(35,14);
 write('ГДДДЕДДДЕДДДґ');
 gotoxy(34,14);
 write(#199);
 gotoxy(35,15);
 write('і   і   і   і');
 gotoxy(34,15);
 write(#199);
 gotoxy(35,16);
 write('АДДДБДДДБДДДЩ');
 gotoxy(47,10);
 write(#187);
 gotoxy(35,10);
 write(#201);
 gotoxy(47,16);
 write(#188);
 gotoxy(35,16);
 write(#200);
 gotoxy(48,10);
 write(#182);
 gotoxy(48,11);
 write(#182);
 gotoxy(48,12);
 write(#182);
 gotoxy(48,13);
 write(#182);
 gotoxy(48,14);
 write(#182);
 gotoxy(48,15);
 write(#182);
 kletka:=0;
 repeat
  hod:=mas[trunc(kletka/3),kletka mod 3];
  if hod<>0 then
  begin
   gotoxy(trunc(kletka/3)*4+37,(kletka mod 3)*2+11);
   if hod=1 then begin textcolor(cvetX); write(krestik); end else begin textcolor(cvetO); write(nolik); end;
  end;
  kletka:=kletka+1;
 until kletka=9;
 textcolor(0);
 gotoxy(curX*4+38,curY*2+11);
 write('');
 kletka:=0;
 repeat
  komb:=mas[kletka,0]+mas[kletka,1]+mas[kletka,2];
  if (komb=3) or (komb=-3) then goto winLose;
  komb:=mas[0,kletka]+mas[1,kletka]+mas[2,kletka];
  if (komb=3) or (komb=-3) then goto winLose;
  kletka:=kletka+1;
 until kletka=3;
 komb:=mas[0,0]+mas[1,1]+mas[2,2];
 if (komb=3) or (komb=-3) then goto winLose;
 komb:=mas[2,0]+mas[1,1]+mas[0,2];
 if (komb=3) or (komb=-3) then goto winLose;
 if (mas[0,0]<>0) and (mas[0,1]<>0) and (mas[0,2]<>0) and (mas[1,0]<>0) and (mas[1,1]<>0) and (mas[1,2]<>0) and
  (mas[2,0]<>0) and (mas[2,1]<>0)
 and (mas[2,2]<>0) then
 begin
  sound(sound1*1000);
  mas[0,0]:=0;
  mas[0,1]:=0;
  mas[0,2]:=0;
  mas[1,0]:=0;
  mas[1,1]:=0;
  mas[1,2]:=0;
  mas[2,0]:=0;
  mas[2,1]:=0;
  mas[2,2]:=0;
  delay(sound1*2000);
  nosound;
  gotoxy(38,8);
  textcolor(14);
  write('ЌЁзмп.', #5);
  if move then move:=false else move:=true;
  readkey;
  gotoxy(38,8);
  write('             ');
  if move then goto player1 else goto comp1;
 end;
 klav:=readkey;
 case klav of
  '1' : goto newgame;
  '2' : exit;
  ' ' : if mas[curX,curY]=0 then begin mas[curX,curY]:=1; goto comp1; end
    else begin sound(sound1*100); delay(sound1*300); nosound; end;
  #27 : exit;
  #0 :
  begin
   klav:=readkey;
   case klav of
    #72 : if curY>0 then curY:=curY-1;
    #75 : if curX>0 then curX:=curX-1;
    #77 : if curX<2 then curX:=curX+1;
    #80 : if curY<2 then curY:=curY+1;
   end;
  end;
 end;
 goto player1;
                        {•®¤ Є®¬ЇовҐа*}
comp1:
 repeat
  hod:=mas[trunc(kletka/3),kletka mod 3];
  if hod<>0 then
  begin
   gotoxy(trunc(kletka/3)*4+37,(kletka mod 3)*2+11);
   if hod=1 then begin textcolor(cvetX); write(krestik); end else begin textcolor(cvetO); write(nolik); end;
  end;
  kletka:=kletka+1;
 until kletka=9;
 kletka:=0;
 repeat
  komb:=mas[kletka,0]+mas[kletka,1]+mas[kletka,2];
  if (komb=3) or (komb=-3) then goto winLose;
  komb:=mas[0,kletka]+mas[1,kletka]+mas[2,kletka];
  if (komb=3) or (komb=-3) then goto winLose;
  kletka:=kletka+1;
 until kletka=3;
 komb:=mas[0,0]+mas[1,1]+mas[2,2];
 if (komb=3) or (komb=-3) then goto winLose;
 komb:=mas[2,0]+mas[1,1]+mas[0,2];
 if (komb=3) or (komb=-3) then goto winLose;
 if (mas[0,0]<>0) and (mas[0,1]<>0) and (mas[0,2]<>0) and (mas[1,0]<>0) and (mas[1,1]<>0) and (mas[1,2]<>0) and (mas[2,0]<>0)
  and (mas[2,1]<>0)
 and (mas[2,2]<>0) then goto player1;
 if slozhn=2 then goto urov;
 
 if (kletka=2) and (slozhn<>0) then goto urov;
 if (mas[1,1]=0) and (random(3)<>2) then begin mas[1,1]:=-1; goto player1; end;
 kletka:=0;
 repeat
  if (mas[kletka,0]+mas[kletka,1]+mas[kletka,2]=2) or (mas[kletka,0]+mas[kletka,1]+mas[kletka,2]=-2) then
  begin
   hod:=0;
   repeat
    if mas[kletka,hod]=0 then mas[kletka,hod]:=-1;
    hod:=hod+1;
   until hod=3;
   goto player1;
  end;
  if (mas[0,kletka]+mas[1,kletka]+mas[2,kletka]=2) or (mas[0,kletka]+mas[1,kletka]+mas[2,kletka]=-2) then
  begin
   hod:=0;
   repeat
    if mas[hod,kletka]=0 then mas[hod,kletka]:=-1;
    hod:=hod+1;
   until hod=3;
   goto player1;
  end;
  kletka:=kletka+1;
 until kletka=3;
 if (mas[0,0]+mas[1,1]+mas[2,2]=2) or (mas[0,0]+mas[1,1]+mas[2,2]=-2) then
 begin
  if mas[0,0]=0 then mas[0,0]:=-1;
  if mas[1,1]=0 then mas[1,1]:=-1;
  if mas[2,2]=0 then mas[2,2]:=-1;
  goto player1;
 end;
 if (mas[2,0]+mas[1,1]+mas[0,2]=2) or (mas[2,0]+mas[1,1]+mas[0,2]=-2) then
 begin
  if mas[2,0]=0 then mas[2,0]:=-1;
  if mas[1,1]=0 then mas[1,1]:=-1;
  if mas[0,2]=0 then mas[0,2]:=-1;
  goto player1;
 end;
urov:
 repeat
  kletka:=random(10);
  if mas[trunc(kletka/3),kletka mod 3]=0 then begin mas[trunc(kletka/3),kletka mod 3]:=-1; goto player1; end;
 until kletka=11;
 goto player1;
                        {Ќ*бва®©ЄЁ ЁЈал}
newgame:
 clrscr;
 textcolor(86);
 gotoxy(29,3);
 write('>Ќ*з*«® *®ў®© ЁЈал<');
 textcolor(8);
 gotoxy(20,4);
 gotoxy(4,8);
 textcolor(10);
 write('1) >> ‚л Ўг¤ҐвҐ ЁЈа*вм: ');
 gotoxy(4,9);
 write('2) >> ЏҐаўл© 室: ');
 gotoxy(1,9);
 write(#18);
 gotoxy(4,10);
 write('3) >> ‡ўгЄ: ');
 gotoxy(4,16);
 textcolor(10);
 write('Џа®ЎҐ« >> **з*вм ЁЈаг    esc >> ўл室');
menu:
 textcolor(14);
 gotoxy(26,8);
 if krestik='X' then write(' ЄаҐбвЁЄ®¬') else write(' *®«ЁЄ®¬  ');
 gotoxy(20,9);
 case znach of
  0 : write(' б«гз*©*®  ');
  1 : write(' ў*и       ');
  2 : write(' Є®¬ЇмовҐа*');
 end;
 gotoxy(14,10);
 if sound1=1 then write(' ўЄ«озҐ* ',#14) else write(' ўлЄ«озҐ* ');
 gotoxy(35,10);
 klav:=readkey;
 case klav of
  '1' : if krestik='X' then begin krestik:='O'; nolik:='X'; end else begin krestik:='X'; nolik:='O'; end;
  '2' : if znach<2 then znach:=znach+1 else znach:=0;
  '3' : if sound1=1 then sound1:=0 else sound1:=1;
  #27 : exit;
  ' ' :
  begin
  kletka:=random(2);
   case znach of
    0 : if kletka<1 then move:=true else move:=false;
    1 : move:=true;
    2 : move:=false;
   end;
   goto start;
  end;
 end;
 goto menu;
                        {Џ®ЎҐ¤*/Їа®ЁЈали}
winLose:
 gotoxy(34,8);
 clreol;
 if komb=3 then begin textcolor(4); write('‚л ўлЁЈа*«Ё! ',#1 ); end
 else begin gotoxy(34,8); textcolor(8); write('‚л Їа®ЁЈа*«Ё. ', #2);  end;
 mas[0,0]:=0;
 mas[0,1]:=0;
 mas[0,2]:=0;
 mas[1,0]:=0;
 mas[1,1]:=0;
 mas[1,2]:=0;
 mas[2,0]:=0;
 mas[2,1]:=0;
 mas[2,2]:=0;
 sound(sound1*500);
 delay(sound1*2000);
 nosound;
 delay(sound1*1000);
 sound(sound1*500);
 delay(sound1*2000);
 nosound;
 readkey;
 gotoxy(1,8);
 clreol;
 if move then move:=false else move:=true;
 if move then goto player1 else goto comp1;
end.
0
Moonkiller
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 6
11.02.2012, 23:19  [ТС] 9
эммм. а что именно надо убрать?? чтобы осталось тока самое легкое. Строки, массивы? Без звуков и т.д.
0
log(n)
107 / 107 / 72
Регистрация: 13.10.2011
Сообщений: 227
12.02.2012, 00:21 10
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
uses crt;
var mas : array[0..2,0..2] of integer;
kletka,curX,curY,hod,slozhn,znach : byte;
krestik,nolik,klav : char;
komb : integer;
move : boolean;
label start,player1,comp1,urov,newgame,menu,winLose;
begin
 slozhn:=3;
 krestik:='X';nolik:='O';
 randomize;
 goto newgame;
start:
 clrscr;
 mas[0,0]:=0;
 mas[0,1]:=0;
 mas[0,2]:=0;
 mas[1,0]:=0;
 mas[1,1]:=0;
 mas[1,2]:=0;
 mas[2,0]:=0;
 mas[2,1]:=0;
 mas[2,2]:=0;
 clrscr;
 gotoxy(1,1);
 write(#24#25#26#27,' >> ¤ўЁ¦ҐnЁҐ Єгаб®pa ');
 gotoxy(66,1);
 write(' Їа®ЎҐ« >> 室 ');
 gotoxy (1,25);
 write(' 1 >> H®ўaп ЁЈаa ');
 gotoxy(68,25);
 clreol;
 write(' 2 >> ўл室 ');
 if move then goto player1 else goto comp1;
 player1:
 gotoxy(10,4);
 gotoxy(24,4);
 gotoxy(35,10);
 write('ЪДДДВДДДВДДДї');
 gotoxy(34,10);
 write(#199);
 gotoxy(35,11);
 write('і   і   і   і');
 gotoxy(34,11);
 write(#199);
 gotoxy(35,12);
 write('ГДДДЕДДДЕДДДґ');
 gotoxy(34,12);
 write(#199);
 gotoxy(35,13);
 write('і   і   і   і');
 gotoxy(34,13);
 write(#199);
 gotoxy(35,14);
 write('ГДДДЕДДДЕДДДґ');
 gotoxy(34,14);
 write(#199);
 gotoxy(35,15);
 write('і   і   і   і');
 gotoxy(34,15);
 write(#199);
 gotoxy(35,16);
 write('АДДДБДДДБДДДЩ');
 gotoxy(47,10);
 write(#187);
 gotoxy(35,10);
 write(#201);
 gotoxy(47,16);
 write(#188);
 gotoxy(35,16);
 write(#200);
 gotoxy(48,10);
 write(#182);
 gotoxy(48,11);
 write(#182);
 gotoxy(48,12);
 write(#182);
 gotoxy(48,13);
 write(#182);
 gotoxy(48,14);
 write(#182);
 gotoxy(48,15);
 write(#182);
 kletka:=0;
 repeat
  hod:=mas[trunc(kletka/3),kletka mod 3];
  if hod<>0 then
  begin
   gotoxy(trunc(kletka/3)*4+37,(kletka mod 3)*2+11);
   if hod=1 then begin  write(krestik); end else begin  write(nolik); end;
  end;
  kletka:=kletka+1;
 until kletka=9;
 gotoxy(curX*4+38,curY*2+11);
 write('');
 kletka:=0;
 repeat
  komb:=mas[kletka,0]+mas[kletka,1]+mas[kletka,2];
  if (komb=3) or (komb=-3) then goto winLose;
  komb:=mas[0,kletka]+mas[1,kletka]+mas[2,kletka];
  if (komb=3) or (komb=-3) then goto winLose;
  kletka:=kletka+1;
 until kletka=3;
 komb:=mas[0,0]+mas[1,1]+mas[2,2];
 if (komb=3) or (komb=-3) then goto winLose;
 komb:=mas[2,0]+mas[1,1]+mas[0,2];
 if (komb=3) or (komb=-3) then goto winLose;
 if (mas[0,0]<>0) and (mas[0,1]<>0) and (mas[0,2]<>0) and (mas[1,0]<>0) and (mas[1,1]<>0) and (mas[1,2]<>0) and
  (mas[2,0]<>0) and (mas[2,1]<>0)
 and (mas[2,2]<>0) then
 begin
  mas[0,0]:=0;
  mas[0,1]:=0;
  mas[0,2]:=0;
  mas[1,0]:=0;
  mas[1,1]:=0;
  mas[1,2]:=0;
  mas[2,0]:=0;
  mas[2,1]:=0;
  mas[2,2]:=0;
   gotoxy(38,8);
  write('ЌЁзмп.', #5);
  if move then move:=false else move:=true;
  readkey;
  gotoxy(38,8);
  write('             ');
  if move then goto player1 else goto comp1;
 end;
 klav:=readkey;
 case klav of
  '1' : goto newgame;
  '2' : exit;
  ' ' : if mas[curX,curY]=0 then begin mas[curX,curY]:=1; goto comp1; end
        else begin end;
  #27 : exit;
  #0 :
  begin
   klav:=readkey;
   case klav of
    #72 : if curY>0 then curY:=curY-1;
    #75 : if curX>0 then curX:=curX-1;
    #77 : if curX<2 then curX:=curX+1;
    #80 : if curY<2 then curY:=curY+1;
   end;
  end;
 end;
 goto player1;
comp1:
 repeat
  hod:=mas[trunc(kletka/3),kletka mod 3];
  if hod<>0 then
  begin
   gotoxy(trunc(kletka/3)*4+37,(kletka mod 3)*2+11);
   if hod=1 then begin write(krestik); end else begin write(nolik); end;
  end;
  kletka:=kletka+1;
 until kletka=9;
 kletka:=0;
 repeat
  komb:=mas[kletka,0]+mas[kletka,1]+mas[kletka,2];
  if (komb=3) or (komb=-3) then goto winLose;
  komb:=mas[0,kletka]+mas[1,kletka]+mas[2,kletka];
  if (komb=3) or (komb=-3) then goto winLose;
  kletka:=kletka+1; until kletka=3;
 komb:=mas[0,0]+mas[1,1]+mas[2,2];
 if (komb=3) or (komb=-3) then goto winLose;
 komb:=mas[2,0]+mas[1,1]+mas[0,2];
 if (komb=3) or (komb=-3) then goto winLose;
 if (mas[0,0]<>0) and (mas[0,1]<>0) and (mas[0,2]<>0) and (mas[1,0]<>0) and (mas[1,1]<>0) and (mas[1,2]<>0) and (mas[2,0]<>0)
 and (mas[2,1]<>0) and (mas[2,2]<>0) then goto player1;
 if slozhn=2 then goto urov;
 if (kletka=2) and (slozhn<>0) then goto urov;
 if (mas[1,1]=0) and (random(3)<>2) then begin mas[1,1]:=-1; goto player1; end;
 kletka:=0;
 repeat
  if (mas[kletka,0]+mas[kletka,1]+mas[kletka,2]=2) or (mas[kletka,0]+mas[kletka,1]+mas[kletka,2]=-2) then
  begin
   hod:=0;
   repeat if mas[kletka,hod]=0 then mas[kletka,hod]:=-1;hod:=hod+1;
   until hod=3;
   goto player1;
  end;
  if (mas[0,kletka]+mas[1,kletka]+mas[2,kletka]=2) or (mas[0,kletka]+mas[1,kletka]+mas[2,kletka]=-2) then
  begin
   hod:=0;
   repeat
    if mas[hod,kletka]=0 then mas[hod,kletka]:=-1;
    hod:=hod+1;
   until hod=3;
   goto player1;
  end;
  kletka:=kletka+1;
 until kletka=3;
 if (mas[0,0]+mas[1,1]+mas[2,2]=2) or (mas[0,0]+mas[1,1]+mas[2,2]=-2) then
 begin
  if mas[0,0]=0 then mas[0,0]:=-1;
  if mas[1,1]=0 then mas[1,1]:=-1;
  if mas[2,2]=0 then mas[2,2]:=-1;
  goto player1;
 end;
 if (mas[2,0]+mas[1,1]+mas[0,2]=2) or (mas[2,0]+mas[1,1]+mas[0,2]=-2) then
 begin
  if mas[2,0]=0 then mas[2,0]:=-1;
  if mas[1,1]=0 then mas[1,1]:=-1;
  if mas[0,2]=0 then mas[0,2]:=-1;
  goto player1;
 end;
urov:
 repeat
  kletka:=random(10);
  if mas[trunc(kletka/3),kletka mod 3]=0 then begin mas[trunc(kletka/3),kletka mod 3]:=-1; goto player1; end;
 until kletka=11;
 goto player1;
 
newgame:
 clrscr;
 gotoxy(29,3);
 write('>Ќaзa«® H®ў®© ЁЈал<');
 gotoxy(20,4);
 gotoxy(4,8);
 write('1) >> ‚л Ўг¤ҐвҐ ЁЈаaвм: ');
 gotoxy(4,9);
 write('2) >> ЏҐаўл© 室: ');
 gotoxy(1,9);
 gotoxy(14,18);
 write('Џа®ЎҐ« >> Haзaвм ЁЈаг    esc >> Bл室');
menu:
gotoxy(26,8);
 if krestik='X' then write(' KаҐбвЁЄ®¬') else write(' H®«ЁЄ®¬  ');
 gotoxy(20,9);
 case znach of
  0 : write(' б«гзa©H®  ');
  1 : write(' ўaи       ');
  2 : write(' Є®¬ЇмовҐаa');
 end;
 gotoxy(14,10);
 gotoxy(35,10);
 klav:=readkey;
 case klav of
  '1' : if krestik='X' then begin krestik:='O'; nolik:='X'; end else begin krestik:='X'; nolik:='O'; end;
  '2' : if znach<2 then znach:=znach+1 else znach:=0;
 
  #27 : exit;
  ' ' :
  begin
  kletka:=random(2);
   case znach of
    0 : if kletka<1 then move:=true else move:=false;
    1 : move:=true;
    2 : move:=false;
   end;
   goto start;
  end;
 end;
 goto menu;
winLose:
 gotoxy(34,8);
 clreol;
 if komb=3 then begin  write('‚л ўлЁЈаa«Ё!'); end
 else begin gotoxy(34,8);  write('‚л Їа®ЁЈаa«Ё.');  end;
 mas[0,0]:=0;
 mas[0,1]:=0;
 mas[0,2]:=0;
 mas[1,0]:=0;
 mas[1,1]:=0;
 mas[1,2]:=0;
 mas[2,0]:=0;
 mas[2,1]:=0;
 mas[2,2]:=0;
 readkey;
 gotoxy(1,8);
 clreol;
 if move then move:=false else move:=true;
 if move then goto player1 else goto comp1;
end.
Без звука и цвета.
0
Moonkiller
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 6
12.02.2012, 11:39  [ТС] 11
Цитата Сообщение от log(n) Посмотреть сообщение
write(#24#25#26#27,' >> ¤ўЁ¦ҐnЁҐ Єгаб®pa ');
неверное выражение пишет

Добавлено через 5 минут
мне надо вот так:Инициализация=>Вывод на экран=>Ввод в строку=>Если Игрок 1=1=>Игрок 1=0
Если Игрок 2=1=>Игрок 2=0
и так далее без uses.

Добавлено через 39 минут
Ничего вы не можете помочь...я в отчаяньи((((((((((((((
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
12.02.2012, 12:55 12
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Сделал еще меньше:
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
uses crt;
var mas : array[0..2,0..2] of integer;
kletka,curX,curY,hod,slozhn,znach : integer;
krestik,nolik,klav : char;
komb : integer;
move : boolean;
label start,player1,comp1,urov,menu,winLose;
begin
 slozhn:=3;
 krestik:='X';
 nolik:='O';
 randomize;
 goto start;
start:
 clrscr;
 mas[0,0]:=0;
 mas[0,1]:=0;
 mas[0,2]:=0;
 mas[1,0]:=0;
 mas[1,1]:=0;
 mas[1,2]:=0;
 mas[2,0]:=0;
 mas[2,1]:=0;
 mas[2,2]:=0;
 clrscr;
 gotoxy(1,1);
 gotoxy(66,1);
 write(' probel >> hod ');
 gotoxy(68,25);
 clreol;
 write(' 2 >> Vyhod ');
 if move then goto player1 else goto comp1;
 player1:
 gotoxy(10,4);
 gotoxy(24,4);
 gotoxy(35,10);
 write('|---|---|---|');
 gotoxy(35,11);
 write('|   |   |   |');
 gotoxy(35,12);
 write('|---|---|---|');
 gotoxy(35,13);
 write('|   |   |   |');
 gotoxy(35,14);
 write('|---|---|---|');
 gotoxy(35,15);
 write('|   |   |   |');
 gotoxy(35,16);
 write('|___|___|___|');
 
 kletka:=0;
 repeat
  hod:=mas[trunc(kletka/3),kletka mod 3];
  if hod<>0 then
  begin
   gotoxy(trunc(kletka/3)*4+37,(kletka mod 3)*2+11);
   if hod=1 then begin  write(krestik); end else begin  write(nolik); end;
  end;
  kletka:=kletka+1;
 until kletka=9;
 gotoxy(curX*4+38,curY*2+11);
 write('');
 kletka:=0;
 repeat
  komb:=mas[kletka,0]+mas[kletka,1]+mas[kletka,2];
  if (komb=3) or (komb=-3) then goto winLose;
  komb:=mas[0,kletka]+mas[1,kletka]+mas[2,kletka];
  if (komb=3) or (komb=-3) then goto winLose;
  kletka:=kletka+1;
 until kletka=3;
 komb:=mas[0,0]+mas[1,1]+mas[2,2];
 if (komb=3) or (komb=-3) then goto winLose;
 komb:=mas[2,0]+mas[1,1]+mas[0,2];
 if (komb=3) or (komb=-3) then goto winLose;
 if (mas[0,0]<>0) and (mas[0,1]<>0) and (mas[0,2]<>0) and (mas[1,0]<>0) and (mas[1,1]<>0) and (mas[1,2]<>0) and
  (mas[2,0]<>0) and (mas[2,1]<>0)
 and (mas[2,2]<>0) then
 begin
  mas[0,0]:=0;
  mas[0,1]:=0;
  mas[0,2]:=0;
  mas[1,0]:=0;
  mas[1,1]:=0;
  mas[1,2]:=0;
  mas[2,0]:=0;
  mas[2,1]:=0;
  mas[2,2]:=0;
   gotoxy(38,8);
  write('Ничья.');
  if move then move:=false else move:=true;
  readkey;
  gotoxy(38,8);
  write('             ');
  if move then goto player1 else goto comp1;
 end;
 klav:=readkey;
 case klav of
  '2' : exit;
  ' ' : if mas[curX,curY]=0 then
         begin
          mas[curX,curY]:=1;
          goto comp1;
         end
         else
          begin
          end;
  #27 : exit;
  #0 :  begin
         klav:=readkey;
         case klav of
          #72 : if curY>0 then curY:=curY-1;
          #75 : if curX>0 then curX:=curX-1;
          #77 : if curX<2 then curX:=curX+1;
          #80 : if curY<2 then curY:=curY+1;
        end;
    end;
 end;
 goto player1;
 comp1:
 repeat
  hod:=mas[trunc(kletka/3),kletka mod 3];
  if hod<>0 then
  begin
   gotoxy(trunc(kletka/3)*4+37,(kletka mod 3)*2+11);
   if hod=1 then begin write(krestik); end else begin write(nolik); end;
  end;
  kletka:=kletka+1;
 until kletka=9;
 kletka:=0;
 repeat
  komb:=mas[kletka,0]+mas[kletka,1]+mas[kletka,2];
  if (komb=3) or (komb=-3) then goto winLose;
  komb:=mas[0,kletka]+mas[1,kletka]+mas[2,kletka];
  if (komb=3) or (komb=-3) then goto winLose;
  kletka:=kletka+1; until kletka=3;
 komb:=mas[0,0]+mas[1,1]+mas[2,2];
 if (komb=3) or (komb=-3) then goto winLose;
 komb:=mas[2,0]+mas[1,1]+mas[0,2];
 if (komb=3) or (komb=-3) then goto winLose;
 if (mas[0,0]<>0) and (mas[0,1]<>0) and (mas[0,2]<>0) and (mas[1,0]<>0) and (mas[1,1]<>0) and (mas[1,2]<>0) and (mas[2,0]<>0)
 and (mas[2,1]<>0) and (mas[2,2]<>0) then goto player1;
 if slozhn=2 then goto urov;
 if (kletka=2) and (slozhn<>0) then goto urov;
 if (mas[1,1]=0) and (random(3)<>2) then begin mas[1,1]:=-1; goto player1; end;
 kletka:=0;
 repeat
  if (mas[kletka,0]+mas[kletka,1]+mas[kletka,2]=2) or (mas[kletka,0]+mas[kletka,1]+mas[kletka,2]=-2) then
  begin
   hod:=0;
   repeat if mas[kletka,hod]=0 then mas[kletka,hod]:=-1;hod:=hod+1;
   until hod=3;
   goto player1;
  end;
  if (mas[0,kletka]+mas[1,kletka]+mas[2,kletka]=2) or (mas[0,kletka]+mas[1,kletka]+mas[2,kletka]=-2) then
  begin
   hod:=0;
   repeat
    if mas[hod,kletka]=0 then mas[hod,kletka]:=-1;
    hod:=hod+1;
   until hod=3;
   goto player1;
  end;
  kletka:=kletka+1;
 until kletka=3;
 if (mas[0,0]+mas[1,1]+mas[2,2]=2) or (mas[0,0]+mas[1,1]+mas[2,2]=-2) then
 begin
  if mas[0,0]=0 then mas[0,0]:=-1;
  if mas[1,1]=0 then mas[1,1]:=-1;
  if mas[2,2]=0 then mas[2,2]:=-1;
  goto player1;
 end;
 if (mas[2,0]+mas[1,1]+mas[0,2]=2) or (mas[2,0]+mas[1,1]+mas[0,2]=-2) then
 begin
  if mas[2,0]=0 then mas[2,0]:=-1;
  if mas[1,1]=0 then mas[1,1]:=-1;
  if mas[0,2]=0 then mas[0,2]:=-1;
  goto player1;
 end;
urov:
 repeat
  kletka:=random(10);
  if mas[trunc(kletka/3),kletka mod 3]=0 then begin mas[trunc(kletka/3),kletka mod 3]:=-1; goto player1; end;
 until kletka=11;
 goto player1;
winLose:
 gotoxy(34,8);
 clreol;
 if komb=3 then begin  write('Vy vyigrali!'); end
 else begin gotoxy(34,8);  write('Vy proigrali.');  end;
 mas[0,0]:=0;
 mas[0,1]:=0;
 mas[0,2]:=0;
 mas[1,0]:=0;
 mas[1,1]:=0;
 mas[1,2]:=0;
 mas[2,0]:=0;
 mas[2,1]:=0;
 mas[2,2]:=0;
 readkey;
 gotoxy(1,8);
 clreol;
 if move then move:=false else move:=true;
 if move then goto player1 else goto comp1;
end.
Moonkiller, с меня был только код. А копаться в нем я вообще не обещал.
0
12.02.2012, 12:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 12:55

Ошибка в игре крестики-нолики
есть код программы крестики нолики. иногда сразу при запуске пишет &quot;Ошибка: 3 -...

Крестики-Нолики, и все же как создать ии?
Как создать ии, если кто поможет, хотя бы алгоритм для процедуры, или написать...

Крестики-Нолики: что изучить перед написанием
Что изучить из паскаля, чтобы написать такую вещь?


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru