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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2011, 14:16   #1
DimaLyao
Новичок
Джуниор
 
Регистрация: 04.12.2011
Сообщений: 1
Печаль Просчет столкновения

Уже пару месяцев программирую на Си. В данный момент пишу свою игру на основе библиотеки SDL.

Суть игры - есть карта с растравленными объектами, их на машине надо объезжать.
Карта разбита на 40 частей, которые постоянно меняются, вот код:
Код:
void game_window(unsigned char x)
{
    // Переменные отвечающие за фоновое изображение
    static signed char number = 0, number2 = -1;

        if (co_back_ground2.y == 0){
            co_back_ground.y = -600;
            number++;
           }
        if (co_back_ground.y == 0){
            co_back_ground2.y = -600;
            number2++;
        }
        object_dev(number, number2);

        // какой number такой и рисунок.
        DrawIMG(image_back_ground[number], 0, co_back_ground.y);
        DrawIMG(image_back_ground2[number2], 0, co_back_ground2.y);
        // перемещение изображения
        co_back_ground.y += x;
        co_back_ground2.y += x;
}
На каждом втором рисунке есть препятствия. Чтобы экономить память, я не создавал массивы на 50 элементов и не расписывал координаты каждого препятствия, а создал только массив из 3 элементов, и координаты препятствий перезаписывал туда, когда рисунок менялся:
Код:
void object_dev(char number, char number2)
{
    if (number2 == -1){
        carX[0] = 331;
        carY[0] = -535;
        carX_width[0] = 118;
        carY_length[0] = 260;
        image_car[0]=IMG_Load("img/player.png");
        }
    if (number2 == 1){
        carX[0] = 0;
        carY[0] = -495;
        carX_width[0] = 105;
        carY_length[0] = 314;
        image_car[0]=IMG_Load("img/car2.png");

        carX[1] = 0;
        carY[1] = -464;
        carX_width[1] = 172;
        carY_length[1] = 218;
        image_car[1]=IMG_Load("img/car2.png");

        carX[2] = 678;
        carY[2] = -386;
        carX_width[2] = 36;
        carY_length[2] = 36;
        image_car[2]=IMG_Load("img/car.png");
    }
    if (number2 == 2){
        carX[0] = 312;
        carY[0] = -466;
        carX_width[0] = 335;
        carY_length[0] = 155;
        image_car[0]=IMG_Load("img/car2.png");
    }
}
Тоесть при number2 == -1, препятствия и его размеры меняются, точно так же как и при number2 == 1.
Но есть большая проблема: препятствия меняются не так как надо. препятствия car[0] при "number2 == -1" не существует, как и при "number2 == 1" а появляется только при "number2 == 2".

Если это не исправить, то как можно по другому изменять координаты препятствий, не создавая огромных массивов?
DimaLyao вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
столкновения в GLScene beygul Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 18.11.2011 22:12
Просчет даты ADSL Microsoft Office Access 3 20.08.2010 09:09
просчет формулы BloodMaX Паскаль, Turbo Pascal, PascalABC.NET 1 27.09.2009 11:44
Просчет и Едит 4321 Общие вопросы Delphi 15 18.11.2008 21:13