Help with Side Scroller 
	 
	
		| Author | 
		Message | 
	 
		 
		goober999
 
 
 
    
		 | 
		
		
			
				  Posted: Fri Jan 05, 2007 4:43 pm    Post subject: Help with Side Scroller  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Ok I am in grade 10 and this project is for my summative. I am designing a mario game and so far your forums have been very useful when I'm stuck. Currently, I am having a problem getting the mario sprite to interact with the tiles in the level i have created. I have created a somewhat working collision detection system, but it is very glitchy, especially while mario is jumping. Here is the code:
 
	  | code: | 	 		  
 
%%Tiling Engine For Mario v1.0
 
setscreen ("graphics:640;640")
 
setscreen ("offscreenonly")
 
 
%%Declare Variables
 
const td : int := 20    %%TILES DOWN ***
 
const ta : int := 40    %%TILES ACROSS (THE LENGTH OF THE LEVEL)
 
const TileWidth : int := 32 %%TILE WIDTH ***
 
const nt : int := 5     %%NUMBER OF TILES BEING USED
 
const background : int := Pic.FileNew ("tiles/Back2.bmp")
 
var loader : array 1 .. 400 of int
 
var level1 : array 0 .. 5 of int
 
var Across : array 1 .. ta of string
 
var rander, tiles, tnum, StartPosition, lchng : int
 
var Locations : array 1 .. (ta * td) of string
 
var TileImages : array 1 .. (ta * td) of int
 
var chars : array char of boolean
 
var lend : int := (TileWidth * ta - 640) * -1
 
var jc : int := 14
 
var mem2, poo : int := 1
 
var cntr : int := 0
 
open : tiles, "tiles.txt", get
 
 
%%Collision Variables
 
var cdir, cdir2 : string := "f"
 
 
%%Mario Parameters
 
var mx, my, mcount, chng, vchng, mbase : int
 
var chars1 : array char of boolean
 
var dir : string
 
mbase := 32
 
dir := "right"
 
mx := 1
 
my := mbase
 
chng := 8
 
mcount := 1
 
var mario : array 1 .. 8 of int
 
var jumping, jumping2 : string := "false"
 
 
%%Loads Mario
 
for i : 1 .. 8
 
    mario (i) := Pic.FileNew ("mario" + intstr (i) + ".BMP")
 
end for
 
Pic.Draw (mario (1), mx, my, picMerge)
 
 
 
%%Load The Background
 
Pic.Draw (background, 1, 1, picCopy)
 
%%Load the map into an array
 
StartPosition := 0
 
for i : 1 .. td
 
    for ii : 1 .. ta
 
        exit when eof (tiles)
 
        get : tiles, Across (ii)
 
    end for
 
    for ii : 1 .. ta
 
        Locations (ii + StartPosition) := Across (ii)
 
        if strint (Locations (ii + StartPosition)) not= 2 then
 
            cntr := cntr + 1
 
        end if
 
    end for
 
    StartPosition += ta
 
end for
 
close : tiles
 
 
%%Load up the tiles
 
for i : 1 .. 8
 
    TileImages (i) := Pic.FileNew ("tiles/" + intstr (i) + ".bmp")   %Load every image, in order, from the file folder that holds the tiles.
 
end for
 
 
%%Make White Tiles Transparent
 
for i : 1 .. (ta * td)
 
    Pic.SetTransparentColor (TileImages (strint (Locations (i))), white)
 
end for
 
 
lchng := 0
 
var cx, cy : array 1 .. cntr of int
 
 
 
%%The Tile Mapper
 
