Strange behavior with custom types arrays

BlitzMax Forums/BlitzMax Programming/Strange behavior with custom types arrays

TME(Posted 2008) [#1]
Hello,

I post here because I have a problem with custom type array. I made some unsuccessful searches in this forum, but I nevertheless suspect that this kind of issue has already been discussed here.

So, I'm sorry if what I will speak of is a well known problem...it is a new one for me ;-)

Now, let's talk about the problem : I create two custom types ("TCard" and "TPlayer").

Some fields of "TPlayer" are using "TCard" type.

I declare a single-dimension array named "arPlayers" which type is "TPlayer".

And here is the trouble : I am not able to correctly set the value of a TCard sub-property.

As I think an example is better than 10 lines of blabla, let's take a piece of my code(ing horror, LOL) :

arPlayers[0].CustCard1.iPosX=256
arPlayers[0].CustCard1.iPosY=426
arPlayers[0].CustCard2.iPosX=359
arPlayers[0].CustCard2.iPosY=426
arPlayers[0].CustCard3.iPosX=462
arPlayers[0].CustCard3.iPosY=426
arPlayers[0].CustCard4.iPosX=565
arPlayers[0].CustCard4.iPosY=426
arPlayers[0].CustCard5.iPosX=668
arPlayers[0].CustCard5.iPosY=426


Guess what : Sometimes, the values are not stored in the right place.

It sounds incredible, well, it is incredible.

I don't know what's happening exactly, but I think someone here will have an idea. In fact, I think I'm using BlitzMax in a way that is not right.

The full source code can be downloaded here.

I hope I'm clear enough, do not hesitate to ask questions.

Here comes useful informations and relevant extracts from the source code :

=================================================
Configuration :

Laptop - Panasonic CF-T2
Windows XP Pro SP2
CPU : Pentium M @ 900
RAM : 512 Mb
Graphics adapter : Intel 82855 GME
=================================================
Source :

---8<------
' Garbage collector setup
GCSetMode(1)

---8<------
' Variables declaration and initialization
' Custom types
Type TCharacter
	Field iType:Int
	Field iCurrentPosX:Int
	Field iCurrentPosY:Int
	Field iWidth:Int
	Field iHeight:Int
	Field iForce:Int
	Field iChance:Int
	Field iIntelligence:Int
	Field iMana:Int
	Field iCharme:Int
	Field iLife:Int
	Field iGeneralPurposeCounter:Int
	Field szName:String
	Field bmPortrait:TImage
	Function CreateCharacter:TCharacter(p_iType:Int, p_iCurrentPosX:Int, p_iCurrentPosY:Int, p_iWidth:Int, p_iHeight:Int, p_iForce:Int, p_iChance:Int, p_iIntelligence:Int, p_iMana:Int, p_iCharme:Int, p_iLife:Int, p_iGeneral222PurposeCounter:Int, p_szName:String, p_bmPortrait:TImage)
		' Type = 0
		Local NewCharacter:TCharacter = New TCharacter
		NewCharacter.iType=p_iType
		NewCharacter.iCurrentPosX=p_iCurrentPosX
		NewCharacter.iCurrentPosY=p_iCurrentPosY
		NewCharacter.iWidth=p_iWidth
		NewCharacter.iHeight=p_iHeight
		NewCharacter.iForce=p_iForce
		NewCharacter.iChance=p_iChance
		NewCharacter.iIntelligence=p_iIntelligence
		NewCharacter.iMana=p_iMana
		NewCharacter.iCharme=p_iCharme
		NewCharacter.iLife=p_iLife
		NewCharacter.iGeneralPurposeCounter=p_iGeneralPurposeCounter
		NewCharacter.szName=p_szName
		NewCharacter.bmPortrait=p_bmPortrait
		Return NewCharacter
	End Function
End Type

Type TCard
	Field iID:Int
	Field iType:Int
	Field iAttack:Int
	Field iDefense:Int
	Field iDamage:Int
	Field iBonus:Int
	Field iAnimRef:Int
	Field iPosX:Int
	Field iPosY:Int
	Field szName:String
	Field szExplanation:String
	Field bCanTargetPlayer:Byte
	Field bCanTargetCreature:Byte
	Field bCanTargetEquipment:Byte
	Field bCanTargetTrial:Byte
	Field bCanTargetHeal:Byte
	Field bCanTargetMagicHit:Byte
	Field bCanTargetPhysicHit:Byte
	Field bIsMasked:Byte
	Field bmFront:TImage
	Field bmBack:TImage
	' iType :
	' 1 = Creature
	' 2 = Equipment
	' 3 = Trial
	' 4 = Heal
	' 5 = Magic hit
	' 6 = Physic hit
	Function CreateCard:Tcard(p_iID:Int, p_iType:Int, p_iAttack:Int, p_iDefense:Int, p_iDamage:Int, p_iBonus:Int, p_iAnimRef:Int, p_iPosX:Int, p_iPosY:Int, p_szName:String, p_szExplanation:String, p_bCanTargetPlayer:Byte, p_bCanTargetCreature:Byte, p_bCanTargetEquipment:Byte, p_bCanTargetTrial:Byte, p_bCanTargetHeal:Byte, p_bCanTargetMagicHit:Byte, p_bCanTargetPhysicHit:Byte, p_bIsMasked:Byte, p_bmFront:TImage, p_bmBack:TImage)
		Local NewCard:TCard = New TCard
		NewCard.iID=p_iID
		NewCard.iType=p_iType
		NewCard.iAttack=p_iAttack
		NewCard.iDefense=p_iDefense
		NewCard.iDamage=p_iDamage
		NewCard.iBonus=p_iBonus
		NewCard.iAnimRef=p_iAnimRef
		NewCard.iPosX=p_iPosX
		NewCard.iPosY=p_iPosY
		NewCard.szName=p_szName
		NewCard.szExplanation=p_szExplanation
		NewCard.bCanTargetPlayer=p_bCanTargetPlayer
		NewCard.bCanTargetCreature=p_bCanTargetCreature
		NewCard.bCanTargetEquipment=p_bCanTargetEquipment
		NewCard.bCanTargetTrial=p_bCanTargetTrial
		NewCard.bCanTargetHeal=p_bCanTargetHeal
		NewCard.bCanTargetMagicHit=p_bCanTargetMagicHit
		NewCard.bCanTargetPhysicHit=p_bCanTargetPhysicHit
		NewCard.bIsMasked=p_bIsMasked
		NewCard.bmFront=p_bmFront
		NewCard.bmBack=p_bmBack
		Return NewCard
	End Function
End Type

Type TPlayer
	Field iID:Int
	Field iType:Int
	Field szHost:String
	Field CustCard1:TCard
	Field CustCard2:TCard
	Field CustCard3:TCard
	Field CustCard4:TCard
	Field CustCard5:TCard
	Field CustCharacter:TCharacter
	' iType :
	' 1 = Human
	' 2 = Computer
	' szHost :
	' "local" = local player
	' "<IP>:<PORT>" = network player
	Function CreatePlayer:TPlayer(p_iID:Int, p_iType:Int, p_szHost:String, p_CustCard1:TCard, p_CustCard2:TCard, p_CustCard3:TCard, p_CustCard4:TCard, p_CustCard5:TCard, p_CustCharacter:TCharacter)
		Local NewPlayer:TPlayer = New TPlayer
		NewPlayer.iID=p_iID
		NewPlayer.iType=p_iType
		NewPlayer.szHost=p_szHost
		NewPlayer.CustCard1=p_CustCard1
		NewPlayer.CustCard2=p_CustCard2
		NewPlayer.CustCard3=p_CustCard3
		NewPlayer.CustCard4=p_CustCard4
		NewPlayer.CustCard5=p_CustCard5
		NewPlayer.CustCharacter=p_CustCharacter
		Return NewPlayer
	End Function
End Type

' Arrays
Local arCharacters:TCharacter[20]
Local arCards:TCard[52]
Local arPlayers:TPlayer[2]

' p_iType, p_iCurrentPosX, p_iCurrentPosY, p_iWidth, p_iHeight, p_iForce, p_iChance, p_iIntelligence, p_iMana, p_iCharme, p_iLife, p_iGeneralPurposeCounter, p_szName, p_bmPortrait
arCharacters[0]=TCharacter.CreateCharacter(0,530,10,470,470,1,1,3,5,5,99,0,"Baby Jack",LoadImage("incbin::./pictures/baby_jack-256.png",FILTERED=-1))
arCharacters[1]=TCharacter.CreateCharacter(0,530,10,470,470,3,4,2,2,3,99,0,"Billy",LoadImage("incbin::./pictures/billy-256.png",FILTERED=-1))
arCharacters[2]=TCharacter.CreateCharacter(0,530,10,470,470,2,3,2,3,4,99,0,"Bleble",LoadImage("incbin::./pictures/bleble-256.png",FILTERED=-1))
arCharacters[3]=TCharacter.CreateCharacter(0,530,10,470,470,2,2,4,5,4,99,0,"Bzzou",LoadImage("incbin::./pictures/bzzou-256.png",FILTERED=-1))
arCharacters[4]=TCharacter.CreateCharacter(0,530,10,470,470,4,3,5,3,5,99,0,"Cacahouette",LoadImage("incbin::./pictures/cacahouette-256.png",FILTERED=-1))
arCharacters[5]=TCharacter.CreateCharacter(0,530,10,470,470,4,4,4,5,5,99,0,"Chatan",LoadImage("incbin::./pictures/chatan-256.png",FILTERED=-1))
arCharacters[6]=TCharacter.CreateCharacter(0,530,10,470,470,3,2,1,4,4,99,0,"Cochonou",LoadImage("incbin::./pictures/cochonou-256.png",FILTERED=-1))
arCharacters[7]=TCharacter.CreateCharacter(0,530,10,470,470,1,1,3,5,5,99,0,"Couky",LoadImage("incbin::./pictures/couky-256.png",FILTERED=-1))
arCharacters[8]=TCharacter.CreateCharacter(0,530,10,470,470,4,2,1,1,1,99,0,"Dino",LoadImage("incbin::./pictures/dino-256.png",FILTERED=-1))
arCharacters[9]=TCharacter.CreateCharacter(0,530,10,470,470,4,5,2,4,3,99,0,"Elvis",LoadImage("incbin::./pictures/elvis-256.png",FILTERED=-1))
arCharacters[10]=TCharacter.CreateCharacter(0,530,10,470,470,5,2,1,1,3,99,0,"Hobby",LoadImage("incbin::./pictures/hobby-256.png",FILTERED=-1))
arCharacters[11]=TCharacter.CreateCharacter(0,530,10,470,470,3,5,4,1,2,99,0,"Kouistiti",LoadImage("incbin::./pictures/kouistiti-256.png",FILTERED=-1))
arCharacters[12]=TCharacter.CreateCharacter(0,530,10,470,470,2,2,3,3,4,99,0,"Lemu",LoadImage("incbin::./pictures/lemu-256.png",FILTERED=-1))
arCharacters[13]=TCharacter.CreateCharacter(0,530,10,470,470,5,3,2,2,2,99,0,"Meuh",LoadImage("incbin::./pictures/meuh-256.png",FILTERED=-1))
arCharacters[14]=TCharacter.CreateCharacter(0,530,10,470,470,2,4,3,4,3,99,0,"Miloumon",LoadImage("incbin::./pictures/miloumon-256.png",FILTERED=-1))
arCharacters[15]=TCharacter.CreateCharacter(0,530,10,470,470,1,1,1,5,5,99,0,"PopKorn",LoadImage("incbin::./pictures/popkorn-256.png",FILTERED=-1))
arCharacters[16]=TCharacter.CreateCharacter(0,530,10,470,470,5,5,1,1,2,99,0,"Robby",LoadImage("incbin::./pictures/robby-256.png",FILTERED=-1))
arCharacters[17]=TCharacter.CreateCharacter(0,530,10,470,470,1,1,5,5,4,99,0,"Shtar",LoadImage("incbin::./pictures/shtar-256.png",FILTERED=-1))
arCharacters[18]=TCharacter.CreateCharacter(0,530,10,470,470,1,2,3,3,5,99,0,"Toual",LoadImage("incbin::./pictures/toual-256.png",FILTERED=-1))
arCharacters[19]=TCharacter.CreateCharacter(0,530,10,470,470,2,5,3,2,1,99,0,"Uistity",LoadImage("incbin::./pictures/uistity-256.png",FILTERED=-1))

' ID, Type, Attack, Defense, Damage, Bonus, AnimRef, Name, Explanation, TP, TC, TE, TT, TH, TMH, TPH, Front, Back
arCards[0]=TCard.CreateCard(1,2,4,6,0,0,1,0,0,"Armure en latex","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-1.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[1]=TCard.CreateCard(2,2,0,1,0,0,1,0,0,"Armure en cuir","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-2.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[2]=TCard.CreateCard(3,2,0,0,0,0,1,0,0,"Armure en dentelle","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-3.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[3]=TCard.CreateCard(4,2,0,3,0,0,1,0,0,"Casque de moto","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-4.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[4]=TCard.CreateCard(5,2,1,2,0,0,1,0,0,"Casque de viking","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-5.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[5]=TCard.CreateCard(6,2,0,0,0,0,1,0,0,"Slip à crampons","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-6.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[6]=TCard.CreateCard(7,2,1,1,0,0,1,0,0,"Pantoufles de sécurité","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-7.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[7]=TCard.CreateCard(8,2,1,1,0,0,1,0,0,"Ghetto blaster","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-8.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[8]=TCard.CreateCard(9,2,0,1,0,0,1,0,0,"Porte-bonheur","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-9.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[9]=TCard.CreateCard(10,2,1,1,0,0,1,0,0,"Parapluie blindé","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-10.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[10]=TCard.CreateCard(11,4,0,0,0,6,1,0,0,"Infirmière","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-11.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[11]=TCard.CreateCard(12,4,0,0,0,3,1,0,0,"Potion magique","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-12.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[12]=TCard.CreateCard(13,4,0,0,0,2,1,0,0,"Rinquinquin","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-13.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[13]=TCard.CreateCard(14,4,0,0,0,1,1,0,0,"Aspirine","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-14.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[14]=TCard.CreateCard(15,4,0,0,0,1,1,0,0,"Susucre","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-15.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[15]=TCard.CreateCard(16,4,0,0,0,1,1,0,0,"Grog","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-16.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[16]=TCard.CreateCard(17,4,0,0,0,1,1,0,0,"Vitamines","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-17.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[17]=TCard.CreateCard(18,4,0,0,0,1,1,0,0,"Soupe à mémé","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-18.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[18]=TCard.CreateCard(19,4,0,0,0,1,1,0,0,"Goûter de maman","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-19.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[19]=TCard.CreateCard(20,4,0,0,0,2,1,0,0,"Biscuit des Elfes","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-20.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[20]=TCard.CreateCard(21,4,0,0,0,4,1,0,0,"Soda de cycliste","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-21.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[21]=TCard.CreateCard(22,5,0,0,2,0,1,0,0,"Enclûme de l'Au-Delà","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-22.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[22]=TCard.CreateCard(23,5,0,0,4,0,1,0,0,"Eclair de Zeus","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-23.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[23]=TCard.CreateCard(24,5,0,0,1,0,1,0,0,"Gnon éthéré","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-24.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[24]=TCard.CreateCard(25,5,0,0,1,0,1,0,0,"Baffe cosmique","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-25.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[25]=TCard.CreateCard(26,5,0,0,3,0,1,0,0,"Pluie de cailloux","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-26.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[26]=TCard.CreateCard(27,5,0,0,2,0,1,0,0,"Feu (aux fesses) follet","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-27.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[27]=TCard.CreateCard(28,6,0,0,3,0,1,0,0,"Doigt dans l'oeil","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-28.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[28]=TCard.CreateCard(29,6,0,0,1,0,1,0,0,"Pincement d'oreille","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-29.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[29]=TCard.CreateCard(30,6,0,0,1,0,1,0,0,"Mordre le nez","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-30.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[30]=TCard.CreateCard(31,6,0,0,1,0,1,0,0,"Tapette cinglante","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-31.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[31]=TCard.CreateCard(32,6,0,0,1,0,1,0,0,"Soufflet outrageux","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-32.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[32]=TCard.CreateCard(33,6,0,0,1,0,1,0,0,"Pichenette dédaigneuse","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-33.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[33]=TCard.CreateCard(34,6,0,0,1,0,1,0,0,"Coup de pied au derrière","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-34.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[34]=TCard.CreateCard(35,6,0,0,2,0,1,0,0,"Fessée humiliante","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-35.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[35]=TCard.CreateCard(36,6,0,0,2,0,1,0,0,"Pincer le gras","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-36.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[36]=TCard.CreateCard(37,6,0,0,4,0,1,0,0,"Torsion tetonique","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-37.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[37]=TCard.CreateCard(38,6,0,0,1,0,1,0,0,"Tape dans la panse","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-38.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[38]=TCard.CreateCard(39,3,0,0,0,0,1,0,0,"Papatte de fer","tupeuxpastest",True,False,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-39.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[39]=TCard.CreateCard(40,3,0,0,0,0,1,0,0,"Tape juste","tupeuxpastest",True,False,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-40.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[40]=TCard.CreateCard(41,3,0,0,0,0,1,0,0,"DDR","tupeuxpastest",True,False,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-41.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[41]=TCard.CreateCard(42,3,0,0,0,0,1,0,0,"Tir à l'arc","tupeuxpastest",True,False,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-42.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[42]=TCard.CreateCard(43,1,10,1,0,0,1,0,0,"Méduse irritée","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-43.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[43]=TCard.CreateCard(44,1,1,1,0,0,1,0,0,"Oursin épilé","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-44.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[44]=TCard.CreateCard(45,1,4,0,0,0,1,0,0,"Poulet-Klaxon","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-45.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[45]=TCard.CreateCard(46,1,2,2,0,0,1,0,0,"Chameau sanguinaire","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-46.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[46]=TCard.CreateCard(47,1,1,1,0,0,1,0,0,"Huitre dépressive","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-47.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[47]=TCard.CreateCard(48,1,2,3,0,0,1,0,0,"Crabe insolent","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-48.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[48]=TCard.CreateCard(49,1,1,1,0,0,1,0,0,"Poisson hydrophobe","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-49.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[49]=TCard.CreateCard(50,1,1,1,0,0,1,0,0,"Souris verte","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-50.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[50]=TCard.CreateCard(51,1,1,1,0,0,1,0,0,"L'escargogodancer","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-51.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))
arCards[51]=TCard.CreateCard(52,1,1,1,0,0,1,0,0,"Mouche philosophe","tupeuxpastest",True,True,False,False,False,False,False,False,LoadImage("incbin::./pictures/cards/kb-card-52.png"),LoadImage("incbin::./pictures/cards/kb-card-back.png"))

---8<------
arPlayers[0]=TPlayer.CreatePlayer(1,1,"local",arCards[iRndNumber1],arCards[iRndNumber2],arCards[iRndNumber3],arCards[iRndNumber4],arCards[iRndNumber5],arCharacters[iRndNumber6])
arPlayers[1]=TPlayer.CreatePlayer(2,2,"local",arCards[iRndNumber7],arCards[iRndNumber8],arCards[iRndNumber9],arCards[iRndNumber10],arCards[iRndNumber11],arCharacters[iRndNumber12])

---8<------
	' Modification of cards X and Y positions
	' Player 1 (bottom-left)
	arPlayers[0].CustCard1.iPosX=256
	arPlayers[0].CustCard1.iPosY=426
	arPlayers[0].CustCard2.iPosX=359
	arPlayers[0].CustCard2.iPosY=426
	arPlayers[0].CustCard3.iPosX=462
	arPlayers[0].CustCard3.iPosY=426
	arPlayers[0].CustCard4.iPosX=565
	arPlayers[0].CustCard4.iPosY=426
	arPlayers[0].CustCard5.iPosX=668
	arPlayers[0].CustCard5.iPosY=426
	' Player 2 (top-right)
	arPlayers[1].CustCard1.iPosX=256
	arPlayers[1].CustCard1.iPosY=192
	arPlayers[1].CustCard2.iPosX=359
	arPlayers[1].CustCard2.iPosY=192
	arPlayers[1].CustCard3.iPosX=462
	arPlayers[1].CustCard3.iPosY=192
	arPlayers[1].CustCard4.iPosX=565
	arPlayers[1].CustCard4.iPosY=192
	arPlayers[1].CustCard5.iPosX=668
	arPlayers[1].CustCard5.iPosY=192

---8<------
	' Cards
	' Player 1 (bottom line)
	' DEBUG
	WriteStdout("P1->1 = "+arPlayers[0].CustCard1.iPosX+" - "+arPlayers[0].CustCard1.iPosY+Chr(13)+Chr(10))
	WriteStdout("P1->2 = "+arPlayers[0].CustCard2.iPosX+" - "+arPlayers[0].CustCard2.iPosY+Chr(13)+Chr(10))
	WriteStdout("P1->3 = "+arPlayers[0].CustCard3.iPosX+" - "+arPlayers[0].CustCard3.iPosY+Chr(13)+Chr(10))
	WriteStdout("P1->4 = "+arPlayers[0].CustCard4.iPosX+" - "+arPlayers[0].CustCard4.iPosY+Chr(13)+Chr(10))
	WriteStdout("P1->5 = "+arPlayers[0].CustCard5.iPosX+" - "+arPlayers[0].CustCard5.iPosY+Chr(13)+Chr(10))
	' END DEBUG
	DrawImage(arPlayers[0].CustCard1.bmFront,arPlayers[0].CustCard1.iPosX,arPlayers[0].CustCard1.iPosY)
	DrawText("1",arPlayers[0].CustCard1.iPosX,arPlayers[0].CustCard1.iPosY)
	DrawImage(arPlayers[0].CustCard2.bmFront,arPlayers[0].CustCard2.iPosX,arPlayers[0].CustCard2.iPosY)
	DrawText("2",arPlayers[0].CustCard2.iPosX,arPlayers[0].CustCard2.iPosY)
	DrawImage(arPlayers[0].CustCard3.bmFront,arPlayers[0].CustCard3.iPosX,arPlayers[0].CustCard3.iPosY)
	DrawText("3",arPlayers[0].CustCard3.iPosX,arPlayers[0].CustCard3.iPosY)
	DrawImage(arPlayers[0].CustCard4.bmFront,arPlayers[0].CustCard4.iPosX,arPlayers[0].CustCard4.iPosY)
	DrawText("4",arPlayers[0].CustCard4.iPosX,arPlayers[0].CustCard4.iPosY)
	DrawImage(arPlayers[0].CustCard5.bmFront,arPlayers[0].CustCard5.iPosX,arPlayers[0].CustCard5.iPosY)
	DrawText("5",arPlayers[0].CustCard5.iPosX,arPlayers[0].CustCard5.iPosY)
	' Player 2 (top line)
	' DEBUG
	WriteStdout("P2->1 = "+arPlayers[1].CustCard1.iPosX+" - "+arPlayers[1].CustCard1.iPosY+Chr(13)+Chr(10))
	WriteStdout("P2->2 = "+arPlayers[1].CustCard2.iPosX+" - "+arPlayers[1].CustCard2.iPosY+Chr(13)+Chr(10))
	WriteStdout("P2->3 = "+arPlayers[1].CustCard3.iPosX+" - "+arPlayers[1].CustCard3.iPosY+Chr(13)+Chr(10))
	WriteStdout("P2->4 = "+arPlayers[1].CustCard4.iPosX+" - "+arPlayers[1].CustCard4.iPosY+Chr(13)+Chr(10))
	WriteStdout("P2->5 = "+arPlayers[1].CustCard5.iPosX+" - "+arPlayers[1].CustCard5.iPosY+Chr(13)+Chr(10))
	' END DEBUG
	DrawImage(arPlayers[1].CustCard1.bmFront,arPlayers[1].CustCard1.iPosX,arPlayers[1].CustCard1.iPosY)
	DrawText("1",arPlayers[1].CustCard1.iPosX,arPlayers[1].CustCard1.iPosY)
	DrawImage(arPlayers[1].CustCard2.bmFront,arPlayers[1].CustCard2.iPosX,arPlayers[1].CustCard2.iPosY)
	DrawText("2",arPlayers[1].CustCard2.iPosX,arPlayers[1].CustCard2.iPosY)
	DrawImage(arPlayers[1].CustCard3.bmFront,arPlayers[1].CustCard3.iPosX,arPlayers[1].CustCard3.iPosY)
	DrawText("3",arPlayers[1].CustCard3.iPosX,arPlayers[1].CustCard3.iPosY)
	DrawImage(arPlayers[1].CustCard4.bmFront,arPlayers[1].CustCard4.iPosX,arPlayers[1].CustCard4.iPosY)
	DrawText("4",arPlayers[1].CustCard4.iPosX,arPlayers[1].CustCard4.iPosY)
	DrawImage(arPlayers[1].CustCard5.bmFront,arPlayers[1].CustCard5.iPosX,arPlayers[1].CustCard5.iPosY)
	DrawText("5",arPlayers[1].CustCard5.iPosX,arPlayers[1].CustCard5.iPosY)

---8<------

=================================================
Debug output :

1st run (no problem) :

P1->1 = 256 - 426
P1->2 = 359 - 426
P1->3 = 462 - 426
P1->4 = 565 - 426
P1->5 = 668 - 426
P2->1 = 256 - 192
P2->2 = 359 - 192
P2->3 = 462 - 192
P2->4 = 565 - 192
P2->5 = 668 - 192

---8<------

2nd run (no problem) :

P1->1 = 256 - 426
P1->2 = 359 - 426
P1->3 = 462 - 426
P1->4 = 565 - 426
P1->5 = 668 - 426
P2->1 = 256 - 192
P2->2 = 359 - 192
P2->3 = 462 - 192
P2->4 = 565 - 192
P2->5 = 668 - 192

---8<------

3rd run (OMG ! look at P2->2 and P2->3 !) :

P1->1 = 256 - 426
P1->2 = 359 - 426
P1->3 = 462 - 426
P1->4 = 565 - 426
P1->5 = 668 - 426
P2->1 = 256 - 192
P2->2 = 462 - 192
P2->3 = 462 - 192
P2->4 = 565 - 192
P2->5 = 668 - 192

Here P2->2 should be : P2->2 = 359 - 192

---8<------

4th run (no problem) :

P1->1 = 256 - 426
P1->2 = 359 - 426
P1->3 = 462 - 426
P1->4 = 565 - 426
P1->5 = 668 - 426
P2->1 = 256 - 192
P2->2 = 359 - 192
P2->3 = 462 - 192
P2->4 = 565 - 192
P2->5 = 668 - 192

---8<------

5th run (don't try this at home) :

P1->1 = 256 - 426
P1->2 = 668 - 192 <--- should be P1->2 = 359 - 426
P1->3 = 565 - 426 <--- should be P1->3 = 462 - 426
P1->4 = 565 - 426
P1->5 = 668 - 192 <--- should be P1->5 = 668 - 426
P2->1 = 256 - 192
P2->2 = 359 - 192
P2->3 = 462 - 192
P2->4 = 565 - 192
P2->5 = 668 - 192

=================================================


Who was John Galt?(Posted 2008) [#2]
It would help if you cut your example down to the bare minimum, and posted something runnable.

I think the problem could be that multiple players are pointing to the same card causing the values to be overwritten.