Log In  


Hi!

I hope this is the right place to ask...

So I gather I can make some enemies that have X-Y co-ordinates like this:

enemy = {
	x = 0,
	y = 0
}

enemies = {}

for i=1,5 do
	add(enemies, enemy)
	enemies[i].x = i * 5
	enemies[i].y = i * 10
	print(enemies[1].x)
end

(5 and 10 are arbitrary numbers for testing purposes.)

I believe this would be an array of tables.

I would have thought this would make 5 enemy co-ordinates, like this:

enemies[1].x = 5
enemies[1].y = 10

enemies[2].x = 10
enemies[2].y = 20

...and so on. But it looks like it's overwriting every enemy's co-ordinates with the latest pair each time.

Could someone please tell me what I'm doing wrong?

Cheers!



The code you’ve shown creates one enemy object. The loop adds 5 references pointing to that object into the table, and changes the coordinates of that one object five times.

Instead, create the objects inside the loop, so that each iteration creates a new object, and as a result you get five distinct objects in the array. Like this:

enemies = {}
for i = 1,5 do
  add(enemies, { x=1*5, y=i*10 })
end 

Ooooh, thank you so much!



[Please log in to post a comment]