Text not showing on Screen

BlitzPlus Forums/BlitzPlus Beginners Area/Text not showing on Screen

Shadowofsilence(Posted 2013) [#1]
Hello, I am trying to follow a demo in Game Programming for Teens Second edition. The demo is demo03-11.bb.

When I run the program am able to hit the spacebar 3 times and then the program ends as it should and I am able to hit the escape key to exit the program as well. The only problem is that the text does not show up on the screen.

Here is the code I have:
;demo03-11.bb - Draw a ship which can be moved and killed

Graphics 400,300

;CONSTANTS
Const STARTHITPOINTS = 3
Const SHIP$ = "<-*->" 
Const ESCKEY = 1, SPACEBAR = 57, UPKEY = 200,
LEFTKEY = 203, DOWNKEY = 208, RIGHTKEY = 205 
Const STARTX = 200, STARTY = 150

;TYPES
Type Ship
       Field x,y 
       Field hitpoints
       Field shipstring$ 
End Type

;INITIALIZATION SECTION
Global cont = 1 
Global player.ship = New ship
player\x = STARTX
player\y = STARTY
player\hitpoints = STARTHITPOINTS
player\shipstring = SHIP$

;Game loop
While cont = 1

       Cls

       Text player\x, player\y, player\shipstring$
       TestInput()
       DrawHUD()

Wend
;End of loop

;TestInput() changes the direction or hit points of the player
Function TestInput()

;If player presses left, move him left.
If KeyHit(LEFTKEY)

       player\x = player\x - 3
       If player\x <= 0
              player\x = 10
       EndIf

EndIf

;If player presses right, move him right.
If KeyHit(RIGHTKEY)

       player\x = player\x + 3
       If player\x >= 385
              player\x = 380
       EndIf
EndIf

;If player presses up, move him up.
If KeyHit(UPKEY)

       player\y = player\y - 3
       If player\y <= 0
              player\y = 10
       EndIf

EndIf

;If player presses down, move him down.
If KeyHit(DOWNKEY)

       player\y = player\y + 3
       If player\y >= 285
              player\y = 280
       EndIf

EndIf

;If player presses spacebar, remove a hit point
If KeyHit(SPACEBAR)

       player\hitpoints = player\hitpoints - 1
       If player\hitpoints <= 0
              cont = 0
       EndIf

EndIf

;If player presses Esc, set cont to 0, and exit the game
If KeyHit(ESCKEY)
       cont = o
EndIf

End Function

;DrawHUD() draws user's info in top Right of the screen

Function DrawHUD()
       Text 260, 10, "X position: " + player\x
       Text 260, 20, "Y position: " + player\y
       Text 260, 30, "Hitpoints: " + player\hitpoints
End Function


please help


okee(Posted 2013) [#2]
You may need a Flip command in the main loop i.e.
;Game loop
While cont = 1

       Cls

       Text player\x, player\y, player\shipstring$
       TestInput()
       DrawHUD()
       Flip
Wend




Shadowofsilence(Posted 2013) [#3]
I think I already tried this with the same result. I may have put the flip in the wrong location. I will try it again when I get home.

Thank you,

Michael


Shadowofsilence(Posted 2013) [#4]
Just ran the program with the change. That worked.

Thank you,

Michael