summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBillingsly Wetherfordshire <phowl.mouth@gmail.com>2012-10-31 18:01:00 -0500
committerBillingsly Wetherfordshire <phowl.mouth@gmail.com>2012-10-31 18:01:00 -0500
commit6f4bd5174f9b283ffaa4ee6920c6eb3d8648a5d2 (patch)
tree0b6556f94f17aefdad70620f6b73e26ed7ec5db2
parentfaed98d21573feec1beceb9149eab249cc44a6f4 (diff)
downloadNim-6f4bd5174f9b283ffaa4ee6920c6eb3d8648a5d2.tar.gz
Update examples/sdlex.nim
Updated sdlex.nim to show the basics of an SDL app (event loop, input) 
-rwxr-xr-xexamples/sdlex.nim56
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