Update examples/sdlex.nim

Updated sdlex.nim to show the basics of an SDL app (event loop, input)
This commit is contained in:
Billingsly Wetherfordshire
2012-10-31 18:01:00 -05:00
parent faed98d215
commit 6f4bd5174f

View File

@@ -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