loop
 
    Input.KeyDown (chars)
 
    if chars (KEY_RIGHT_ARROW) then
 
        if mx >= 320 and lchng >= lend and cdir not= "r" then
 
            lchng := lchng - 5
 
        end if
 
    end if
 
    if chars (KEY_LEFT_ARROW) then
 
        if lchng < 0 and mx <= 329 and cdir not= "l" then
 
            lchng := lchng + 5
 
        end if
 
    end if
 
    Pic.Draw (background, 1, 1, picCopy)
 
    var XPositionCounter : int := 0
 
    var YPositionCounter : int := td
 
    for i : 1 .. (ta * td)
 
        if XPositionCounter = ta then
 
            YPositionCounter -= 1
 
            XPositionCounter := 0
 
        end if
 
        if YPositionCounter = 0 then
 
            YPositionCounter := 0
 
        end if
 
        Pic.Draw (TileImages (strint (Locations (i))), (TileWidth * XPositionCounter + lchng), (TileWidth * YPositionCounter - TileWidth), picMerge)
 
        if strint (Locations (i)) not= 2 then
 
            if mem2 > cntr then
 
                mem2 := 1
 
            end if
 
            cx (mem2) := TileWidth * XPositionCounter + lchng
 
            cy (mem2) := TileWidth * YPositionCounter - TileWidth
 
            mem2 := mem2 + 1
 
        end if
 
        XPositionCounter += 1
 
    end for
 
 
 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%COLLISION DETECTION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
    for i : 1 .. cntr
 
        if (mx + 32) > cx (i) and mx < (cx (i) + 32) and (my + 56) > cy (i) and my < (cy (i) + 32) then
 
            if my + 56 = cy (i) then
 
                cdir := "d"
 
            elsif my = cy (i) + 32 then
 
                cdir := "u"
 
            end if
 
            if mx + 32 >= cx (i) + 20 then
 
                cdir2 := "r"
 
            elsif mx = cx (i) + 12 then
 
                cdir2 := "l"
 
            end if
 
        end if
 
    end for
 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%MARIO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
    %Walking Right Sequence
 
    Input.KeyDown (chars1)
 
    if chars1 (KEY_RIGHT_ARROW) and jumping = "false" and jumping2 = "false" then %Code for walking right
 
        dir := "right"
 
        if mcount = 2 or mcount > 2 then
 
            mcount := 1
 
        elsif mcount < 2 then
 
            mcount := mcount + 1
 
        end if
 
        if mx < 320 and cdir not= "r" then
 
            mx := mx + chng
 
        end if
 
        if lchng <= lend and cdir not= "r" then
 
            mx := mx + chng
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
    end if
 
    delay (20)
 
 
 
    %Jumping Sequence
 
    if chars (KEY_UP_ARROW) then
 
        if jumping = "false" and jumping2 = "false" then
 
            jumping := "true"
 
            jc := 12
 
        end if
 
    end if
 
    if jumping = "true" and jumping2 = "false" then %Code for Jumping
 
        if chars1 (KEY_RIGHT_ARROW) then
 
            if mx < 320 and cdir not= "r" then
 
                mx := mx + chng
 
            end if
 
            if lchng <= lend and cdir not= "r" then
 
                mx := mx + chng
 
            end if
 
            dir := "right"
 
        end if
 
        if chars1 (KEY_LEFT_ARROW) then
 
            if mx < 320 and cdir not= "l" then
 
                mx := mx - chng
 
            end if
 
            if lchng <= lend and cdir not= "l" then
 
                mx := mx - chng
 
            end if
 
            dir := "left"
 
        end if
 
        if dir = "right" then
 
            mcount := 3
 
        else
 
            mcount := 8
 
        end if
 
        for i : 1 .. jc
 
            my := my + 1
 
            exit when cdir = "d"
 
        end for
 
        jc := jc - 1
 
        if cdir = "d" or jc = 0 then
 
            jumping2 := "true"
 
            jumping := "false"
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
    end if
 
 
    if jumping2 = "true" then
 
        if chars1 (KEY_RIGHT_ARROW) then
 
            if mx < 320 and cdir not= "r" then
 
                mx := mx + chng
 
            end if
 
            if lchng <= lend and cdir not= "r" then
 
                mx := mx + chng
 
            end if
 
            dir := "right"
 
        end if
 
        if chars1 (KEY_LEFT_ARROW) then
 
            if mx < 320 and cdir not= "l" then
 
                mx := mx - chng
 
            end if
 
            if lchng <= lend and cdir not= "l" then
 
                mx := mx - chng
 
            end if
 
            dir := "left"
 
        end if
 
        if dir = "right" then
 
            mcount := 6
 
        else
 
            mcount := 7
 
        end if
 
        if cdir not= "u" then
 
            for i : 1 .. jc
 
                my := my - 1
 
                exit when cdir = "u" or cdir = "d"
 
            end for
 
        end if
 
        if cdir not= "u" then
 
            jc := jc + 1
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
        if cdir = "u" then
 
            jumping2 := "false"
 
            if dir = "right" then
 
                mcount := 1
 
            else
 
                mcount := 4
 
            end if
 
        end if
 
    end if
 
 
    %Walking Left Sequence
 
    if chars1 (KEY_LEFT_ARROW) and jumping = "false" and jumping2 = "false" then     %Code for walking left
 
        dir := "left"
 
        if mcount = 5 or mcount < 4 then
 
            mcount := 4
 
        elsif mcount < 5 then
 
            mcount := mcount + 1
 
        end if
 
        if lchng = 0 and cdir not= "l" then
 
            mx := mx - chng
 
        end if
 
        if lchng <= lend and cdir = "l" then
 
            mx := mx - chng
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
    end if
 
 
    %If in mid air...
 
    if my > 32 and cdir not= "u" and jumping = "f" and jumping2 = "f" then
 
        jumping2 := "t"
 
    end if
 
    %Static Sequence
 
    if chars1 (KEY_RIGHT_ARROW) = false and chars1 (KEY_LEFT_ARROW) = false and chars1 (KEY_UP_ARROW) = false and jumping = "false" and jumping2 = "false" then     %If Static...
 
        if mcount = 4 or mcount = 5 then
 
            mcount := 4
 
            Pic.Draw (mario (mcount), mx, my, picMerge)
 
        elsif mcount = 1 or mcount = 2 then
 
            mcount := 1
 
            Pic.Draw (mario (mcount), mx, my, picMerge)
 
        end if
 
    end if
 
    %%%
 
    put cdir
 
    View.Update
 
    cls
 
    cdir := "f"
 
end loop
 
 
  | 	  
 
I apologize, sloppy code, and many useless variables :p Any help would be greatly apprecited! Oh, and attached is the files.
		
	
  
          
							 
	
	
		
	 
	
		|  Description: | 
		
			
		 | 
		  Download | 
	 
	
		|  Filename: | 
		 Mario Game.zip | 
	 
	
		|  Filesize: | 
		 42.66 KB | 
	 
	
		|  Downloaded: | 
		 141 Time(s) | 
	 
	 
	 
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		Ultrahex
 
 
 
    
		 | 
		
		
			
				  Posted: Fri Jan 05, 2007 5:27 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Im Just Curious, But Did you ever actually write out this stuff on paper, had some initial plan before starting this???
 
 
and yes your code is quite horendus in terms of variable naming for someone to notice what your trying to do...
 
 
by running the program it appears as though you are only doing vertical collision and not horizontal collision at all
 
 
Ill look at it a little more, depends on how much my head hurts, but ill try...
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Ultrahex
 
 
 
    
		 | 
		
		
			
				  Posted: Fri Jan 05, 2007 8:06 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				This is as far as i got trying to figure out what your code even does.....
 
 
