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

C++

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено через 26 секунд
и плюс ко всему там нет никаких 0 абсолютно!(((
Да все понятно умничка ты! все правильно!
0
valeriikozlov
Эксперт C++
4670 / 2496 / 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.
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;
}
0
noH4uk
5 / 5 / 0
Регистрация: 18.11.2010
Сообщений: 34
19.11.2010, 08:07  [ТС] #11
quazee, огромное тебе спасибо) разобрался во всем)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2010, 08:07
Привет! Вот еще темы с ответами:

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

Крестики-нолики с использованием DrawGrid - C++ Builder
Доброе время суток. Очень нужна помощь в написании курсовой. Задание следующее: Разработать программу игры в крестики-нолики, в основу...

Игра судоку (крестики-нолики) - C++ Builder
Люди подскажите пожалуйста. Препод дал задание написать игру судоку ну типа крестики нолики. Поле 9 на 9 . Выигрывает в том случае если 5...

Создание игры крестики нолики - C++ Builder
Добрый вечер. Ребята кто может написать игру крестики нолики на Борланди С++


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.11.2010, 08:07
Ответ Создать тему
Опции темы

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