mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 22:33:49 +00:00
Update examples/sdlex.nim
Updated sdlex.nim to show the basics of an SDL app (event loop, input)
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user