Making Items scroll with background
BlitzPlus Forums/BlitzPlus Programming/Making Items scroll with background| 
 | ||
| I'm trying to figure out how to make my apples scroll with the background so that I can go away from them when need be and come back to them when need be unless they are collected. Below, I commented on the parts that I'm trying to change to make it easier to find. Thanks: 
Graphics 900, 900
SetBuffer BackBuffer()
 
EATUM = LoadImage ("Eatum.png") 
APPLE = LoadImage("Apple.png")
ORBE = LoadImage("Orbe.png")
DOOR = LoadImage("Door.png")
DOOR2 = LoadImage ("RDoor.png")
DOOR3 = LoadImage ("GDOOR.png")
DOOR4 = LoadImage ("PDOOR.png")
PANCAKES = LoadImage ("Pancakes.png")
INVISIBLEPATCH = LoadImage ("Invisible Patch.png")
MUSIC = LoadSound ("Track1.mp3")
COLLECTIONSOUND = LoadSound ("Collectionsound.mp3")
BACKGROUND =  LoadImage("Clouds.jpg")
BACKGROUND2 = LoadImage("backgroundtree.jpg")
BACKGROUND3 = LoadImage("Background3.jpg")
BACKGROUND4 = LoadImage ("Barber Shop.jpg")
BACKGROUND5 = LoadImage ("Background5.jpg")
BACKGROUND6 = LoadImage ("Background6.jpg")
BACKGROUND7 = LoadImage ("Armsup.jpg")
Type EATUM
Field x,y
End Type 	
		
	
Type APPLE
	Field x,y 
End Type 
Type ORBE
	Field x,y
End Type 
Type DOOR
	Field x,y
End Type
Type DOOR2
	Field x,y
	
	
End Type 
Type DOOR3
	Field x,y
	
End Type 
Type DOOR4
	Field x,y
	
End Type 
Type PANCAKES
	Field x,y
	
End Type 
Type INVISIBLEPATCH
	Field x,y
	
End Type
Type BACKGROUND
	
	Field x,y
	Field image
	
	
End Type 
e.EATUM= New EATUM
e\x = 70
e\y = 200
;I'm trying to get this array of apples to move with the background
;kind of like the coins in Super Mario Bros 3 where one can either walk 
;far away from the coins or towards the coins and the coins would
;still be in the same place (unless they are collected). That is, I'm 
;trying to make these apples be that way.
For z = 1 To 5
a.Apple = New  Apple
a\x = 50*z
a\y = 30 
Next 
o.ORBE = New ORBE
o\x = 100
o\y = -200
 
d.DOOR = New DOOR
d\x = 50
d\y = 50
			
b.BACKGROUND = New BACKGROUND
b\x = -200
b\y = 20
b\image = BACKGROUND 
Score = 0
amx = 1
PlaySound MUSIC
While Not KeyDown (1)  
Cls
		
		
TileImage (b\image,b\x,b\y)
Text 150,90, "Score " + Score
;Once again, here is the part that I would like to see scrolling with the 
;background (unless they are collected).
For a.APPLE = Each Apple
	
	DrawImage(APPLE,a\x,a\y)
		If ImagesCollide(EATUM,e\x,e\y,0,APPLE,a\x,a\y,0) Then 
		
				Delete a 
		
				score = score + 1 
		
				PlaySound (COLLECTIONSOUND)
		EndIf 
Next 
If KeyDown(203)
e\x = e\x - 3
b\x = b\x + 3
 
	If (o <> Null) Then
	
	
			If ImagesCollide(EATUM,e\x,e\y,0,ORBE,o\x,o\y,0) 
			
			o\x = o\x - 3
			EndIf 
	EndIf
	
EndIf
	
If KeyDown(205)
 
e\x = e\x + 3
b\x = b\x - 3
	If (o <> Null) Then
	
		If ImagesCollide(EATUM,e\x,e\y,0,ORBE,o\x,o\y,0) 
				
			 o\x = o\x + 3
	
	
	
		EndIf 
	EndIf
EndIf 
If KeyDown(200)
 e\y = e\y - 3
	If (o <> Null) Then
		If ImagesCollide(EATUM,e\x,e\y,0,ORBE,o\x,o\y,0) Then 
		
			 o\y = o\y - 3
		EndIf 
	EndIf
	
EndIf 		
			