... Yes i removed the jump and all collision detection for hope that it would help you somewhat.... the jump you implemented does not make logical sense to me BTW.
 
 
	  | code: | 	 		  
 
%%Tiling Engine For Mario v1.0
 
setscreen ("graphics:640;640")
 
setscreen ("offscreenonly")
 
 
 
% Tile Variables
 
 
const tilesVertical : int := 20
 
const tilesHorizontal : int := 40
 
const TileWidth : int := 32
 
 
var levelMapFile : int
 
open : levelMapFile, "tiles.txt", get
 
 
% Images
 
 
const background : int := Pic.FileNew ("tiles/Back2.bmp")
 
 
var StilesHorizontalrtPosition, lchng : int
 
var Locations : array 1 .. (tilesHorizontal * tilesVertical) of string
 
var TileImages : array 1 .. (tilesHorizontal * tilesVertical) of int
 
var chars : array char of boolean
 
var lend : int := (TileWidth * tilesHorizontal - 640) * -1
 
var jc : int := 14
 
var mem2 : int := 1
 
var cntr : int := 0
 
 
 
%%Mario Parameters
 
var mario_x, mario_y, mario_frame, chng : int
 
var dir : string := "right"
 
mario_x := 1
 
mario_y := 32
 
chng := 8
 
mario_frame := 1
 
var mario : array 1 .. 8 of int
 
var jumping : boolean := false
 
var jump_count : int := 0
 
 
%%Loads Mario
 
for i : 1 .. 8
 
    mario (i) := Pic.FileNew ("mario" + intstr (i) + ".BMP")
 
end for
 
Pic.Draw (mario (1), mario_x, mario_y, picMerge)
 
 
 
%%Load The Background
 
Pic.Draw (background, 1, 1, picCopy)
 
%%Load the map into an array
 
StilesHorizontalrtPosition := 0
 
for i : 1 .. tilesVertical
 
    for ii : 1 .. tilesHorizontal
 
        exit when eof (levelMapFile)
 
        get : levelMapFile, Locations (ii + StilesHorizontalrtPosition)
 
 
        if strint (Locations (ii + StilesHorizontalrtPosition)) not= 2 then
 
            cntr := cntr + 1
 
        end if
 
    end for
 
    StilesHorizontalrtPosition += tilesHorizontal
 
end for
 
close : levelMapFile
 
 
%%Load up the tiles
 
for i : 1 .. 8
 
    TileImages (i) := Pic.FileNew ("tiles/" + intstr (i) + ".bmp")   %Load every image, in order, from the file folder that holds the tiles.
 
end for
 
 
%%Make White Tiles Transparent
 
for i : 1 .. (tilesHorizontal * tilesVertical)
 
    Pic.SetTransparentColor (TileImages (strint (Locations (i))), white)
 
end for
 
 
lchng := 0
 
var cx, cy : array 1 .. cntr of int
 
 
%%The Tile Mapper
 
loop
 
 
    %Character Movement
 
    Input.KeyDown (chars)
 
 
    % Right
 
    if chars (KEY_RIGHT_ARROW) then
 
        mario_x += 12
 
    end if
 
 
    % Left
 
    if chars (KEY_LEFT_ARROW) then
 
        mario_x -= 12
 
    end if
 
 
    %Sprite Animation
 
 
    if chars (KEY_RIGHT_ARROW) and jumping = false then
 
        dir := "right"
 
        if (mario_frame >= 2) then
 
            mario_frame := 1
 
        else
 
            mario_frame := 2
 
        end if
 
    end if
 
 
    if chars (KEY_LEFT_ARROW) and jumping = false then
 
        dir := "left"
 
        if (mario_frame >= 5) then
 
            mario_frame := 4
 
        else
 
            mario_frame := 5
 
        end if
 
    end if
 
 
    %Draw Background
 
    Pic.Draw (background, 1, 1, picCopy)
 
 
    %Draw Tiles
 
    var XPositionCounter : int := 0
 
    var YPositionCounter : int := tilesVertical
 
    for i : 1 .. (tilesHorizontal * tilesVertical)
 
        if XPositionCounter = tilesHorizontal then
 
            YPositionCounter -= 1
 
            XPositionCounter := 0
 
        end if
 
        if YPositionCounter = 0 then
 
            YPositionCounter := 0
 
        end if
 
        Pic.Draw (TileImages (strint (Locations (i))), (TileWidth * XPositionCounter + lchng), (TileWidth * YPositionCounter - TileWidth), picMerge)
 
        if strint (Locations (i)) not= 2 then
 
            if mem2 > cntr then
 
                mem2 := 1
 
            end if
 
            cx (mem2) := TileWidth * XPositionCounter + lchng
 
            cy (mem2) := TileWidth * YPositionCounter - TileWidth
 
            mem2 := mem2 + 1
 
        end if
 
        XPositionCounter += 1
 
    end for
 
 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%MARIO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
    %Walking Right Sequence
 
 
 
    /*
 
     %Jumping Sequence
 
     if chars (KEY_UP_ARROW) then
 
     if jumping = "false" and jumping2 = "false" then
 
     jumping := "true"
 
     jc := 12
 
     end if
 
     end if
 
     if jumping = "true" and jumping2 = "false" then  %Code for Jumping
 
     if chars1 (KEY_RIGHT_ARROW) then
 
     if mario_x < 320 then
 
     mario_x := mario_x + chng
 
     end if
 
     if lchng <= lend then
 
     mario_x := mario_x + chng
 
     end if
 
     dir := "right"
 
     end if
 
     if chars1 (KEY_LEFT_ARROW) then
 
     if mario_x < 320 then
 
     mario_x := mario_x - chng
 
     end if
 
     if lchng <= lend then
 
     mario_x := mario_x - chng
 
     end if
 
     dir := "left"
 
     end if
 
     if dir = "right" then
 
     mario_frame := 3
 
     else
 
     mario_frame := 8
 
     end if
 
     for i : 1 .. jc
 
     mario_y := mario_y + 1
 
     end for
 
     jc := jc - 1
 
     if jc = 0 then
 
     jumping2 := "true"
 
     jumping := "false"
 
     end if
 
     Pic.Draw (mario (mario_frame), mario_x, mario_y, picMerge)
 
     end if
 
 
     if jumping2 = "true" then
 
     if chars1 (KEY_RIGHT_ARROW) then
 
     if mario_x < 320 then
 
     mario_x := mario_x + chng
 
     end if
 
     if lchng <= lend then
 
     mario_x := mario_x + chng
 
     end if
 
     dir := "right"
 
     end if
 
     if chars1 (KEY_LEFT_ARROW) then
 
     if mario_x < 320 then
 
     mario_x := mario_x - chng
 
     end if
 
     if lchng <= lend then
 
     mario_x := mario_x - chng
 
     end if
 
     dir := "left"
 
     end if
 
     if dir = "right" then
 
     mario_frame := 6
 
     else
 
     mario_frame := 7
 
     end if
 
     for i : 1 .. jc
 
     mario_y := mario_y - 1
 
     end for
 
     Pic.Draw (mario (mario_frame), mario_x, mario_y, picMerge)
 
     end if
 
     */
 
    if chars (KEY_RIGHT_ARROW) = false and chars (KEY_LEFT_ARROW) = false and chars (KEY_UP_ARROW) = false and jumping = false then
 
        if mario_frame = 5 then
 
            mario_frame := 4
 
        elsif mario_frame = 2 then
 
            mario_frame := 1
 
        end if
 
    end if
 
 
    Pic.Draw (mario (mario_frame), mario_x, mario_y, picMerge)
 
    put "block y: ", cy (10)
 
    put "block x: ", cx (10)
 
    put "mario y: ", mario_y
 
    put "mario x: ", mario_x
 
    View.Update
 
    delay (20)
 
    cls
 
