LINUX.ORG.RU

шо за байда?

 , ,


0

1

здарова юзаю такой код

switch(event.key)
{
    case SDLK_F1:
    {
        //do something
    }
}
получаю ошибку

switch quantity not an intege



Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от Gremlin_

event должно быть инициализировано SDL_Event, например, при помощи SDL_PollEvent(). Приведи весь цикл обработки событий, иначе не разобраться

mazdai ★★★
()
Последнее исправление: mazdai (всего исправлений: 1)
Ответ на: комментарий от Deleted

А если в классе/структуре определить operator int() ?

rumgot ★★★★★
()
Ответ на: комментарий от Gremlin_

https://github.com/Beginerok/Tropic-Island/blob/005cb2be8dac87807c7778b8d8d98...

Это вообще компилируется?

Почитай про переносимый код, а еще вот это: http://lazyfoo.net/tutorials/SDL/index.php

Тебе не нужен WinAPI, у тебя есть SDL для устройств ввода и вывода, вот им и пользуйся.

Советую сделать как в примере, тебе не нужны #ifdef через каждую строку, будет одинаково работать везде, за исключением разных раскладок клавиатуры (и сами кнопки вне зависимости от их кодов тоже можно маппить, ищи):

//Main loop flag
            bool quit = false;

            //Event handler
            SDL_Event e;

            //Set default current surface
            gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_DEFAULT ];

            //While application is running
            while( !quit )
            {
                //Handle events on queue
                while( SDL_PollEvent( &e ) != 0 )
                {
                    //User requests quit
                    if( e.type == SDL_QUIT )
                    {
                        quit = true;
                    }
                    //User presses a key
                    else if( e.type == SDL_KEYDOWN )
                    {
                        //Select surfaces based on key press
                        switch( e.key.keysym.sym )
                        {
                            case SDLK_UP:
                            gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_UP ];
                            break;

                            case SDLK_DOWN:
                            gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_DOWN ];
                            break;

                            case SDLK_LEFT:
                            gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_LEFT ];
                            break;

                            case SDLK_RIGHT:
                            gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_RIGHT ];
                            break;

                            default:
                            gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_DEFAULT ];
                            break;
                        }
                    }
                }

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

mazdai ★★★
()
Последнее исправление: mazdai (всего исправлений: 1)
Ответ на: комментарий от anonymous

По-моему, это все равно что стрелять из пушки по воробьям, вангую в итоге у него получится несколько динамически генерирующихся движков игры вместо стройности.. легче определить класс Событие и сделать его методы виртуальными, если так нужно иметь возможность работать и с SDL, и с WinAPI - унаследовать от него и написать две реализации

Если неправильно понял причину, по которой предлагаешь этот паттерн - расскажи, будет познавательно

mazdai ★★★
()
Последнее исправление: mazdai (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.