If KeyDown(208) 
e\y = e\y + 3
	If (o <> Null) Then
		If ImagesCollide(EATUM,e\x,e\y,0,ORBE,o\x,o\y,0) Then
		
			  o\y = o\y + 3
		EndIf 
	EndIf 
	
EndIf 
	If (o <> Null) Then
	
			DrawImage (ORBE,o\x,o\y)
		
		If (d <> Null) Then 
		
			
			DrawImage (DOOR,d\x,d\y)
			
			
		
					If ImagesCollide(DOOR,d\x,d\y,0,ORBE,o\x,o\y,0) Then 
		
							 
							Delete o 
							Delete d
							
							
							score = score + 1				
				
							b\image = BACKGROUND2
							
							p.PANCAKES = New PANCAKES
							p\x = 20
							p\y = 20
							
					EndIf 
							
				 
				
					
		
		EndIf 
	EndIf  
	
				
					
	If (p <> Null) Then	
	
				DrawImage (PANCAKES,p\x,p\y)
						
					If ImagesCollide (EATUM,e\x,e\y,0,PANCAKES,p\x,p\y,0) Then 
						
									
								
										Delete p
										
									    score = score + 1 
										b\image = BACKGROUND3	
										
										
										d2.DOOR2 = New DOOR2
										
										d2\x = 20
										d2\y = 120
							
																
				
					EndIf 
				
	EndIf 
	
							
	
	If (d2 <> Null) Then
	
				DrawImage (DOOR2,d2\x,d2\y)
	
				
				
					If ImagesCollide (EATUM,e\x,e\y,0,DOOR2,d2\x,d2\y,0) Then
					
									Delete d2 	
					
					
									b\image = BACKGROUND4
									
									d3.DOOR3 = New DOOR3
									
									d3\x = 300
									d3\y = 420
										
						
									
					EndIf
					
	EndIf  
					
	If (d3 <> Null) Then
	
				DrawImage (DOOR3,d3\x,d3\y)
				
						If ImagesCollide (EATUM,e\x,e\y,0,DOOR3,d3\x,d3\y,0)
						
									Delete d3
						
									b\image = BACKGROUND5
									
									d4.DOOR4 = New DOOR4
									
									d4\x = 30
									d4\y = 30
									
									
						EndIf 
	EndIf 	
	If (d4 <> Null) Then
	
				DrawImage (DOOR4,d4\x,d4\y)
				
							If ImagesCollide (EATUM,e\x,e\y,0, DOOR4,d4\x,d4\y,0)
							
									Delete d4 
							
									b\image = BACKGROUND6
									
									i.INVISIBLEPATCH = New INVISIBLEPATCH
									i\x = 40
									i\y = -200
									
							EndIf 								
	
	EndIf 
	
	If (i <> Null) Then
	
				DrawImage (INVISIBLEPATCH,i\x,i\y)
						If ImagesCollide (EATUM,e\x,e\y,0,INVISIBLEPATCH,i\x,i\y,0)
									Delete i
									
									b\image = BACKGROUND7
									
						EndIf 
	EndIf 
	
	
	DrawImage (EATUM,e\x,e\y)
	
	
	Flip
Wend 
 | 
| 
 | ||
| Hi, Without trying it, just add the background x offset to the apple position.. Something like: 
For a.APPLE = Each Apple
	DrawImage(APPLE,(a\x + b\x),a\y)
	
        If ImagesCollide(EATUM,e\x,e\y,0,APPLE,(a\x + b\x),a\y,0) Then 
		
	      Delete a 
		
              score = score + 1 
		
	      PlaySound (COLLECTIONSOUND)
        EndIf 
Next 
Bear in mind your background starts at -200 on the x co-ords, so you'll now need to offest your apples by +200 when you initialise them in order to see them where they were originally. eg.. 
For z = 1 To 5
     a.Apple = New  Apple
     a\x = 250*z         ;(+200 hundred to account for background offset)
     a\y = 30 
Next 
Regards, | 
| 
 | ||
| Thanks Yeshu. It worked! | 
| 
 | ||
| No worries. I guess you are learning a lot on here, However, it should be.. 
For z = 1 To 5
     a.Apple = New  Apple
     a\x = 200+(50*z)         ; as 200 is an absolute offset
     a\y = 30 
Next 
Otherwise your apples will be cast far and adrift. 8o) Best Regards, |