end loop
 
 
  | 	  
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		ericfourfour
 
 
 
    
		 | 
		
		
			
				  Posted: Fri Jan 05, 2007 8:24 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
					  | code: | 	 		  const tilesVertical : int := 20
 
const tilesHorizontal : int := 40
 
const TileWidth : int := 32  | 	  
 
The naming convention for constants is almost always all capitals. Check out wtd's draft of style guidelines for more information.
 
 
I also noticed some unnecessarily awkward variable names. chng, lend, and cntr. I assume the first means change, the second left_end and the third centre. Never sacrifice something as important as clarity for something as trivial as a few characters.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		CodeMonkey2000
 
 
 
    
		 | 
		
		
			
				  Posted: Sat Jan 06, 2007 11:15 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Wow that code is really messy, and has bad variable names. As for the code, i think it is you detection procedure, it should be a function and it should only return what you are looking for or "f".	  | code: | 	 		  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%COLLISION DETECTION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
function detect (n : string) : string
 
    for i : 1 .. cntr
 
        if (mx + 32) > cx (i) and mx < (cx (i) + 32) and (my + 56) > cy (i) and my < (cy (i) + 32) then
 
            if my + 56 = cy (i) + 20 and n = "u" then
 
                result "u"
 
            elsif my <= cy (i) + 12 and n = "d" then
 
                result "d"
 
            elsif mx + 32 >= cx (i) + 20 and n = "r" then
 
                result "r"
 
            elsif mx <= cx (i) + 12 and n = "l" then
 
                result "l"
 
            end if
 
        end if
 
    end for
 
    return "f"
 
end detect
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
  | 	  
 
this should work, assuming that this collision system is correct. Normally I would have the detection function take in x1,y1,x2,y2 and see if they are colliding in anyway and return true or false, that way the same function can be use for detecting enemies too.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		CodeMonkey2000
 
 
 
    
		 | 
		
		
			
				  Posted: Sat Jan 06, 2007 11:27 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				And if you are not sure how to use that in your program, here 	  | code: | 	 		  %%Tiling Engine For Mario v1.0
 
setscreen ("graphics:640;640")
 
setscreen ("offscreenonly")
 
 
%%Declare Variables
 
const td : int := 20    %%TILES DOWN ***
 
const ta : int := 40    %%TILES ACROSS (THE LENGTH OF THE LEVEL)
 
const TileWidth : int := 32 %%TILE WIDTH ***
 
const nt : int := 5     %%NUMBER OF TILES BEING USED
 
const background : int := Pic.FileNew ("tiles/Back2.bmp")
 
var loader : array 1 .. 400 of int
 
var level1 : array 0 .. 5 of int
 
var Across : array 1 .. ta of string
 
var rander, tiles, tnum, StartPosition, lchng : int
 
var Locations : array 1 .. (ta * td) of string
 
var TileImages : array 1 .. (ta * td) of int
 
var chars : array char of boolean
 
var lend : int := (TileWidth * ta - 640) * -1
 
var jc : int := 14
 
var mem2, poo : int := 1
 
var cntr : int := 0
 
open : tiles, "tiles.txt", get
 
 
%%Collision Variables
 
var cdir : string := "f"
 
 
%%Mario Parameters
 
var mx, my, mcount, chng, vchng, mbase : int
 
