LINUX.ORG.RU

История изменений

Исправление mazdai, (текущая версия) :

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, :

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

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

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

Советую сделать как в примере, тебе не нужны #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;
                        }
                    }
                }

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