Strange behavior with custom types arrays

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

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.

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

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