python - Why does the code work for all the images, except for the first one? -


i'm working on memory game. want display images of cards in 2 rows. cards displayed correctly, except 1st 1 in second row. running code requires using codeskulptor. entire program here: http://www.codeskulptor.org/#user41_a22429vx58_2.py

def draw(canvas):     global deck, cards, width, height     num_start = 10     w = 67     h = 100     center_source = [w // 2, h // 2]     center_dest = [w // 2, h // 2]     c in deck:         card in cards:             if card == c:                 if center_dest[0] <= width:                     canvas.draw_image(cards[card], (center_source), (w , h), (center_dest), (w, h))                     center_dest[0] += w + 2                 elif center_dest[0] > width:                     center_dest = [w // 2, h // 2 + h]                     canvas.draw_image(cards[card], (center_source), (w , h), (center_dest), (w, h *2))                     center_dest[0] += w + 2    

your elif condition triggers 1 time when center_dest needs reset horizontal position. when canvas.draw_image(cards[card], (center_source), (w , h), (center_dest), (w, h *2)) gets called h * 2 causes improper draw.

if remove *2 work. restructure logic follows not duplicating draw:

if center_dest[0] > width:     center_dest = [w // 2, h // 2 + h] canvas.draw_image(cards[card], (center_source), (w , h), (center_dest), (w, h)) center_dest[0] += w + 2 

to make extensible arbitrary number of rows change update to:

if center_dest[0] > width:     center_dest[0] = w // 2     center_dest[1] += h 

Comments