var chars1 : array char of boolean
 
var dir : string
 
mbase := 32
 
dir := "right"
 
mx := 1
 
my := mbase
 
chng := 8
 
mcount := 1
 
var mario : array 1 .. 8 of int
 
var jumping, jumping2 : string := "false"
 
 
%%Loads Mario
 
for i : 1 .. 8
 
    mario (i) := Pic.FileNew ("mario" + intstr (i) + ".BMP")
 
end for
 
Pic.Draw (mario (1), mx, my, picMerge)
 
 
 
%%Load The Background
 
Pic.Draw (background, 1, 1, picCopy)
 
%%Load the map into an array
 
StartPosition := 0
 
for i : 1 .. td
 
    for ii : 1 .. ta
 
        exit when eof (tiles)
 
        get : tiles, Across (ii)
 
    end for
 
    for ii : 1 .. ta
 
        Locations (ii + StartPosition) := Across (ii)
 
        if strint (Locations (ii + StartPosition)) not= 2 then
 
            cntr := cntr + 1
 
        end if
 
    end for
 
    StartPosition += ta
 
end for
 
close : tiles
 
 
%%Load up the tiles
 
for i : 1 .. 8
 
    TileImages (i) := Pic.FileNew ("tiles/" + intstr (i) + ".bmp")   %Load every image, in order, from the file folder that holds the tiles.
 
end for
 
 
%%Make White Tiles Transparent
 
for i : 1 .. (ta * td)
 
    Pic.SetTransparentColor (TileImages (strint (Locations (i))), white)
 
end for
 
 
lchng := 0
 
var cx, cy : array 1 .. cntr of int
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%COLLISION DETECTION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
function detect (n : string) : string
 
    for i : 1 .. cntr
 
        if (mx + 32) > cx (i) and mx < (cx (i) + 32) and (my + 56) > cy (i) and my < (cy (i) + 32) then
 
            if my + 56 = cy (i) + 20 and n = "u" then
 
                result "u"
 
            elsif my <= cy (i) + 12 and n = "d" then
 
                result "d"
 
            elsif mx + 32 >= cx (i) + 20 and n = "r" then
 
                result "r"
 
            elsif mx <= cx (i) + 12 and n = "l" then
 
                result "l"
 
            end if
 
        end if
 
    end for
 
    result "f"
 
end detect
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
%%The Tile Mapper
 
loop
 
    Input.KeyDown (chars)
 
    if chars (KEY_RIGHT_ARROW) then
 
        if mx >= 320 and lchng >= lend and detect ("r") not= "r" then
 
            lchng := lchng - 5
 
        end if
 
    end if
 
    if chars (KEY_LEFT_ARROW) then
 
        if lchng < 0 and mx <= 329 and detect ("l") not= "l" then
 
            lchng := lchng + 5
 
        end if
 
    end if
 
    Pic.Draw (background, 1, 1, picCopy)
 
    var XPositionCounter : int := 0
 
    var YPositionCounter : int := td
 
    for i : 1 .. (ta * td)
 
        if XPositionCounter = ta then
 
            YPositionCounter -= 1
 
            XPositionCounter := 0
 
        end if
 
        if YPositionCounter = 0 then
 
            YPositionCounter := 0
 
        end if
 
        Pic.Draw (TileImages (strint (Locations (i))), (TileWidth * XPositionCounter + lchng), (TileWidth * YPositionCounter - TileWidth), picMerge)
 
        if strint (Locations (i)) not= 2 then
 
            if mem2 > cntr then
 
                mem2 := 1
 
            end if
 
            cx (mem2) := TileWidth * XPositionCounter + lchng
 
            cy (mem2) := TileWidth * YPositionCounter - TileWidth
 
            mem2 := mem2 + 1
 
        end if
 
        XPositionCounter += 1
 
    end for
 
    put detect ("u")
 
 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%MARIO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
    %Walking Right Sequence
 
    Input.KeyDown (chars1)
 
    if chars1 (KEY_RIGHT_ARROW) and jumping = "false" and jumping2 = "false" then %Code for walking right
 
        dir := "right"
 
        if mcount = 2 or mcount > 2 then
 
            mcount := 1
 
        elsif mcount < 2 then
 
            mcount := mcount + 1
 
        end if
 
        if mx < 320 and detect ("r") not= "r" then
 
            mx := mx + chng
 
        end if
 
        if lchng <= lend and detect ("r") not= "r" then
 
            mx := mx + chng
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
    end if
 
    delay (20)
 
 
 
    %Jumping Sequence
 
    if chars (KEY_UP_ARROW) then
 
        if jumping = "false" and jumping2 = "false" then
 
            jumping := "true"
 
            jc := 12
 
        end if
 
    end if
 
    if jumping = "true" and jumping2 = "false" then %Code for Jumping
 
        if chars1 (KEY_RIGHT_ARROW) then
 
            if mx < 320 and detect ("r") not= "r" then
 
                mx := mx + chng
 
            end if
 
            if lchng <= lend and detect ("r") not= "r" then
 
                mx := mx + chng
 
            end if
 
            dir := "right"
 
        end if
 
        if chars1 (KEY_LEFT_ARROW) then
 
            if mx < 320 and detect ("l") not= "l" then
 
                mx := mx - chng
 
            end if
 
            if lchng <= lend and detect ("l") not= "l" then
 
                mx := mx - chng
 
            end if
 
            dir := "left"
 
        end if
 
        if dir = "right" then
 
            mcount := 3
 
        else
 
            mcount := 8
 
        end if
 
        for i : 1 .. jc
 
            my := my + 1
 
            exit when detect ("d") = "d"
 
        end for
 
        jc := jc - 1
 
        if detect ("d") = "d" or jc = 0 then
 
            jumping2 := "true"
 
            jumping := "false"
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
    end if
 
 
    if jumping2 = "true" then
 
        if chars1 (KEY_RIGHT_ARROW) then
 
            if mx < 320 and detect ("r") not= "r" then
 
                mx := mx + chng
 
            end if
 
            if lchng <= lend and detect ("r") not= "r" then
 
                mx := mx + chng
 
            end if
 
            dir := "right"
 
        end if
 
        if chars1 (KEY_LEFT_ARROW) then
 
            if mx < 320 and detect ("l") not= "l" then
 
                mx := mx - chng
 
            end if
 
            if lchng <= lend and detect ("l") not= "l" then
 
                mx := mx - chng
 
            end if
 
            dir := "left"
 
        end if
 
        if dir = "right" then
 
            mcount := 6
 
        else
 
            mcount := 7
 
        end if
 
        for i : 1 .. jc
 
            my := my - 1
 
            exit when detect ("u") = "u" or detect ("d") = "d"
 
        end for
 
        if detect ("u") not= "u" then
 
            jc := jc + 1
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
        if detect ("u") = "u" then
 
            jumping2 := "false"
 
            if dir = "right" then
 
                mcount := 1
 
            else
 
                mcount := 4
 
            end if
 
        end if
 
    end if
 
 
    %Walking Left Sequence
 
    if chars1 (KEY_LEFT_ARROW) and jumping = "false" and jumping2 = "false" then     %Code for walking left
 
        dir := "left"
 
        if mcount = 5 or mcount < 4 then
 
            mcount := 4
 
        elsif mcount < 5 then
 
            mcount := mcount + 1
 
        end if
 
        if lchng = 0 and detect ("l") not= "l" then
 
            mx := mx - chng
 
        end if
 
        if lchng <= lend and detect ("l") = "l" then
 
            mx := mx - chng
 
        end if
 
        Pic.Draw (mario (mcount), mx, my, picMerge)
 
    end if
 
 
    %Static Sequence
 
    if chars1 (KEY_RIGHT_ARROW) = false and chars1 (KEY_LEFT_ARROW) = false and chars1 (KEY_UP_ARROW) = false and jumping = "false" and jumping2 = "false" then     %If Static...
 
        if mcount = 4 or mcount = 5 then
 
            mcount := 4
 
            Pic.Draw (mario (mcount), mx, my, picMerge)
 
        elsif mcount = 1 or mcount = 2 then
 
            mcount := 1
 
            Pic.Draw (mario (mcount), mx, my, picMerge)
 
        end if
 
    end if
 
    put "block y: ", cy (10)
 
    put "block x: ", cx (10)
 
    put cdir
 
    put "mario y: ", my
 
    put "mario x: ", mx
 
    View.Update
 
    cls
 
    cdir := "f"
 
