forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Крестики нолики (http://forum.boolean.name/showthread.php?t=18707)

Uawi 13.11.2013 21:17

Крестики нолики
 
Приветствую, вот я столкнулся с вопросом перед созданием свой игры крестики нолики.

Распишу небольшой алгоритм:
1|2|3
4|5|6
7|8|9

Комбинации такие: 123, 456, 789, 147, 258, 369, 159, 357
Я подумал, если ввести эти переменные a, b, c, d, e, f, g, h, i - каждая из которых будет отвечать за клетки от 1 до 9 соответственно.

Потом можно сделать условие: если а = (0 - колик, 1 - крестик) 1 и b = 1 и c = 1, то выигрыш крестика и тд, но мне кажется, что это слишком не оптимизировано, хотя правильно!

Как сделать эти условия более оптимизированные

SBJoker 13.11.2013 21:26

Ответ: Крестики нолики
 
Завести массив 3х3, проходить в цикле по рядам, строкам и два диагональных варианта.

Uawi 13.11.2013 21:59

Ответ: Крестики нолики
 
Цитата:

Сообщение от SBJoker (Сообщение 270172)
Завести массив 3х3, проходить в цикле по рядам, строкам и два диагональных варианта.

Понял, но не понял. Как завести массив 3x3, по ряду пройти и строке знаю как, а как по диагонали?

den 13.11.2013 22:06

Ответ: Крестики нолики
 
PHP код:

for(int i 03i++) {
    for(
int j 03j++) {
        
mas[i][j]; // главная диагональ
        
mas[i][2-j]; // побочная
    
}



Uawi 13.11.2013 22:30

Ответ: Крестики нолики
 
Цитата:

Сообщение от Den (Сообщение 270178)
PHP код:

for(int i 03i++) {
    for(
int j 03j++) {
        
mas[i][j]; // главная диагональ
        
mas[i][2-j]; // побочная
    
}



Спасибо, а как массив организовать?

PHP код:

int[,] mas;
    for(
int j 03j++) {
        
mas[ij]; // главная диагональ
        
mas[i2-j]; // побочная 

Что-то типа того? Это ведь будет массив только для клеток диагоналей?

Uawi 13.11.2013 23:45

Ответ: Крестики нолики
 
Вот еще столкнулся с проблемой, какой алгоритм у ИИ?

impersonalis 13.11.2013 23:47

Ответ: Крестики нолики
 
Обломать все близкие к заполнению линии противника. Выбрать наиболее близкую к заполнению линию и продолжить её.

Uawi 14.11.2013 00:36

Ответ: Крестики нолики
 
Цитата:

Сообщение от impersonalis (Сообщение 270183)
Обломать все близкие к заполнению линии противника. Выбрать наиболее близкую к заполнению линию и продолжить её.

Ага, то есть, можно тупо условиями сделать... Если в массиве, который выше там(предположим, что первая Х вторая З координата), то если срочный массив заполнен на 2 клетки, то заполняем последнюю, с остальными также. А сам бот ещё таким же условием и для себя должен высчитывать комбинации, тоже самое в принципе... Спасибо, разберёмся.

EvilOkta 21.11.2013 14:19

Ответ: Крестики нолики
 
вот здесь интересный подход, с оптимизацией:
http://hashcode.ru/questions/190260/...рестики-нолики

Igor 21.11.2013 23:40

Ответ: Крестики нолики
 
Когда-то писал полный перебор ходов с случайным выбором из лучших возможных. Телефон справлялся нормально.


Часовой пояс GMT +4, время: 00:50.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot