Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
noH4uk
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
#1

Крестики Нолики - C++

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

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

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

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

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

Добавлено через 26 секунд
и плюс ко всему там нет никаких 0 абсолютно!(((
Да все понятно умничка ты! все правильно!
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 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.
quazee
14 / 14 / 0
Регистрация: 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2010, 08:07     Крестики Нолики
Еще ссылки по теме:

Крестики нолики C++
Крестики-нолики C++
C++ Крестики-нолики 10 на 10
Крестики/нолики C++
крестики-нолики C++

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

Или воспользуйтесь поиском по форуму:
noH4uk
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
19.11.2010, 08:07  [ТС]     Крестики Нолики #11
quazee, огромное тебе спасибо) разобрался во всем)
Yandex
Объявления
19.11.2010, 08:07     Крестики Нолики
Ответ Создать тему
Опции темы

Текущее время: 22:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru