Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
1

Крестики Нолики

18.11.2010, 14:21. Просмотров 2743. Ответов 10
Метки нет (Все метки)

учу си месяц дали задачу... хелп ми плиз!
Игра крестики нолики.
Игра в крестики нолики вдется на квадратном поле 3*3. Играют двое. Начинают крестики. каждый из игроков, поочередно, ставит свой значок, крестик или нолик, на свободную клетку. Выигрывает тот кто первый поставит три своих значка вряд по вертикали, горизонтали или диагонали.
Последовательность ходов задается 9-значным числом. Цифра обозначает номер клетки хода, а порядковый номер цифры-номер хода.
Клетки пронумерованны, как на рисунке:
789
456
123
Опредилить,кто выиграл, крестики или нолики?
Записать фаил в output.txt победителя
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2010, 14:21
Ответы с готовыми решениями:

Формальная постановка для игры крестики и нолики
Доброго времени суток. Написал игру крестики и нолики размерностью 4х4. Нужно написать к этой игре...

Крестики Нолики
Здравствуйте есть одна проблема нашел на этом форуме исходники к игре крестики нолики однако не...

Крестики нолики
Я вот написал алгоритм для крестиков ноликов, а он чегото не работает( посмотрите пожалуйста....

Игра Крестики-нолики
Всем привет. Сделал игру Крестики-нолики на консоли, хотел бы узнать можно ее как-нибудь улучшить,...

10
Заблокирован
18.11.2010, 14:38 2
Цитата Сообщение от ПОНЧИК Посмотреть сообщение
учу си месяц дали задачу... хелп ми плиз!
Игра крестики нолики.
Игра в крестики нолики вдется на квадратном поле 3*3. Играют двое. Начинают крестики. каждый из игроков, поочередно, ставит свой значок, крестик или нолик, на свободную клетку. Выигрывает тот кто первый поставит три своих значка вряд по вертикали, горизонтали или диагонали.
Последовательность ходов задается 9-значным числом. Цифра обозначает номер клетки хода, а порядковый номер цифры-номер хода.
Клетки пронумерованны, как на рисунке:
789
456
123
Опредилить,кто выиграл, крестики или нолики?
Записать фаил в output.txt победителя
нету не 0 не +?!
0
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
18.11.2010, 14:39  [ТС] 3
нет нету
1
Заблокирован
18.11.2010, 14:41 4
Цитата Сообщение от noH4uk Посмотреть сообщение
нет нету
почему? если крестики нолики то должны быть!
0
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
18.11.2010, 15:20  [ТС] 5
хз, такое задание...(((((((

Добавлено через 20 минут
ну помогитееееее
1
Эксперт С++
4707 / 2532 / 753
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 15:30 6
В общих чертах можно сделать так:
1. Создаем массив 3*3. Заполняем его значениями -1.
2. Начинаем его заполнять из значений 9-ти значного числа. Лучше написать отдельную функцию. Если ход первого игрока, то ставим в соотвествующую ячейку массива 1, если ход второго игрока, то ставим в соответствующую ячейку 0.
3. После пятого хода начинаем проверяить массив на то что в какой-нибудь строке, столбце или диагонали не находятся все 1 или 0.
1
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
18.11.2010, 15:44  [ТС] 7
а точнее??? как это в языке си записать???

Добавлено через 26 секунд
и плюс ко всему там нет никаких 0 абсолютно!(((
1
Заблокирован
18.11.2010, 17:45 8
Цитата Сообщение от ПОНЧИК Посмотреть сообщение
а точнее??? как это в языке си записать???

Добавлено через 26 секунд
и плюс ко всему там нет никаких 0 абсолютно!(((
Да все понятно умничка ты! все правильно!
0
Эксперт С++
4707 / 2532 / 753
Регистрация: 18.08.2009
Сообщений: 4,550
18.11.2010, 17:55 9
Цитата Сообщение от noH4uk Посмотреть сообщение
и плюс ко всему там нет никаких 0 абсолютно!(((
Конечно нет 0. Смотрите:
Есть на входе девятизначное число, например: 789456123
Теперь
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Создаем массив 3*3. Заполняем его значениями -1.
Вот такой массив создаем:
-1 -1 -1
-1 -1 -1
-1 -1 -1

Цитата Сообщение от valeriikozlov Посмотреть сообщение
2. Начинаем его заполнять из значений 9-ти значного числа. Лучше написать отдельную функцию. Если ход первого игрока, то ставим в соотвествующую ячейку массива 1, если ход второго игрока, то ставим в соответствующую ячейку 0.
Первая цифра 7 - ход первого игрока, значит наш массив теперь будет выглядеть так:
1 -1 -1
-1 -1 -1
-1 -1 -1
Следующая цифра 8, ходит второй игрок, значит теперь наш массив будет таким:
1 0 -1
-1 -1 -1
-1 -1 -1
Далее цифра 9, ходит первый игрок:
1 0 1
-1 -1 -1
-1 -1 -1
и т.д. и не забудьте:
Цитата Сообщение от valeriikozlov Посмотреть сообщение
3. После пятого хода начинаем проверяить массив на то что в какой-нибудь строке, столбце или диагонали не находятся все 1 или 0.
0
14 / 14 / 1
Регистрация: 15.10.2010
Сообщений: 49
18.11.2010, 19:32 10
C++
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
#include <conio.h>
#include <stdio.h>
#include<iostream>
int main()
{
int l,i,j,k=0,S=1,A[3][3],x,y,n,p;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
A[i][j]=0;
printf("\n      j1  j2  j3\n");
printf("    \332\304\304\304\302\304\304\304\302\304\304\304\277\n");
printf(" i1 \263   \263   \263   \263\n");
printf("    \303\304\304\304\305\304\304\304\305\304\304\304\264\n");
printf(" i2 \263   \263   \263   \263\n");
printf("    \303\304\304\304\305\304\304\304\305\304\304\304\264\n");
printf(" i3 \263   \263   \263   \263\n");
printf("    \300\304\304\304\301\304\304\304\301\304\304\304\331\n");
for (l=0;l<9;l++)
{
 printf(" HOD %d\n",S); 
if (S%2==1) {n=1; p=1;;}
if (S%2==0) {n=2; p=-1;;}
S++;
printf("igrok %d:\n",n);
while(x<0 || x>3 || y<0 || y>3 || A[x-1][y-1]==1 || A[x-1][y-1]==-1) 
{
printf("i = "); scanf("%d",&x);
printf("j = "); scanf("%d",&y);
i=x-1; 
j=y-1;
if(x<0 || x>3 || y<0 || y>3 || A[x-1][y-1]==1 || A[x-1][y-1]==-1)
printf("nevernie koordinati! vvedite esh'e raz!\n");
}
A[i][j]=p;
printf("      j1  j2  j3\n");
printf("    \332\304\304\304\302\304\304\304\302\304\304\304\277\n");
printf(" i1 \263");if(A[0][0]==1)printf(" X ");if(A[0][0]==-1)printf(" O ");
if(A[0][0]!=1 && A[0][0]!=-1)printf("   ");
printf("\263"); if(A[0][1]==1) printf(" X "); if(A[0][1]==-1) printf(" O ");
if(A[0][1]!=1 && A[0][1]!=-1)printf("   ");
printf("\263"); if(A[0][2]==1) printf(" X "); if(A[0][2]==-1) printf(" O ");
if(A[0][2]!=1 && A[0][2]!=-1)printf("   ");
printf("\263\n");
printf("    \303\304\304\304\305\304\304\304\305\304\304\304\264\n");
printf(" i2 \263");if(A[1][0]==1)printf(" X ");if(A[1][0]==-1)printf(" O ");
if(A[1][0]!=1 && A[1][0]!=-1)printf("   ");
printf("\263"); if(A[1][1]==1) printf(" X "); if(A[1][1]==-1) printf(" O ");
if(A[1][1]!=1 && A[1][1]!=-1)printf("   ");
printf("\263"); if(A[1][2]==1) printf(" X "); if(A[1][2]==-1) printf(" O ");
if(A[1][2]!=1 && A[1][2]!=-1)printf("   ");
printf("\263\n");
printf("    \303\304\304\304\305\304\304\304\305\304\304\304\264\n");
printf(" i3 \263");if(A[2][0]==1)printf(" X ");if(A[2][0]==-1)printf(" O ");
if(A[2][0]!=1 && A[2][0]!=-1)printf("   ");
printf("\263"); if(A[2][1]==1) printf(" X "); if(A[2][1]==-1) printf(" O ");
if(A[2][1]!=1 && A[2][1]!=-1)printf("   ");
printf("\263"); if(A[2][2]==1) printf(" X "); if(A[2][2]==-1) printf(" O ");
if(A[2][2]!=1 && A[2][2]!=-1)printf("   ");
printf("\263\n");
printf("    \300\304\304\304\301\304\304\304\301\304\304\304\331\n");
for(i=0;i<3;i++)
{
k=0;
for(j=0;j<3;j++)
{
k+=A[i][j];
}
if(k==3 || k==-3) break;
}
if(k==3 || k==-3) break;
k=0;
for(j=0;j<3;j++)
{
k=0;
for(i=0;i<3;i++)
{
k+=A[i][j]; 
}
if(k==3 || k==-3) break;
}
if(k==3 || k==-3) break;
k=A[0][0]+A[1][1]+A[2][2]; if(k==3 || k==-3) break;
k=A[0][2]+A[1][1]+A[2][0]; if(k==3 || k==-3) break;
}
if(k==3) printf("\n POBEDIL 1 igrok!!!");
if(k==-3) printf("\n POBEDIL 2 igrok!!!");
system("pause");
return 0;
}
0
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
19.11.2010, 08:07  [ТС] 11
quazee, огромное тебе спасибо) разобрался во всем)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2010, 08:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Крестики-нолики-ошибки
Добрый день. Я вот хотел посмотреть работу игры крестики-нолики (судя по всему, речь идет о этой...

Игра крестики-нолики
как сделать так чтобы после окнчания игры в отдельном окне выводилось сообщение кто победил или...

гомоку / крестики-нолики 5 в ряд
не могу написать ИИ. очень нужен исходник, адекватных примеров на с++ не нашел

Создание игры крестики-нолики
разаботка игры крестики нолики в с++


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

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

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