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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2016, 16:20   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Пасьянс SDL

Добрый день. Только начала знакомство с SDL и получила задание: написать программу,которая строит один из видов пасьянсов. Две демонстрации решения: непрерывный (с задержкой визуализации) и пошаговый (по нажатию клавиши). В программе использовать контейнеры STL.
Для начала решила просто вывести несколько изображений в окно, с чем появились проблемы. Есть следующий код:
Код:
#include <SDL.h>
#include <stdio.h>
 
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
 
int init(); // для инициализации. вместо типа bool пришлось поставить int
int loadMedia(); // для загрузки изображений
void close(); // для закрытия
 
SDL_Window* gWindow = NULL;
SDL_Surface* gScreenSurface = NULL;
SDL_Surface* gBall = NULL; // имя переделали для мяча
 SDL_Surface* surfaces[ 2 ];
int init()
{
    int success = 1; // вместо bool пришлось использовать int и придавать числовые значения
    if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
        success = 0;
    }
    else
    {
        gWindow = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
        if( gWindow == NULL )
        {
            printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
            success = 0;
        }
        else
        {
            gScreenSurface = SDL_GetWindowSurface( gWindow ); // получаем поверхность окна
        }
    }
    return success;
}
 
int loadMedia()
{
 
    int success = 1;
 //   gBall = SDL_LoadBMP( "1.bmp" ); // размер нашего рисунка мяча 100*100 точек
    
            surfaces[ 0 ] = SDL_LoadBMP( "1.bmp" );
            //surfaces[ 1 ] = SDL_LoadBMP( "1.bmp" );
 
        //SDL_BlitSurface( surfaces[ 0 ], NULL, NULL, NULL );
        //SDL_BlitSurface( surfaces[ 1 ], NULL, NULL, NULL );
        gBall = SDL_LoadBMP( "1.bmp" );
    if( gBall == NULL )
    {
        printf( "Unable to load image %s! SDL Error: %s\n", "1.bmp", SDL_GetError() );
        success = 0;
    }
    
    return success;
}
 
void close()
{
    SDL_FreeSurface( gBall ); // высвобождаем поверхности
    gBall = NULL;
    SDL_DestroyWindow( gWindow );
    gWindow = NULL;
    SDL_Quit();
}
 
int main( int argc, char* args[] )
{
    if( !init() )
    {
        printf( "Failed to initialize!\n" );
    }
    else
    {
        if( !loadMedia() )
        {
            printf( "Failed to load media!\n" );
        }
        else
        {
            // заливаем поле зеленым
            SDL_FillRect( gScreenSurface, NULL, SDL_MapRGB( gScreenSurface->format, 0x00, 0x88, 0x00 ) );
            // рисуем мяч на поверхности окна
            SDL_BlitSurface( gBall, NULL, gScreenSurface, NULL );
            // обновляем окно
            SDL_UpdateWindowSurface( gWindow );
            SDL_Delay( 5000 );
        }
    }
    SDL_DestroyWindow( gWindow  );
    SDL_Quit();
    return 0;
}
При выводе одного изображения, все нормально. Но нужен массив, который бы хранил эти изображения, поэтому создаю:
SDL_Surface* surfaces[ 2 ];
В функции int loadMedia() провожу изменения под массив, но в результате ничего не выводится. Прошу помочь разобраться. Спасибо
Вероника99 вне форума Ответить с цитированием
Старый 30.10.2016, 16:24   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
Прошу помочь разобраться
Используйте отладчик (breakpoint'ы)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно. Разработать пасьянс. Михаил... Фриланс 61 30.12.2015 17:34
Пасьянс Колодец Marianna22 Общие вопросы C/C++ 1 24.05.2013 21:12
Курсовая - пасьянс Achtung-Partizanen Помощь студентам 29 25.12.2011 23:44
Windows 7 не запускает пасьянс!!! Влад09 Windows 3 01.11.2010 16:58
Пасьянс prisoner-курсовой проект! Warfvare Помощь студентам 6 25.06.2010 23:37