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

Игра, подобная шашкам. Оптимизация кода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать свой движок с нуля http://www.cyberforum.ru/cpp/thread1242826.html
Как написать свой движок с нуля при помощью C++. Заранее спасибо.
C++ Альтернативный вызов функции 1. Интересует метод вызова функции через указатель(или по другому). 2. Интересует метод взятия кол-ва аргументов функции и их типов, а так же тип возвращяемого значения. По второму пункту вообще ничего не нашёл, а по первому есть некоторые вопросы. #include "FTD2XX.h" // библиотека от FTDI typedef FT_STATUS (*pFT_Open) (int, FT_HANDLE *); // тип данных "функция FT_OPEN" HMODULE hMod =... http://www.cyberforum.ru/cpp/thread1242804.html
C++ СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++
C++ Разделить выпуклый многоугольник на 4 равные части двумя взаимно перпендикулярными прямыми
Почти то же, что и тут: http://www.cyberforum.ru/java/thread1022760.html, но хочется решить на C++. А именно: Есть некоторый выпуклый многоугольник, который необходимо разделить на 4 равные части двумя взаимно перпендикулярными прямыми. Входные данные: количество вершин и их координаты в порядке обхода. Координаты не больше 10000, самих координат не больше 1500. Координаты все целочисленные....
C++ Отследить изменение памяти сторонним процессом http://www.cyberforum.ru/cpp/thread1241864.html
Есть основное приложение1. Есть приложение2, которое считывает и изменяет его память. Надо отследить адреса, действие(чтение или запись), значение до и после действия. Куда копать?
C++ Adobe PDF Library (APDFL) - поместить в формируемый документ картину формата PNG Всем привет! Данная тема, возможно, не вполне подходит для данного раздела, поскольку вопрос, преимущественно имеет отношение к API Adobe PDF, конкретнее, к плюсовому API. Я пишу с использованием этой библиотеки от datalogics некоторое API для формирования PDF-документов. Сбился с ног, пытаясь запихать в формируемый документ (программно, разумеется) картину формата PNG. С JPEG проблем нет,... подробнее

Показать сообщение отдельно
RussBear
 Аватар для RussBear
1 / 1 / 1
Регистрация: 06.08.2014
Сообщений: 77
15.08.2014, 22:31     Игра, подобная шашкам. Оптимизация кода
Добрый вечер. У меня маленькая проблема: пишу игру, наподобие шашек. Почти готово, потом выложу исходники для критики. Сейчас делаю подсветку хода для дамок. т.к. дамке все равно куда идти, то все отличие будет заключаться в том, кого она встретит на пути - свою или чужую шашку. Следовательно это дело можно завернуть в функцию. Проблема в том, что очень много повторяющегося кода, а мне это ужасно не нравится. т.е. для подсветки четырех возможных направлений мне придется писать код, различающийся только направлением движения, т.е. знаками. Ну еще для каждого цвета определять противника.
короче вот один кусок кода, для подсветки хода черной дамки вправо-вниз. Мне он не нравится, но мозг уже не воспринимает его. Может посоветуете чего - буду очень благодарен. А то ерунда получается - в среднем 40 строк на подсветку одной стороны. Это 160 на одну дамку, 160 на другую. Причем код, по большей части повторяющийся.
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
int k1 = i+1;//i,j - координаты дамки
int k2 = j+1;
if(k1 < FieldSize && k2 < FieldSize ){//если следующая клетка в поле
    if(k1+1 < FieldSize && k2+1 < FieldSize ){//если еще одна клетка в поле - есть возможность "срубить"
        if(field[k1][k2]->getCheckerType() == WHITE_CHECKER || //если шашка белого цвета
                    field[k1][k2]->getCheckerType() == WHITE_KING){
            if(field[k1+1][k2+1]->getCheckerType() == NO_CHECKER){//и следующая за ней клетка пустая
                field[k1][k2]->setAttack(true);//подсвечиваем подбойную шашку красным
                Attack = true;//булева переменная, бля обязательного взятия
                while(k1+1 < FieldSize && k2+1 < FieldSize ){//пока есть возможность подсвечиваем возможные ходы
                    field[k1+1][k2+1]->setSelect(true);
                    k1++;
                    k2++;
                }
            }
        }
        if(!Attack){//если в данном направлении первая клетка не атакована
            while(k1 < FieldSize && k2 < FieldSize ){//пока есть пустые клетки - 
                field[k1][k2]->setSelect(true);//подсвечиваем возможные ходы
                k1++;
                k2++;                
            }
            if(k1+1 < FieldSize && k2+1 < FieldSize ){//если еще одна клетка в поле - есть возможность "срубить"
                if(field[k1][k2]->getCheckerType() == WHITE_CHECKER || //если шашка белого цвета
                            field[k1][k2]->getCheckerType() == WHITE_KING){
                    if(field[k1+1][k2+1]->getCheckerType() == NO_CHECKER){//и следующая за ней клетка пустая
                        field[k1][k2]->setAttack(true);//подсвечиваем подбойную шашку красным
                        Attack = true;//булева переменная, бля обязательного взятия
                        while(k1+1 < FieldSize && k2+1 < FieldSize ){//пока есть возможность подсвечиваем возможные ходы
                            field[k1+1][k2+1]->setSelect(true);
                            k1++;
                            k2++;
                        }
                    }
                }
            }
            Attack = true;
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru