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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Lordi1289
2 / 2 / 0
Регистрация: 02.11.2010
Сообщений: 103
#1

Класс типа игра в крестики-нолики - C++

18.06.2012, 12:40. Просмотров 1327. Ответов 6
Метки нет (Все метки)

Создать класс типа игра в крестики-нолики. Поле класса - массив из (3х3). Ставить можно только на свободные.



за ранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2012, 12:40     Класс типа игра в крестики-нолики
Посмотрите здесь:
C++ игра крестики-нолики
C++ Игра Крестики-нолики
C++ игра крестики нолики
игра крестики нолики C++
C++ Игра Крестики-нолики
C++ Игра Крестики-нолики
C++ Игра крестики нолики
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolfed
2 / 2 / 1
Регистрация: 15.02.2011
Сообщений: 70
18.06.2012, 12:52     Класс типа игра в крестики-нолики #2
по 3 кнопки в 3 ряда расставляешь, изначально с пустым Text. При нажатии на кнопку проверяет пустой ли Text. Если да, то вставляет либо Х либо О(буквы для простоты). Чтобы осуществить последовательные ходы, нужно также добавить булеановскую переменную, которая после проверки на пустоту Text и захода в цикл меняется на противоположную. Осталось только проверку на выигрыш и всё.

Можешь посмотреть здесь:
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
18.06.2012, 12:53     Класс типа игра в крестики-нолики #3
Ну так вперёд реализовывать как хочется, задание весьма свободное в плане того как его реализовать. Если возникли конкретные проблемы или вопросы (задание, хоть и является одной большой проблемой обычно, в этот список проблем в данном случае не входит) - опиши их здесь и тебе подскажут как что-то реализовать конкретное. Полностью задание за тебя реализовывать вряд ли кто захочет.

Добавлено через 1 минуту
Wolfed, реализовать просят через массив - это и так указано в задании да и что-то мне подсказывает что задание на чистый с++...
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
18.06.2012, 14:00     Класс типа игра в крестики-нолики #4
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
#include <iostream>
using namespace std;
int mass[6][6]={{0,0,0},{0,0,0},{0,0,0}};
char arr [6][6];
int N,y,n;
char z=('x'), w=('0');
int vvod()
{
cout<<"Vvedite stroky - "; cin>>N;
cout<<"Vvedite stolbec - "; cin>>y;
if (mass[N][y]==0){if (n%2==0){mass[N][y]=2;arr[N][y]=z;} else {mass[N][y]=1; arr[N][y]=w;}}
else {cout<<"zanyato!" <<endl; vvod();} 
}
void pokaz()
{
for (int i=1;i<4;i++)
{
for (int j=1;j<4;j++) cout<<arr[i][j]<<"|"; 
cout<<endl;
cout<<"------"<<endl ;
}     
}
int proverka ()
{char win=false;
int sum1=mass[1][1]+mass[1][2]+mass[1][3];
int sum2=mass[2][1]+mass[2][2]+mass[2][3];
int sum3=mass[3][1]+mass[3][2]+mass[3][3];
int sum4=mass[1][1]+mass[2][1]+mass[3][1];
int sum5=mass[1][2]+mass[2][2]+mass[3][2];
int sum6=mass[1][3]+mass[2][3]+mass[3][3];
int sum7=mass[1][1]+mass[2][2]+mass[3][3];
int sum8=mass[1][3]+mass[2][2]+mass[3][1]; 
if (sum1==6||sum2==6||sum3==6||sum4==6||sum5==6||sum6==6||sum7==6||sum8==6) {cout<<"Vuigral *X* !!"<<endl; win=true; return 1;}
if (sum1==6||sum2==6||sum3==6||sum4==6||sum5==6||sum6==6||sum7==6||sum8==6) {cout<<"Vuigral *0* !!"<<endl; win=true; return 1;}
else return 0;}
int main()
{char win=false;
pokaz();
n=1;
while (win!=true)
{
vvod();
pokaz();
if (proverka ()==1) break;
n++;
}
system("PAUSE");  
return 0;
}
Подскажите, как можно было реализовать проверку проще? Не уходя, конечно, в высший пилотаж с++
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
18.06.2012, 14:37     Класс типа игра в крестики-нолики #5
Aesonet
Я конечно прошу прощения, если ошибаюсь, но где тут у вас класс? Да и использовать столько глобальных переменных и два массива, вроде бы не очень рационально, или я не прав?
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
18.06.2012, 14:39     Класс типа игра в крестики-нолики #6
Aesonet это ваще работать не должно...
если нужно могу свой проект скинуть в winForms...там для 1 игрока и для 2 есть)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 10:26     Класс типа игра в крестики-нолики
Еще ссылки по теме:
C++ Игра крестики-нолики
Игра [Крестики Нолики] C++ C++
C++ Игра: Трехмерные крестики-нолики
C++ Игра крестики-нолики в классах
C++ Игра Крестики-Нолики (Ошибка в коде)

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

