前提・実現したいこと
SDL2の勉強をしているものです。
こちらのサイトを参考にキー入力で画像を動かせるプログラムを作っていたのですが、キー入力をしても画像が動きません。
サイト自体がSDL2のものではないので、SDL2で同じ動作をするAPIに対応させていますがそこで間違っているのかもしれません。
escを押した際にはきちんとプログラムが停止します。
今回、実現したいことは画像の移動なので背景の塗りつぶしは省いています。
該当のソースコード
c=
1#include "SDL2/SDL.h" 2#include "SDL2/SDL_image.h" 3#include <stdio.h> 4 5int main(int argc, const char *argv[]) 6{ 7 SDL_Rect rect, scr_rect, rect_tmp; 8 SDL_Window *Window; 9 SDL_Surface *image, *Screen; 10 11 SDL_Init(SDL_INIT_EVERYTHING); 12 SDL_Event event; 13 int isFinish = 0; 14 15 Window = SDL_CreateWindow("InsertKey", 0, 0, 640, 640, SDL_WINDOW_INPUT_FOCUS); 16 17 image = IMG_Load("red_round.png"); 18 19 Screen = SDL_GetWindowSurface(Window); 20 21 rect.x = 0; 22 rect.y = 0; 23 rect.w = image->w; 24 rect.h = image->h; 25 26 scr_rect.x = 0; 27 scr_rect.y = 0; 28 29 SDL_BlitSurface(image,&rect,Screen,&scr_rect); 30 31 rect_tmp = scr_rect; 32 33 SDL_UpdateWindowSurface(Window); 34 35 while (isFinish == 0) 36 { 37 while (SDL_PollEvent(&event)) 38 { 39 switch (event.type) 40 { 41 case SDL_KEYDOWN: 42 switch (event.key.keysym.sym) 43 { 44 case SDLK_UP: 45 rect_tmp.y -= rect.h; 46 break; 47 48 case SDLK_DOWN: 49 rect_tmp.y += rect.h; 50 break; 51 52 case SDLK_RIGHT: 53 rect_tmp.x += rect.w; 54 break; 55 56 case SDLK_LEFT: 57 rect_tmp.x -= rect.w; 58 break; 59 60 case SDLK_ESCAPE: 61 isFinish = 1; 62 63 default: 64 break; 65 } 66 } 67 } 68 69 SDL_Delay(1); 70 } 71 72 SDL_DestroyWindow(Window); 73 SDL_Quit(); 74 75 return 0; 76} 77
試したこと
SDL2ではSDL_GetVideoSurface
がないため、対応するものを調べてみましたがそれらしいものが見つかりませんでした。
補足情報(FW/ツールのバージョンなど)
gcc /Users/prg/Key.c -lSDL2 -lSDL2_Image -g -o0 -o a.out
でコンパイルしています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/31 03:37
退会済みユーザー
2019/05/31 07:51
退会済みユーザー
2019/05/31 08:21