Type Lists?
BlitzMax Forums/BlitzMax Beginners Area/Type Lists?
| ||
Why does it create same name twice instead of two different names in the lists?Strict 'How many Players to create? Global Number_of_Player = 2 Type Player Field id:Int Field name:String Field skill_level:Int End Type 'Create a list to store all Player Global PlayerList:TList = CreateList() Local Boss:Player Boss = New Player Boss.id = 1 Boss.name = "David R" Boss.skill_level=77 Boss.id = 2 Boss.name = "Paul C" Boss.skill_level=17 Graphics 800, 600 Drawtext "Num"+" Name"+" Skill Level",0,0 ' Create a bunch of new Player For Local N = 1 To number_of_Player ' Number_of_Player is a Global Local NewBoss:Player 'Put the address of this new Boss into variable Player NewBoss = New Player DrawText Boss.ID,0,50+N*10 drawtext Boss.name,50,50+N*10 Drawtext Boss.skill_level,150,50+N*10 'Put this Player called NewBoss into our PlayerList ListAddLast( PlayerList, NewBoss ) Next While Not KeyDown(Key_Escape) flip Wend |
| ||
I have create little abit better code but what I want to see on screen is like this Num Name Skill Level 1 David R 77 2 Paul C 17 Strict 'How many Players to create? Global Number_of_Player = 3 Global N Type Player Field id:Int Field name:String Field skill_level:Int Method Players() Local Boss:Player Boss = New Player Boss.id = 1 Boss.name = "David R" Boss.skill_level=77 Boss.id = 2 Boss.name = "Paul C" Boss.skill_level=17 DrawText Boss.ID,0,50+N*10 DrawText Boss.name,50,50+N*10 DrawText Boss.skill_level,150,50+N*10 End Method End Type 'Create a list to store all Player Global PlayerList:TList = CreateList() Local test:player = New player Graphics 800, 600 DrawText "Num"+" Name"+" Skill Level",0,0 ' Create a bunch of new Player For Local N = 1 To number_of_Player ' Number_of_Player is a Global Local NewBoss:Player 'Put the address of this new Boss into variable Player NewBoss = New Player test.Players() 'Put this player called NewBoss into our PlayerList ListAddLast( PlayerList, NewBoss ) Next While Not KeyDown(Key_Escape) Flip Wend Have I create my first Object Orient programming Basic? I just been learning from BlitzMax_OOP_Tutorial as I seem to get hang of it. |
| ||
-something wrong (IMHO)Boss = New Player Boss.id = 1 Boss.name = "David R" Boss.skill_level=77 Boss.id = 2 Boss.name = "Paul C" Boss.skill_level=17 here you're creating 1 object boss. then you assign a value to each field twice. it's the same doing a=2 a=4 -the player list can be embedded into the object here my solution (there's some code optimization to do but it works) Strict 'How many Players to create? Global Number_of_Player = 2 Global N global names:String[] = ["David R", "Paul C"] global skill_levels:int[] = [77, 17] Type Player Field id:Int Field name:String Field skill_level:Int global idGen:int = 0 method new() idGen:+1 self.id=idGen endmethod function createPlayer:Player(name:String, skill:int) Local Boss:Player Boss = New Player Boss.name = name Boss.skill_level=skill return Boss Endfunction End Type 'Create a list to store all Player Global PlayerList:TList = CreateList() Graphics 800, 600 DrawText "Num"+" Name"+" Skill Level",0,0 ' Create a bunch of new Player For Local N = 0 To number_of_Player-1 ' Number_of_Player is a Global 'Put this player into our PlayerList local p:player = Player.createPlayer(names[N], skill_levels[N]) ListAddfirst( PlayerList, p) Next for local Boss:Player = eachin PlayerList DrawText Boss.ID,0,50+Boss.id*10 DrawText Boss.name,50,50+Boss.id*10 DrawText Boss.skill_level,150,50+Boss.id*10 next flip waitkey end |
| ||
@HotShot2005, johnnyfreak is probably right but, unfortunately, there are so many oddities and errors in your code I am guessing you wrote it without really knowing why you were doing things. Is that right? If so, I would suggest you check out : Beginners Guide to Bmax and Learning Object-Oriented Programming in Blitzmax |
| ||
I dont think I have fully learn Object-Oriented Programming in Blitzmax very well and I guess I have keep learning those both tutorial until I fully understand what is what. |
| ||
Local Boss:Player Boss = New Player Boss.id = 1 Boss.name = "David R" Boss.skill_level=77 Boss.id = 2 Boss.name = "Paul C" Boss.skill_level=17 This is like saying, Local apples:Int apples = 5 apples = 7 You do not have 2 seperate bosses, you have one boss. The last paragraph of code overwrites the original data. 'Put the address of this new Boss into variable Player NewBoss = New Player Don't know if this is a typo but you got Boss and Player the wrong way round in the description. |