Nauč se Python > Kurzy > Hadí workshop pro PyLadies > Had > Logika hry Had

Logika hry Had – Řešení [0]

import pyglet

TILE_SIZE = 64

class State:
    def __init__(self):
        self.food = [(2, 0), (5, 1), (1, 4)]
        self.snake = [(0, 0), (1, 0)]

    def move(self):
        old_x, old_y = self.snake[-1]
        new_x = old_x + 1
        new_y = old_y
        new_head = new_x, new_y
        self.snake.append(new_head)
        del self.snake[0]

    def draw(self):
        for x, y in state.snake:
            before = 'end'     # (Tady případně je nějaké
            after = 'end'      #  složitější vybírání políčka)
            snake_tiles[before + '-' + after].blit(
                x * TILE_SIZE, y * TILE_SIZE, width=TILE_SIZE, height=TILE_SIZE)
        for x, y in state.food:
            red_image.blit(
                x * TILE_SIZE, y * TILE_SIZE, width=TILE_SIZE, height=TILE_SIZE)

red_image = pyglet.image.load('apple.png')
snake_tiles = {}
for start in ['bottom', 'end', 'left', 'right', 'top']:
    for end in ['bottom', 'end', 'left', 'right', 'top', 'dead', 'tongue']:
        key = start + '-' + end
        image = pyglet.image.load('snake-tiles/' + key + '.png')
        snake_tiles[key] = image

window = pyglet.window.Window()

state = State()

@window.event
def on_draw():
    window.clear()
    pyglet.gl.glEnable(pyglet.gl.GL_BLEND)
    pyglet.gl.glBlendFunc(pyglet.gl.GL_SRC_ALPHA, pyglet.gl.GL_ONE_MINUS_SRC_ALPHA)
    state.draw()

def move(dt):
    state.move()

pyglet.clock.schedule_interval(move, 1/6)

pyglet.app.run()

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.