Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2010, 16:09   #1
TWIN888
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию Игра "калах" на 6 билдере

Я написал игрушку , всё работет вроде бы норм , НО есть одно но , уже который день ломаю голову , что то не так с выводом , поможет кто нибудь мне ?
TWIN888 вне форума Ответить с цитированием
Старый 13.01.2010, 10:18   #2
TWIN888
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию

Вот исходник
Вложения
Тип файла: txt калахххх.txt (13.3 Кб, 199 просмотров)
TWIN888 вне форума Ответить с цитированием
Старый 13.01.2010, 12:05   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Помедетировал полминуты на код, заметил там goto. Мой вам совет: выкиньте его оттуда, замените на
Код:
while (true)
//или for(;;)
{
//...
return /**/;
//...
}
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.01.2010, 12:35   #4
TWIN888
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию

Вот здесь ? Как изменить ? Мне кажется вот в этом куске чтото с алгоритмом

Код:
int make_move (int x, int move, int *mypit, int *herpit)
{
        int c;
 
        c = mypit [move];                       
        mypit [move] = 0;
 
        if (x)
        {
                printf("\n");
                draw_move (x, move, c, 0);
        }
loop:
        while (++move < NH) {                   
                ++ mypit [move];
                if (x)
                        draw_move (x, move, mypit [move], mypit [move]);
                if (--c < 1) {
                        if (mypit [move] == 1 && herpit [NH-1-move]) {
                                if (x) {
                                        if (x == 'a')
                                                message (rand() & 1 ?
                                                        "I like eating your stones..." :
                                                        "Your stones are so sweet!");
                                        draw_move (x^3, NH-1-move,
                                                herpit [NH-1-move], 0);
                                        draw_move (x, move, 0, 0);
                                }
                                mypit [NH] += herpit [NH-1-move] + 1;
                                herpit [NH-1-move] = 0;
                                mypit [move] = 0;
                                if (x)
                                        draw_move ('k', x, mypit [NH], mypit [NH]);
                        }
                        return (1);
                }
        }
        ++mypit [NH];                   
        if (x)
                draw_move ('k', x, mypit [NH], mypit [NH]);
        if (--c < 1)
                return (0);
        move = -1;
        while (++move < NH) {           
                ++ herpit [move];
                if (x)
                        draw_move (x^3, move, herpit [move], herpit [move]);
                if (--c < 1)
                        return (1);
        }
        move = -1;
        goto loop;
}
TWIN888 вне форума Ответить с цитированием
Старый 13.01.2010, 12:55   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:

int make_move (int x, int move, int *mypit, int *herpit)
{
        int c;
 
        c = mypit [move];                       
        mypit [move] = 0;
 
        if (x)
        {
                printf("\n");
                draw_move (x, move, c, 0);
        }

while(true)
        {

        while (++move < NH) {                   
                ++ mypit [move];
                if (x)
                        draw_move (x, move, mypit [move], mypit [move]);
                if (--c < 1) {
                        if (mypit [move] == 1 && herpit [NH-1-move]) {
                                if (x) {
                                        if (x == 'a')
                                                message (rand() & 1 ?
                                                        "I like eating your stones..." :
                                                        "Your stones are so sweet!");
                                        draw_move (x^3, NH-1-move,
                                                herpit [NH-1-move], 0);
                                        draw_move (x, move, 0, 0);
                                }
                                mypit [NH] += herpit [NH-1-move] + 1;
                                herpit [NH-1-move] = 0;
                                mypit [move] = 0;
                                if (x)
                                        draw_move ('k', x, mypit [NH], mypit [NH]);
                        }
                        return (1);
                }
        }
        ++mypit [NH];                   
        if (x)
                draw_move ('k', x, mypit [NH], mypit [NH]);
        if (--c < 1)
                return (0);
        move = -1;
        while (++move < NH) {           
                ++ herpit [move];
                if (x)
                        draw_move (x^3, move, herpit [move], herpit [move]);
                if (--c < 1)
                        return (1);
        }
        move = -1;
        
        }

}
В алгоритме не разобрался, да и вообще толком не знаю что за игра такая.
Впрочем,
Код:
move = -1
в конце этого цикла меня что-то смущает...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.01.2010, 13:48   #6
TWIN888
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию

Вот самое понятное описание игры

http://ru.wikipedia.org/wiki/Калах
TWIN888 вне форума Ответить с цитированием
Старый 13.01.2010, 14:13   #7
TWIN888
 
Регистрация: 12.01.2010
Сообщений: 5
По умолчанию Игра

Вот я чуток поработал
Но что то не так походу , не так раскладываются камни . .
например : вначале ввожу 6 , камни должны разложиться против часовой стрелки так :

____(6) (7) (7) (7) (7) (7)
(0)-----------------------(1)
____(6) (6) (6) (6) (6) (0)

Макс мне отвечает : 1
расклад должен быть таков :

____(7) (8) (8) (8) (8) (0)
(1)-----------------------(1)
____(7) (6) (6) (6) (6) (0)

А в игре расклад :
____(0) (8) (8) (8) (8) (7)
(1)-----------------------(1)
____(7) (6) (6) (6) (6) (0)
Толи гдето серьезный косяк , толи он при выводе наоборот берет . . .
Вложения
Тип файла: txt kalax.txt (13.7 Кб, 146 просмотров)

Последний раз редактировалось TWIN888; 13.01.2010 в 17:01. Причина: поработал
TWIN888 вне форума Ответить с цитированием
Старый 18.06.2010, 21:00   #8
k2ice
Новичок
Джуниор
 
Регистрация: 11.06.2010
Сообщений: 1
По умолчанию

Народ мне нужна такая же прога в нете нахожу тока старой версии под qBasic,если кто нить доработал можете скинуть буду благодарен)))
или на почту extreemk@mail.ru
k2ice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "Кости" на языке программирования Delphi Наталья111 Помощь студентам 20 01.11.2009 16:40
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Игра "Ghost Recon Advanced Warfighter 1"(GRAW) Air Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 27.07.2008 08:07
Игра "четный" "нечетный" bigcat Помощь студентам 1 01.03.2008 00:24