Need Help With Another Game!

Blitz3D Forums/Blitz3D Beginners Area/Need Help With Another Game!

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Optimised. Still needs a bit of improvement.
AppTitle "Across The Land; Need Help With Collisions!"
Graphics 800,600,0,1
SetBuffer BackBuffer()
AutoMidHandle True
SeedRnd MilliSecs()

Global ScrollX = 0
Global IHitATree = 0
Global ScrollY = 0
Global MoveRight
Global MoveUp
Global MoveDown
Global MoveLeft

Global FieldMusic = PlayMusic("A.L Field.wav")

Type Player;The Players Type
Field x,y,hit,image,frame,TrueX,TrueY,Atk1,Atk2,Atk3,Atk4,Atk5,Atk6,Sleep
Field Paralyze,Confuse,Poison10,Poison20,Poison30,Poison40,Poison50,GP
Field UnderControl,DecoyGnome1,DecoyGnome2,DecoyGnome3,MaxHit,Item1,Item2,Item3,Item4,Item5,Item6
Field Atk1Name,Atk2Name,Atk3Name,Atk4Name,Atk5Name,Atk6Name
End Type 


Global Player.Player = New Player;Make A New Player
Player\x = 400
Player\y = 300
Player\image = LoadImage("Across The Land Gnome.bmp")
Player\frame = 0


Type Terrain;The Type For The Trees, And Other Terrain.(Such As Water, Boulders,Ect.)
Field x,y,TrueX,TrueY,image
End Type 

Global ALTreei = LoadImage("A.L Tree Tile.bmp")

Global StopLeft = 0

Global StopRight = 0

Global StopUp = 0

Global StopDown = 0

Global BoardImage = LoadImage("A.L Field BackGround.bmp")

;Make 1 Tree
MakeTree(100,300)

While Not KeyDown(1)
Cls

If Not ChannelPlaying(FieldMusic);If The Music Stops, Restart It.
FieldMusic = PlayMusic("A.L Field.wav")
End If 

TileImage BoardImage,Scrollx,ScrollY;Tile The BackGround Image
DrawImage Player\image,Player\x,Player\y,Player\Frame;Draw The Player

MovePlayer();Move The Player
DrawTree();Draw The Trees, And Check Collisions Between Tree And Player.
Flip 
Wend 
End

Function MakeTree(x,y)
Tree.Terrain = New Terrain
Tree\x = x
Tree\y = y
Tree\TrueX = x
Tree\TrueY = y
Tree\image = ALTreei
End Function 


Function DrawTree()


If IHitATree = 1
If MoveRight = 1
ScrollX = ScrollX + 5
End If 

If MoveLeft = 1
ScrollX = ScrollX - 5
End If 

If MoveUp = 1
ScrollY = ScrollY - 5
End If 

If MoveDown = 1
ScrollY = ScrollY + 5
EndIf
IHitATree = 0 
EndIf



If KeyDown(205) 
ScrollX = ScrollX - 5
MoveRight = 1
Else
MoveRight = 0
End If 

If KeyDown(203)
MoveLeft = 1
ScrollX = ScrollX + 5
Else
MoveLeft = 0
End If 

If KeyDown(200)
MoveUp = 1
ScrollY = ScrollY + 5
Else
MoveUp = 0
End If 

If KeyDown(208)
ScrollY = ScrollY - 5
MoveDown = 1
Else
MoveDown = 0
End If 







For Tree.Terrain = Each Terrain


DrawImage Tree\image,Tree\x,Tree\y
Tree\x = Scrollx + Tree\TrueX
Tree\y = Scrolly + Tree\TrueY

If ImagesOverlap(Player\image,Player\x,Player\y,Tree\image,Tree\x,Tree\y)
If ImagesCollide(Player\image,Player\x,Player\y,0,Tree\image,Tree\x,Tree\y,0)


IHitATree = 1



TreeHit = 1
Else
TreeHit = 0

EndIf
EndIf




;Check Collisions Between Tree And Player.This is What I need Help With.
;If You Can Come Up With A Better Way To Do This, I Would Be Truly GreatFul.
;
;Currently It Works Like This,
;When The Player Hits The Left Side Of The Tree(Tree\x-50),The Variable StopRight = 1.
;And In The Move Player Function,You Will Notice That The Player Can Only Move Right, 
;If StopRight = 0.
;So When The Player Hits The Left Edge Of The Tree, He Can No Longer Move Right.
If TreeHit = 1


;But If The Player Is Not Touching The Right Edge Of The Tree, StopRight Then = 0,
;So That He Can Move Right.
;Because OtherWise, The First Time That The Player Touched The Tree He Would No Longer
;Be Able To Move Right AT ANY TIME!. Even While Not Touching The Tree.
ElseIf TreeHit = 0

End If 


;You Can Uncomment These 3 Sections Of Code If You Want.They Work Just Like The Above, Except For
;The Right,Bottom, And Top Sides Of The Tree


;If ImagesCollide(Player\image,400,300,0,Tree\image,Tree\x+50,Tree\y,0)
;StopLeft = 1
;ElseIf Not ImagesCollide(Player\image,400,300,0,Tree\image,Tree\x+50,Tree\y,0)
;StopLeft = 0
;End If 

;If ImagesCollide(Player\image,400,300,0,Tree\image,Tree\x,Tree\y+50,0)
;StopUp = 1
;ElseIf Not ImagesCollide(Player\image,400,300,0,Tree\image,Tree\x,Tree\y+50,0)
;StopUp = 0
;End If 

;If ImagesCollide(Player\image,400,300,0,Tree\image,Tree\x+50,Tree\y-50,0)
;StopDown = 1
;ElseIf Not ImagesCollide(Player\image,400,300,0,Tree\image,Tree\x+50,Tree\y-50,0)
;StopDown = 0
;End If 

;Make Sure The Tree Stays Firmly Glued To Where It's Supposed To Be.



Next






End Function 


Function MovePlayer()
;Scroll The Screen In The Appropiate Direction While The Player Is Holding Down One Of The Arrow Keys.



End Function