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

Определить все ходы для белой шашки. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как сделать правильно указатель на первую функцию http://www.cyberforum.ru/cpp-beginners/thread53770.html
#include "stdafx.h" #include "stdio.h" #include "conio.h" int F(int n) { if(n==0) return 1; if(n==1) return 1; return (n+(n-1)); } int _tmain(int argc, _TCHAR* argv)
C++ Что такое NULL ? Обьясните, что значит NUL часто вижу его в условиях и операторах а что это значит точто не знаю!!! http://www.cyberforum.ru/cpp-beginners/thread53769.html
Капли дождя C++
Здравствуйте!!! Помогите пожалуйста сделать на консольном окне капли дождя(то есть как льет дождь). Нужно чтобы они падали как на землю!!! Спасибо заранее!!!
DEV-C++ - виснет компилятор C++
Всем ещё раз привет.Пытаюсь скомпилировать код вида: #include <graphics.h> int main() { initwindow(400,300); // открыть окно для графики
C++ Как просуммировать список??? http://www.cyberforum.ru/cpp-beginners/thread53717.html
В узлы первого списка записаны цифры первого числа,а в узлы второго списка записаны цифры второго числа.Первый и второй список одной структуры.Каким образом их суммировать?Напишите пожалуйста функцию!!!
C++ непонятные ошибки Здравствуйте Ситуация такая: программа выводит в определенную часть экрана некую последовательность символов, затем запоминает эту определенную часть экрана в буфер, затем восстанавливает из буфера(последние 2 действия с использованием регистров) Компилируется с помощью Borland C++ 3.1 тк в DOS.H объединение REGS есть только в 16 разрядном компиляторе. листинг: #include <iostream.h>... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
03.10.2009, 10:41     Определить все ходы для белой шашки.
Ну, слушай, такое дело раз.

Во-первых, создай матрицу 8x8 и как-то сыммитируй на ней шашки. Заполни то есть.
Вручную, ещё как-то.
Допустим, если элемент равен 1, это чёрная шашка, если 2, то белая, если 0- никакая.
И заполняяй по шашечным правилам.
Это уж ты сам думай как.

В программме будет две функции
1) основная (рекурсивная) osn
2) вспомогательная vsp

Вот схема

osn {
vsp ()
osn
}

Всомогательная функция будет показывать, куда шашке можно ходить (условимся, что она не дамка)
То есть каждая шашка может потенциально сделать 8 ходов
pramo_napravo_mal;
pramo_napravo_bol; //Это когда перепрыгивает
pramo_nalevo_mal;
pramo_nalevo_boll;
nazad_napravo_mal;
nazad_napravo_bol;
nazad_nalevo_mal;
nazad_nalevo_boll;

Теперь смотри. Если одна из этих величин равна 1, то шашка может туда ходить, если равна 0, то не может.
То, естть, к примеру, получаешь такие значения

pramo_napravo_mal==0;
pramo_napravo_bol==1; //Это когда перепрыгивает
pramo_nalevo_mal==0;
pramo_nalevo_boll==0;
nazad_napravo_mal==1;
nazad_napravo_bol==0;
nazad_nalevo_mal==0;
nazad_nalevo_boll==1;

...Как узнать, куда шашка может сходить, а куда нет?
Для этого существует vsp
В неё передаются указатели на эти переменные и координаты шашки.
Вот, собственно, и начинаются мытраства.
В функции vsp, принимающей указатели на эти переменные ты должен определить каждое из 8-ми значений, учитывая

1)координаты шашки
2)координаты других шашек (массив-то глобальный и виден отовсюду)
Это ты уж сам сиди и думай, как всё сделать
Схема будет так выглядеть с учётом вышесказанного:

osn {

bool pramo_napravo_mal==0;
bool pramo_napravo_bol==1; //Это когда перепрыгивает
bool pramo_nalevo_mal==0;
bool pramo_nalevo_boll==0;
bool nazad_napravo_mal==1;
bool nazad_napravo_bol==0;
bool nazad_nalevo_mal==0;
bool nazad_nalevo_boll==1;

vsp (&pramo_napravo_mal //+ адреса всех этих переменных + координаты шашки)

osn ()
}


Ну, и, наконец, по вызову osn
Вызываешь так

if (pramo_napravo_mal) {
osn ()
}

if (pramo_napravo_bol) {
osn ()
}

...И так далее, до конца. 8 вызовов должно быть
В функцию osn передаются координаты шашки, куда можно сходить.
То есть если у тебя текущие параметры (0, 1), и, допустим nazad_napravo_mal==1, то пишешь

if (nazad_napravo_mal) {
osn (2, 3)
}

...Ну вот так и прыгаешь, пока все параметры не станут равны 0.
Введи переменную какую-нибудь пусть ходы подсчитывет. Учитывай всё.

...Да. Самый первый вызов функции osn такой:
osn (координаты шашки)

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