Errors, where?

Blitz3D Forums/Blitz3D Beginners Area/Errors, where?

Apollonius(Posted 2003) [#1]
Well, I'm trying to create somekind of Algorithms for my character however as you can see below
ini_Samus(StandL)
it doesn't draw the right frame it draws the StandR frame not frame 22, see anything wrong?

Full Code Below
Graphics 640,480,16,2

; GLOBAL VAR
Global Draw_Samus = 1
Global quit = False
Global Frames
Global TheTimer
Global AnimDelay

; IMAGES
Global SamusSprites=LoadAnimImage("images\MR_Samus.png",56,56,0,55)
MaskImage SamusSprites,255,255,255

; SET BUFFER
SetBuffer BackBuffer()

Frames    =  12
AnimDelay = 100

;-----------------------------------------
; MAIN LOOP
While Not KeyDown(1) Or quit = True 
; Samus SYS
If Draw_Samus = 1 Then
	ini_Samus(StandL)
EndIf


Flip:Cls
Wend

End
;-----------------------------------------
; TYPES
Type Player
	Field Name$
	Field HealthBanks%
	Field Healt%
	Field x%,y%
	Field jump%
	Field gravity%
End Type

Type Weapon
	Field Name$
	Field MinDam%
	Field MaxDam%
	Field Info$
End Type

;-----------------------------------------
; FUNCTIONS
Function ini_Samus(Dir$)
;-----------------------
Select Dir$
	Case StandR ; Stand Right
		Frames = 11
		DrawImage SamusSprites,sX,sY,Frames
		
	Case StandL ; Stand Left
		Frames = 22
		DrawImage SamusSprites,sX,sY,Frames
	
	Case RWalk ; Walking Right without Gun Point
		If Frames = 22 Then Frames = 12
	
		DrawImage SamusSprites,sX,sY,Frames
			sX = sX + 1
		If TheTimer+AnimDelay < MilliSecs() Then
  			TheTimer = MilliSecs()
  			Frames = Frames + 1
		End If
	Case LWalk ; Walking Left without Gun Point
	
	Default
		Notify "Theres an error in the Player Routines." : End
End Select
;----------------------
End Function



Paradox7(Posted 2003) [#2]
whats wrong is that your using a string varible, but you arn't passing string statments,
You have, ini_Samus(StandL)
your own function requires a String (Dir$)
well what you just passed was a varible, a empty varible to be exact, 0, anyways, if your function is going to be setup to take in a string, then you need to pass strings ;)

ini_Samus("StandL")


PLUS your case select also needs to be setup in strings,
gotta use them " .. Quotes ;)

Case "StandR" ; Stand Right

Case "StandL" ; Stand Left


soja(Posted 2003) [#3]
StandR, StandL, RWalk, and LWalk are all 0!

The easiest thing is to make some constants:
Const StandR = 1
Const StandL = 2
Const RWalk = 3
Const LWalk = 4


Now you can pass them in just like you're doing (like "ini_Samus(StandL)").

<EDIT: Paradox beat me to it>
<EDIT: I didn't even notice it was taking a string. Probably easier to make the function take an int % instead of a string $... and just use the consts.


Paradox7(Posted 2003) [#4]
yes exactly what I was going to say also Soja :) just wanted to point out his problem first, rather then say a different way to do it. But Yes, I would use Consts, and Int varibles instead, much nicer then strings ;)


Apollonius(Posted 2003) [#5]
less readable then string no?

Plus its using var u cant use in the future :(

Wasting Var no?


Paradox7(Posted 2003) [#6]
no... if you plan on using varibles named the same as strings, then you in for trouble :P now that would be less readable

if StandL then ini_Samus("StandL")

not good..

and about.. wasting a Var?... don't you worry, there are plenty of Vars for you to play with ;P

Oh and working with numbers is faster then working with strings.