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

Крестики нолики(сократить код) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
29.02.2012, 22:13     Крестики нолики(сократить код) #1
а как в крестиках ноликах можно заменить проверку двух подряд крестиков?
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
 
//////////////////////HORIZONTAL///////////////
if(a[0][0]==a[0][1] && a[0][0]!=' '){  } 
if(a[0][0]==a[0][2] && a[0][0]!=' '){  }
if(a[0][1]==a[0][2] && a[0][1]!=' '){  }
if(a[1][0]==a[1][1] && a[1][0]!=' '){  }
if(a[1][0]==a[1][2] && a[1][0]!=' '){  }
if(a[1][1]==a[1][2] && a[1][1]!=' '){  }
if(a[2][0]==a[2][1] && a[2][0]!=' '){  }
if(a[2][0]==a[2][2] && a[2][0]!=' '){  }
if(a[2][1]==a[2][2] && a[2][1]!=' '){  }
///////////////////////VERTICAL/////////////////
if(a[0][0]==a[1][0] && a[0][0]!=' '){  }
if(a[0][0]==a[2][0] && a[0][0]!=' '){  }
if(a[1][0]==a[2][0] && a[1][0]!=' '){  }
if(a[0][1]==a[1][1] && a[0][1]!=' '){  }
if(a[0][1]==a[2][1] && a[0][1]!=' '){  }
if(a[1][1]==a[2][1] && a[1][1]!=' '){  }
if(a[0][2]==a[1][2] && a[0][2]!=' '){  }
if(a[0][2]==a[2][2] && a[0][2]!=' '){  }
if(a[1][2]==a[2][2] && a[1][2]!=' '){  }
///////////////////////DIAGONAL/////////////////
if(a[0][0]==a[1][1] && a[0][0]!=' '){  }
if(a[0][0]==a[2][2] && a[0][0]!=' '){  }
if(a[1][1]==a[2][2] && a[1][1]!=' '){  } 
if(a[2][0]==a[1][1] && a[2][0]!=' '){  }
if(a[2][0]==a[0][2] && a[2][0]!=' '){  }
if(a[1][1]==a[0][2] && a[1][1]!=' '){  }
ето очень большой код
мне надо его сократить...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2012, 22:13     Крестики нолики(сократить код)
Посмотрите здесь:

C++ Крестики нолики
C++ крестики-нолики
C++ Народ нужен рабочи код Крестики-нолики на visual studio 2010
C++ Крестики-нолики
C++ Крестики-нолики
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
29.02.2012, 22:20     Крестики нолики(сократить код) #2
C++
1
2
3
4
5
6
7
8
int di[8]={ -1,-1,-1,0,0,1,1,1 }
int dj[8]={ -1,1,0,1,-1,-1,1,0 }
 
for(i=0;i<=2;i++)
  for(j=0;j<=2;j++)
    for(k=0;k<8;k++)
       if( (i+di[k]>=0)&&(i+di[k]<3)&&(j+dj[k]>=0)&&(j+dj[k]<3) )
Тут проверяйте дальше, соседние клетки это [i][j] [i+di[k]][j+dj[k]]
Идея в том, чтобы вместо всех проверок, заранее заводите два массива (можно двумерный и один, но так запутаться легко). В этих массивах "смещения". И потом циклом по смещениям (у меня за смещения отвечает k)
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
29.02.2012, 22:40  [ТС]     Крестики нолики(сократить код) #3
понял
тут росто 3 цикла
а я делал через 2 и у меня не виходило...
спасибо попробую)
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
29.02.2012, 22:42     Крестики нолики(сократить код) #4
Всегда когда нужно для каждой клетки проделать одинаковые проверки или что-либо можно добавлять такие массивы обычно.
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
08.03.2012, 15:42  [ТС]     Крестики нолики(сократить код) #5
кто знает другой способ?
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
08.03.2012, 15:46     Крестики нолики(сократить код) #6
Проверяй по событию только затронутые строки/столбцы/диагонали.
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
08.03.2012, 20:50  [ТС]     Крестики нолики(сократить код) #7
етот код даже не сократить а переделать в версию чтоб потом можно било менять размер поля и код менять не придется

Добавлено через 1 час 17 минут
я просто сделал 3х3 а хочу 15х15 а там уже так не получится
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
08.03.2012, 20:52     Крестики нолики(сократить код) #8
Блин. Да вы хоть поняли что я писал? Там в цикле 2 и 3 заменить на 15 и все получится...вы хоть пытайтесь разобраться!
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
08.03.2012, 20:54  [ТС]     Крестики нолики(сократить код) #9
я не говорю что в вашем коде так не получится
я говорю в моем так не получится
мне интересно увидеть другие способи решить ету задачу
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
08.03.2012, 20:59     Крестики нолики(сократить код) #10
Какой у вас вариант опишите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 21:02     Крестики нолики(сократить код)
Еще ссылки по теме:

C++ Как оптимизировать данный код игры крестики нолики?
Крестики-нолики C++
C++ Крестики нолики 10 на 10

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

Или воспользуйтесь поиском по форуму:
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
08.03.2012, 21:02  [ТС]     Крестики нолики(сократить код) #11
я говорю что просто тупо проверять все возможние комбинации так как в первом посте
не вийдет
а ваш способ хорош но я не совсем разобрался еще
мне просто интересно другое решение
Yandex
Объявления
08.03.2012, 21:02     Крестики нолики(сократить код)
Ответ Создать тему

Метки
крестики нолики
Опции темы

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