Jul-30-2020, 06:58 AM
... ... bot = {} #[b]in the code snippet did not give this line, but it is[/b] bot['name'] = 'bot_' + str(i) bot['coord'] = coord bot['gender'] = random.choice(gender) bot['healt'] = 0.99 bot['gormon'] = 0.5 bot['live'] = 0 bot['age'] = 0 bot['speed'] = round((random.random()), 2) bot['orient'] = random.randint(0, 7) bot['cargo'] = [] bot['atak'] = round((random.random()), 3) tag1 = bot bot['canvas'] = canvas2.create_image(bot['coord'], image = bot['image'], tags = ('bot', bot['name'], tag1)) ... ... collide = canvas2.find_overlapping(x1r, y1r, x2r, y2r) if len(collide) > 1: i = 0 for i1 in collide: if str(canvas2.gettags(collide[i])[1]) != str(bot['name']): vis = canvas2.gettags(collide[i]) print(str(name) + ' 0 vis: '+str(vis[0])) print(str(name) + ' 1 vis: '+str(vis[1])) print(str(name) + ' 2 vis: '+str(vis[2])) if vis[0] == 'bot': bott = vis[2] print(bott.keys())because initially bot is a dictionary and I pass it to a tag called tag1. vis is a list of all tags retrieved by canvas2.gettags (collide [i]). vis [2] is the third tag in the list of passed tags and with 'print' it is seen as a dictionary (there are key-value pairs)
I solved this problem in a workaround way - I transfer the number of the desired bot to the function (collide_bot (number)), and then, using the bot number from the list of all bots (Bots), I extract the necessary information for a specific bot