Problem with types

Blitz3D Forums/Blitz3D Beginners Area/Problem with types

ucode(Posted 2005) [#1]
Hello. I have written the following code which creates two players using a type and a function to get a player's health value.
The PlayerHealth(2) is supposed to return player two's health (in this case 60) but it is returning player one's health (100). Please help me correct it.

;Create first player
p.player=New player
p\prop.properties=New properties
p\prop\health=100
;Create second player
p.player=New player
p\prop.properties=New properties
p\prop\health=60
;
Print PlayerHealth(2)
WaitKey()
;
Type player
Field prop.properties
End Type
Type properties
Field health
End Type
;
Function PlayerHealth(player_number)
For p.player=Each player
count=count+1
If count=player_number Then
For p\prop.properties=Each properties
Return(p\prop\health) ;return health
Next
EndIf
Next
End Function


Gabriel(Posted 2005) [#2]
If you're gonna hardcode the players like that anyway, why not just make an array of the players?


Ethan3850(Posted 2005) [#3]
The variable count will start at 0 so you will need to use PlayerHealth(1) to get player 2's data.


ucode(Posted 2005) [#4]
"If you're gonna hardcode the players like that anyway, why not just make an array of the players?"

This isn't my real program, i just wrote it to show an example of my problem. In my real program I won't know how many type objects that will be created.


"The variable count will start at 0 so you will need to use PlayerHealth(1) to get player 2's data."

It doesn't work. PlayerHealth(1) returns 100 (which is player 1's health, as the function is supposed to return)
But I can't get player 2's health.


GitTech(Posted 2005) [#5]
You don't need the "For p\prop.properties=Each properties" part:

;Create first player 
p.player=New player 
p\prop.properties=New properties 
p\prop\health=100 
;Create second player 
p.player=New player 
p\prop.properties=New properties 
p\prop\health=60 

 
Print PlayerHealth(2) 
WaitKey() 



 
Type player 
	Field prop.properties 
End Type 

Type properties 
	Field health 
End Type 



 
Function PlayerHealth(player_number) 
	For p.player=Each player 
		count=count+1 

		If count=player_number Then 
			;For p\prop.properties=Each properties 
			Return(p\prop\health) ;return health 
			;Next 	
		EndIf 
		
	Next 
End Function