Possible stupid BMax mistakes???
BlitzMax Forums/BlitzMax Beginners Area/Possible stupid BMax mistakes???| 
 | ||
| So I've written a little program ... should be quite easy ... all it does is create a little ship for you to move around the screen.  My program doesn't error ... it just runs and then says process complete ... there's a loop in there but it just doesn't seem to stay running ... what the heck ... all the other BMax code runs just fine and I can't quite see anything wrong with the code. | 
| 
 | ||
| hey jeremy I did just that today lol. took me a while to figure it out too as I'm having trouble understanding the samples that come with Bmax. Here's my really simple example: I isolated just the ship moving around when you use cursor keys. 
Incbin "ship.png" 
Graphics 800,600
Global player = LoadImage("incbin::ship.png")
Global player_x= 356
Global player_y= 400
While Not KeyDown(Key_Escape) 
Cls
'****** ship movement Keyboard ******
'************************************
If  KeyDown (key_up)
     Player_y=Player_y-4  
      If Player_y<0 Then Player_y=0
EndIf
If  KeyDown (key_down)
     Player_y=Player_y+4  
      If Player_y>536 Then Player_y=536
EndIf
If  KeyDown (key_left)
     Player_x=Player_x-4  
      If Player_x<0 Then Player_x=0
EndIf
If  KeyDown (key_right)
     Player_x=Player_x+4  
      If Player_x>736 Then Player_x=736
EndIf
'************************************
'************************************
DrawImage player,player_x,player_y
Flip 
Wend
 | 
| 
 | ||
| Oh ... I see an error now ... nevermind ... I thought it was compiling just fine but I realized it's saying some null object is trying to be accessed. | 
| 
 | ||
| oops didn't see your last post till after I posted the above. I'm doing a 1942 style shooter which I figured a good game to get to learn the basics with. | 
| 
 | ||
| Maybe someone can see which object I'm screwing up with ... I guess it's the Create function or the UpdateAll() function but they seem to fit inline with the other BMax examples ... <shrugs>  sure it's simple ... 
Strict
'====== ROCKET RALLY ========================
'====== JEREMY ALESSI =======================
'====== GLOBALS =============================
Global entity2DCount
Global entity2DList:TList
'============================================
'====== INCBIN ==============================
Incbin "Media/entity2DImages/boing.png"
'============================================
'====== TYPES ===============================
'====== ENTITY 2D SUPER TYPE ================
Type entity2D
	Field image
	Field x, y
	Field vX, vY
	
	Function UpdateAll()
	
		Local e2D:entity2D
		If entity2DList = Null Then Return
		For e2D:entity2D = EachIn entity2DList
			e2D.Update()
			e2D.Draw()
		Next
	
	End Function
	
	Method New()
	
		If entity2DList = Null Then entity2DList = New TList
                entity2DList.AddLast(Self)
                entity2DCount = entity2DCount + 1
	
	End Method
	
	Method Destroy()
    
		entity2DList.Remove(Self)
		entity2DCount = entity2DCount - 1
  
	End Method
	Method Update() Abstract
	
	Method Draw() Abstract
	
End Type
'============================================
'====== PLAYER SUB TYPE =====================
Type player Extends entity2D
	Field playState$
	
	Function Create:player(x, y)
	
		Local p:player
		p:player = New player
		p.x = x
		p.y = y
		p.image = LoadImage("incbin::boing.png")
		MidHandleImage(p.image)
		p.playState$ = "Action"
		Return p
				
	End Function
	
	Method Update()
		
		Select Self.playState$
		
			Case "Calculation"
			
			Case "Action"
				If KeyDown(KEY_W) Then Self.y = Self.y - 1
				If KeyDown(KEY_S) Then Self.y = Self.y + 1
				If KeyDown(KEY_A) Then Self.x = Self.x - 1
				If KeyDown(KEY_D) Then Self.x = Self.x + 1
				
		
		End Select
	
	End Method
	
	Method Draw()
	
		AutoImageFlags MASKEDIMAGE
		SetMaskColor(255, 0, 255)
		SetRotation 0
		SetScale 1, 1
		DrawImage(Self.x, Self.y, Self.image)
	
	End Method
End Type
'============================================
'====== MAIN LOOP ===========================
Graphics(640, 480, 32, 60)
Local p:player = player.Create(320, 240)
SetClsColor(0, 0, 0)
Repeat
	Cls
	p.UpdateAll()	
	FlushMem
	Flip	
	
Until KeyHit (KEY_ESCAPE)
End
'============================================
 | 
| 
 | ||
| sucks that you can't copy and paste in the IDE, it all comes out in one line without formatting. I hear protean has a bmax Beta that would probably work though. | 
| 
 | ||
| Yeah that does stink ... | 
| 
 | ||
| Ugh ... come one no one saw that I was totally putting DrawImage(x, y, image) instead of DrawImage(image, x, y) lol... nice one! | 
| 
 | ||
| Muhahah. i do that all too many times! Hye, about the formatting issue? it used to happen in b3d's IDE too sometimes. I wonder whats causing it? | 
| 
 | ||
|  Hye, about the formatting issue? it used to happen in b3d's IDE too sometimes. I wonder whats causing it?  Bad coding ;] | 
| 
 | ||
| everyone seems to be going mad with incbin, you know you dont have to use that:P;) | 
| 
 | ||
| Incbin is great :D Especialy if you just wanted to include a few images for some little micro game. | 
| 
 | ||
|  sucks that you can't copy and paste in the IDE, it all comes out in one line without formatting. I hear protean has a bmax Beta that would probably work though.  and from Mark's BETA release notes:-  These are beta versions. There will be problems and issues with them. The Win32 and Linux version of BlitzMax will not be officially released until such problems have been solved to the best of our ability.    * The IDE is highly experimental! More work to be done on it, so no complaints yet please.  | 
| 
 | ||
| in the meantime you can cut&paste from the sample to notepad and cut&paste from there to the IDE. | 
| 
 | ||
| or use Protean :) | 
| 
 | ||
| heh, I'll probably get visual blitz for bmax when its out. Pretty simple but has some really nice extras for a newbie like me. Like the autocomplete drop down menu's, line numbers folding functions, and the quick nav list on the right. A bargain at $15, really tempted to get Protean but even with the Xmas discount price I can't afford it right now. If I get some good news = $ to spare in the next couple of weeks I'll probably get Protean since its out allready :) |