end loop
 
  | 	  
 
It doesn't work right. Mabey because you didnt implement it right or I did it wrong. But at least Mario get stuck in the blocks   
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		goober999
 
 
 
    
		 | 
		
		
			
				  Posted: Sat Jan 06, 2007 2:57 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Ok thanks a lot for the help I have taken spearmonkey2000's idea of using functions and expanded on it a bit using two functions: 1 for verticle collision, and one for horrizontal collision. Now a new problem  , for some reason, mario freezes when he encounters either type of collision. I'm oblivious to this any idea's?
 
	  | code: | 	 		  
 
%%Tiling Engine For Mario v1.0 
 
setscreen ("graphics:640;640") 
 
setscreen ("offscreenonly") 
 
 
%%Declare Variables 
 
const td : int := 20    %%TILES DOWN *** 
 
const ta : int := 40    %%TILES ACROSS (THE LENGTH OF THE LEVEL) 
 
const TileWidth : int := 32 %%TILE WIDTH *** 
 
const nt : int := 5     %%NUMBER OF TILES BEING USED 
 
const background : int := Pic.FileNew ("tiles/Back2.bmp") 
 
var loader : array 1 .. 400 of int 
 
var level1 : array 0 .. 5 of int 
 
var Across : array 1 .. ta of string 
 
var rander, tiles, tnum, StartPosition, lchng : int 
 
var Locations : array 1 .. (ta * td) of string 
 
var TileImages : array 1 .. (ta * td) of int 
 
var chars : array char of boolean 
 
var lend : int := (TileWidth * ta - 640) * -1 
 
var jc : int := 14 
 
var mem2 : int := 1 
 
var cntr : int := 0 
 
open : tiles, "tiles.txt", get 
 
 
%%Collision Variables 
 
var cdir : string := "f" 
 
 
%%Mario Parameters 
 
var mx, my, mcount, chng, vchng, mbase : int 
 
var chars1 : array char of boolean 
 
var dir : string 
 
mbase := 32 
 
dir := "right" 
 
mx := 1 
 
my := mbase 
 
chng := 8 
 
mcount := 1 
 
var mario : array 1 .. 8 of int 
 
var jumping, jumping2 : string := "false" 
 
 
%%Loads Mario 
 
for i : 1 .. 8 
 
    mario (i) := Pic.FileNew ("mario" + intstr (i) + ".BMP") 
 
end for 
 
Pic.Draw (mario (1), mx, my, picMerge) 
 
 
 
%%Load The Background 
 
Pic.Draw (background, 1, 1, picCopy) 
 
%%Load the map into an array 
 
StartPosition := 0 
 