Или воспользуйтесь поиском по форуму:
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
19.06.2012, 10:26     Класс типа игра в крестики-нолики #7
У меня работает, правда долго не тестил
А я и не присал, что тут класы есть, просто захотелось сделать прогу вот написал код(учусь я много для развития делаю), вывесил чтобы помогли более оптимизировать или подсказать. Вот мне тож интересно как избавиться от стольких переменных в функции proverka ().

З.Ы. В коде много мусора, сам вижу

Добавлено через 3 часа 8 минут
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
#include <iostream>
#include <string.h>
using namespace std;
char arr [3][3]={{'-','-','-'},{'-','-','-'},{'-','-','-'}};
int N,y,n,x1;
string s;
string winx("xxx"), win0("000");
 
int vvod()
{
cout<<"Vvedite stroky - "; cin>>N;
cout<<"Vvedite stolbec - "; cin>>y;
if (arr[N-1][y-1]=='-'){if (n%2==0){arr[N-1][y-1]=2;arr[N-1][y-1]='0';} else {arr[N-1][y-1]=1; arr[N-1][y-1]='x';}}
else {cout<<"zanyato!" <<endl; vvod();} 
}
void pokaz()
{
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++) cout<<arr[i][j]<<"|"; 
cout<<endl;
cout<<"------"<<endl ;
}     
}
int proverka ()
{x1=0;s="";
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++) 
{
s+=arr[i][j];
if (arr[i][j]=='-') x1++;
}
s+=" ";
}
s+=arr[0][0]+arr[1][1]+arr[2][2]+" ";
s+=arr[0][2]+arr[1][1]+arr[2][0]+" ";
if (x1==0) {cout<<"Nichya"<<endl; return 2;}
int foundx=s.find(winx);
if (foundx>=1) {cout<<"Pobedil *X* !!!"<<endl;return 1;}
int found0=s.find(win0);
if (found0>=1) {cout<<"Pobedil *0* !!!"<<endl;return 1;}
}
int main()
{char win=false;
pokaz();
n=1;
while (win!=true)
{
vvod();
pokaz();
if (proverka ()==1||proverka ()==2) break;
n++;
}
system("PAUSE");  
return 0;
}
Переработал код, должен теперь нормально работать.
Кроме 1 момента :
Вопрос почему не находится строка winx в строке s ?

Добавлено через 24 минуты
Вопросы: почему если задать строку s пустой то не находит первые 3 символа корректно. Если задать строку с пробелом, то находит.
Почему нельзя так написать:
C++
1
s+=arr[0][2]+arr[1][1]+arr[2][0]+" ";
а нужно так :
C++
1
s=s+arr[0][2]+arr[1][1]+arr[2][0]+" ";
для корректроно поиска?

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
#include <iostream>
#include <string.h>
using namespace std;
char arr [3][3]={{'-','-','-'},{'-','-','-'},{'-','-','-'}};
int N,y,n,x1,foundx=0,found0=0;
string s;
string winx("xxx"), win0("000");
 
int vvod()
{
cout<<"Vvedite stroky - "; cin>>N;
cout<<"Vvedite stolbec - "; cin>>y;
if (arr[N-1][y-1]=='-'){if (n%2==0){arr[N-1][y-1]=2;arr[N-1][y-1]='0';} else {arr[N-1][y-1]=1; arr[N-1][y-1]='x';}}
else {cout<<"zanyato!" <<endl; vvod();} 
}
void pokaz()
{
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++) cout<<arr[i][j]<<"|"; 
cout<<endl;
cout<<"------"<<endl ;
}     
}
int proverka ()
{x1=0;s=" ";
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++) 
{
s+=arr[i][j];
if (arr[i][j]=='-') x1++;
}
s+=" ";
}
s=s+arr[0][0]+arr[1][1]+arr[2][2]+" ";
s=s+arr[0][2]+arr[1][1]+arr[2][0]+" ";
if (x1==0) {cout<<"Nichya"<<endl; return 2;}
foundx=s.find(winx);
if (foundx>=1) {cout<<"Pobedil *X* !!!"<<endl;return 1;}
found0=s.find(win0);
if (found0>=1) {cout<<"Pobedil *0* !!!"<<endl;return 1;}
}
int main()
{char win=false;
pokaz();
n=1;
while (win!=true)
{
vvod();
pokaz();
if (proverka ()==1||proverka ()==2) break;
n++;
}
system("PAUSE");  
return 0;
}
Добавлено через 15 часов 27 минут
АП ап ап
Yandex
Объявления
19.06.2012, 10:26     Класс типа игра в крестики-нолики
Ответ Создать тему
Опции темы

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