diff options
author | Billingsly Wetherfordshire <phowl.mouth@gmail.com> | 2012-10-31 18:01:00 -0500 |
---|---|---|
committer | Billingsly Wetherfordshire <phowl.mouth@gmail.com> | 2012-10-31 18:01:00 -0500 |
commit | 6f4bd5174f9b283ffaa4ee6920c6eb3d8648a5d2 (patch) | |
tree | 0b6556f94f17aefdad70620f6b73e26ed7ec5db2 | |
parent | faed98d21573feec1beceb9149eab249cc44a6f4 (diff) | |
download | Nim-6f4bd5174f9b283ffaa4ee6920c6eb3d8648a5d2.tar.gz |
Update examples/sdlex.nim
Updated sdlex.nim to show the basics of an SDL app (event loop, input)
-rwxr-xr-x | examples/sdlex.nim | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/examples/sdlex.nim b/examples/sdlex.nim index 3c20fc004..2c1a413e9 100755 --- a/examples/sdlex.nim +++ b/examples/sdlex.nim @@ -1,26 +1,52 @@ # Test the SDL interface: import - SDL + sdl, sdl_image, colors var screen, greeting: PSurface r: TRect + event: TEvent + bgColor = colChocolate.int32 -if Init(INIT_VIDEO) == 0: - screen = SetVideoMode(640, 480, 16, SWSURFACE or ANYFORMAT) - if screen == nil: - write(stdout, "screen is nil!\n") - else: - greeting = LoadBmp("backgrnd.bmp") - if greeting == nil: - write(stdout, "greeting is nil!") - r.x = 0'i16 - r.y = 0'i16 - discard blitSurface(greeting, nil, screen, addr(r)) - discard flip(screen) - Delay(3000) +if init(INIT_VIDEO) != 0: + quit "SDL failed to initialize!" + +screen = SetVideoMode(640, 480, 16, SWSURFACE or ANYFORMAT) +if screen.isNil: + quit($sdl.getError()) + +greeting = IMG_load("tux.png") +if greeting.isNil: + echo "Failed to load tux.png" else: - write(stdout, "SDL_Init failed!\n") + ## convert the image to alpha and free the old one + var s = greeting.displayFormatAlpha() + swap(greeting, s) + s.freeSurface() + +r.x = 0 +r.y = 0 +block game_loop: + while true: + + while pollEvent(addr event) > 0: + case event.kind + of QUITEV: + break game_loop + of KEYDOWN: + if EvKeyboard(addr event).keysym.sym == K_ESCAPE: + break game_loop + else: + discard + + discard fillRect(screen, nil, bgColor) + discard blitSurface(greeting, nil, screen, addr r) + discard flip(screen) + +greeting.freeSurface() +screen.freeSurface() sdl.Quit() + +## fowl wuz here 10/2012 \ No newline at end of file |