for i : 1 .. td 
 
    for ii : 1 .. ta 
 
        exit when eof (tiles) 
 
        get : tiles, Across (ii) 
 
    end for 
 
    for ii : 1 .. ta 
 
        Locations (ii + StartPosition) := Across (ii) 
 
        if strint (Locations (ii + StartPosition)) not= 2 then 
 
            cntr := cntr + 1 
 
        end if 
 
    end for 
 
    StartPosition += ta 
 
end for 
 
close : tiles 
 
 
%%Load up the tiles 
 
for i : 1 .. 8 
 
    TileImages (i) := Pic.FileNew ("tiles/" + intstr (i) + ".bmp")   %Load every image, in order, from the file folder that holds the tiles. 
 
end for 
 
 
%%Make White Tiles Transparent 
 
for i : 1 .. (ta * td) 
 
    Pic.SetTransparentColor (TileImages (strint (Locations (i))), white) 
 
end for 
 
 
lchng := 0 
 
var cx, cy : array 1 .. cntr of int 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%COLLISION DETECTION VERTICLE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
function detect (n : string) : string 
 
    for i : 1 .. cntr 
 
        if (mx + 32) > cx (i) and mx < (cx (i) + 32) and (my + 56) > cy (i) and my < (cy (i) + 32) then 
 
            if my <= cy (i) + 32 and n = "u" then 
 
                result "u" 
 
            elsif my <= cy (i) + 12 and n = "d" then 
 
                result "d" 
 
            end if 
 
        end if 
 
    end for 
 
    result "f" 
 
end detect 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%COLLISION DETECTION HORIZONTAL%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
function detect2 (n : string) : string 
 
    for i : 1 .. cntr 
 
        if (mx + 32) > cx (i) and mx < (cx (i) + 32) and (my + 56) > cy (i) and my < (cy (i) + 32) then 
 
            if mx + 32 >= cx (i) and n = "r" then 
 
                result "r" 
 
            elsif mx <= cx (i) + 32 and n = "l" then 
 
                result "l" 
 
            end if 
 
        end if 
 
    end for 
 
    result "f" 
 
end detect2 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
%%The Tile Mapper 
 
loop 
 
    Input.KeyDown (chars) 
 
    if chars (KEY_RIGHT_ARROW) then 
 
        if mx >= 320 and lchng >= lend and detect2 ("r") not= "r" then 
 
            lchng := lchng - 5 
 
        end if 
 
    end if 
 
    if chars (KEY_LEFT_ARROW) then 
 
        if lchng < 0 and mx <= 329 and detect2 ("l") not= "l" then 
 
            lchng := lchng + 5 
 
        end if 
 
    end if 
 
    Pic.Draw (background, 1, 1, picCopy) 
 
    var XPositionCounter : int := 0 
 
    var YPositionCounter : int := td 
 
    for i : 1 .. (ta * td) 
 
        if XPositionCounter = ta then 
 
            YPositionCounter -= 1 
 
            XPositionCounter := 0 
 
        end if 
 
        if YPositionCounter = 0 then 
 
            YPositionCounter := 0 
 
        end if 
 
        Pic.Draw (TileImages (strint (Locations (i))), (TileWidth * XPositionCounter + lchng), (TileWidth * YPositionCounter - TileWidth), picMerge) 
 
        if strint (Locations (i)) not= 2 then 
 
            if mem2 > cntr then 
 
                mem2 := 1 
 
            end if 
 
            cx (mem2) := TileWidth * XPositionCounter + lchng 
 
            cy (mem2) := TileWidth * YPositionCounter - TileWidth 
 
            mem2 := mem2 + 1 
 
        end if 
 
        XPositionCounter += 1 
 
    end for 
 
    put detect ("u") 
 
 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%MARIO%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
    %Walking Right Sequence 
 
    Input.KeyDown (chars1) 
 
    if chars1 (KEY_RIGHT_ARROW) and jumping = "false" and jumping2 = "false" then %Code for walking right 
 
        dir := "right" 
 
        if mcount = 2 or mcount > 2 then 
 
            mcount := 1 
 
        elsif mcount < 2 then 
 
            mcount := mcount + 1 
 
        end if 
 
        if mx < 320 and detect2 ("r") not= "r" then 
 
            for i : 1 .. chng
 
                mx := mx + 1
 
            end for  
 
        end if 
 
        if lchng <= lend and detect2 ("r") not= "r" then 
 
            for i : 1 .. chng    
 
                mx := mx + 1
 
            end for
 
        end if 
 
        Pic.Draw (mario (mcount), mx, my, picMerge) 
 
    end if 
 
    delay (20) 
 
 
 
    %Jumping Sequence 
 
    if chars (KEY_UP_ARROW) then 
 
        if jumping = "false" and jumping2 = "false" then 
 
            jumping := "true" 
 
            jc := 12 
 
        end if 
 
    end if 
 
    if jumping = "true" and jumping2 = "false" then %Code for Jumping 
 
        if chars1 (KEY_RIGHT_ARROW) then 
 
            if mx < 320 and detect2 ("r") not= "r" then 
 
                for i : 1 .. chng
 
                    mx := mx + 1
 
                end for 
 
            end if 
 
            if lchng <= lend and detect2 ("r") not= "r" then 
 
                for i : 1 .. chng
 
                    mx := mx + 1
 
                end for 
 
            end if 
 
            dir := "right" 
 
        end if 
 
        if chars1 (KEY_LEFT_ARROW) then 
 
            if mx < 320 and detect2 ("l") not= "l" then 
 
                for i : 1 .. chng
 
                    mx := mx - 1
 
                end for 
 
            end if 
 
            if lchng <= lend and detect2 ("l") not= "l" then 
 
                mx := mx - chng 
 
            end if 
 
            dir := "left" 
 
        end if 
 
        if dir = "right" then 
 
            mcount := 3 
 
        else 
 
            mcount := 8 
 
        end if 
 
        for i : 1 .. jc 
 
            my := my + 1 
 
            exit when detect ("d") = "d" 
 
        end for 
 
        jc := jc - 1 
 
        if detect ("d") = "d" or jc = 0 then 
 
            jumping2 := "true" 
 
            jumping := "false" 
 
        end if 
 
        Pic.Draw (mario (mcount), mx, my, picMerge) 
 
    end if 
 
 
    if jumping2 = "true" then 
 
        if chars1 (KEY_RIGHT_ARROW) then 
 
            if mx < 320 and detect2 ("r") not= "r" then 
 
                mx := mx + chng 
 
            end if 
 
            if lchng <= lend and detect2 ("r") not= "r" then 
 
                for i : 1 .. chng
 
                    mx := mx + 1
 
                end for
 
            end if 
 
            dir := "right" 
 
        end if 
 
        if chars1 (KEY_LEFT_ARROW) then 
 
            if mx < 320 and detect2 ("l") not= "l" then 
 
                for i : 1 .. chng
 
                    mx := mx - 1
 
                end for 
 
            end if 
 
            if lchng <= lend and detect2 ("l") not= "l" then 
 
                mx := mx - chng 
 
            end if 
 
            dir := "left" 
 
        end if 
 
        if dir = "right" then 
 
            mcount := 6 
 
        else 
 
            mcount := 7 
 
        end if 
 
        for i : 1 .. jc 
 
            my := my - 1 
 
            exit when detect ("u") = "u"  
 
        end for 
 
        if detect ("u") not= "u" then 
 
            jc := jc + 1 
 
        end if 
 
        Pic.Draw (mario (mcount), mx, my, picMerge) 
 
        if detect ("u") = "u" then 
 
            jumping2 := "false" 
 
            if dir = "right" then 
 
                mcount := 1 
 
            else 
 
                mcount := 4 
 
            end if 
 
        end if 
 
    end if 
 
 
    %Walking Left Sequence 
 
    if chars1 (KEY_LEFT_ARROW) and jumping = "false" and jumping2 = "false" then     %Code for walking left 
 
        dir := "left" 
 
        if mcount = 5 or mcount < 4 then 
 
            mcount := 4 
 
        elsif mcount < 5 then 
 
            mcount := mcount + 1 
 
        end if 
 
        if lchng = 0 and detect2 ("l") not= "l" then 
 
            for i : 1 .. chng
 
                mx := mx - 1
 
            end for
 
        end if 
 
        if lchng <= lend and detect2 ("l") = "l" then 
 
            for i : 1 .. chng
 
                mx := mx - 1
 
            end for 
 
        end if 
 
        Pic.Draw (mario (mcount), mx, my, picMerge) 
 
    end if 
 
 
    %Static Sequence 
 
    if chars1 (KEY_RIGHT_ARROW) = false and chars1 (KEY_LEFT_ARROW) = false and chars1 (KEY_UP_ARROW) = false and jumping = "false" and jumping2 = "false" then     %If Static... 
 
        if mcount = 4 or mcount = 5 then 
 
            mcount := 4 
 
            Pic.Draw (mario (mcount), mx, my, picMerge) 
 
        elsif mcount = 1 or mcount = 2 then 
 
            mcount := 1 
 
            Pic.Draw (mario (mcount), mx, my, picMerge) 
 
        end if 
 
    end if 
 
    put "block y: ", cy (10) 
 
    put "block x: ", cx (10) 
 
    put detect2 ("r")
 
    put "mario y: ", my 
 
    put "mario x: ", mx 
 
    View.Update 
 
    cls 
 
    cdir := "f" 
 
end loop
 
  | 	  
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		CodeMonkey2000
 
 
 
    
		 | 
		
		
			
				  Posted: Mon Jan 08, 2007 4:50 pm    Post subject: Re: Help with Side Scroller  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| You need to rethink your collision system. You should be using only 1 function for detection. It should be taking in x1,y1,x2,y2 for mario and sx1,sy2,sx2,sy2 for blocks/enemies. When you call the function you should shouldn't input mario's current position, but rather the position he is going to be in. Check with all the objects, and if any of them return true then dont allow mario to move if they all return false then it is safe to move.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		ericfourfour
 
 
 
    
		 | 
		
		
			
				  Posted: Mon Jan 08, 2007 8:49 pm    Post subject: Re: Help with Side Scroller  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
					  | Turing: | 	 		  const td  : int := 20    %%TILES DOWN ***
const ta  : int := 40    %%TILES ACROSS (THE LENGTH OF THE LEVEL)
const TileWidth  : int := 32 %%TILE WIDTH ***
const nt  : int := 5     %%NUMBER OF TILES BEING USED
const background  : int := Pic.FileNew ("tiles/Back2.bmp")  | 	  
 
Don't hardcode these values. What you should do is read them from a file along with the tile map. The file would look something like this:
 
	  | file: | 	 		  20
 
40
 
32
 
5
 
tiles/Back2.bmp  | 	  
 
This way if you want to change maps you can choose which file to load it from.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Clayton
 
  
 
    
		 | 
		
		
			
				  Posted: Mon Jan 08, 2007 9:44 pm    Post subject: Re: Help with Side Scroller  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| an even better idea for the number of tiles being used is to have a flexible array that has it's upper bounds changed for each tile that comes into the game. Check out the flexible arrays tutorial in the Turing Walkthrough.
		
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |