def main():
    # Initialisieren aller Pygame-Module und
    # Fenster erstellen (wir bekommen eine Surface, die den Bildschirm repräsentiert).
    pygame.init()
    screen = pygame.display.set_mode((800, 600))

    # Titel des Fensters setzen, Mauszeiger nicht verstecken und Tastendrücke wiederholt senden.
    pygame.display.set_caption("Pygame-Tutorial: Tilemap")
    pygame.mouse.set_visible(1)
    pygame.key.set_repeat(1, 30)

    # Clock Objekt erstellen, das wir benötigen, um die Framerate zu begrenzen.
    clock = pygame.time.Clock()

    # Wir erstellen eine Tilemap.
    map = Tilemap.Tilemap()

    # Die Schleife, und damit unser Spiel, läuft solange running == True.
    running = True
    while running:
        # Framerate auf 30 Frames pro Sekunde beschränken.

        # Pygame wartet, falls das Programm schneller läuft.
        clock.tick(30)

        # screen Surface mit Schwarz (RGB = 0, 0, 0) füllen.
        screen.fill((0, 0, 0))

        # Alle aufgelaufenen Events holen und abarbeiten.
        for event in pygame.event.get():
            # Spiel beenden, wenn wir ein QUIT-Event finden.
            if event.type == pygame.QUIT:
                running = False

            # Wir interessieren uns auch für "Taste gedrückt"-Events.
            if event.type == pygame.KEYDOWN:
                # Wenn Escape gedrückt wird posten wir ein QUIT-Event in Pygames Event-Warteschlange.
                if event.key == pygame.K_ESCAPE:
                    pygame.event.post(pygame.event.Event(pygame.QUIT))

                # Alle Tastendrücke auch der Tilemap mitteilen.
                map.handle_input(event.key)

        # Die Tilemap auf die screen-Surface rendern.
        map.render(screen)

        # Inhalt von screen anzeigen
        pygame.display.flip()
Exemple #2
0
def main():
    # Initialisieren aller Pygame-Module und 
    # Fenster erstellen (wir bekommen eine Surface, die den Bildschirm repräsentiert).
    pygame.init()

    mouseon = 1
    keyson = 0
    screenbreite = 800
    screenhoehe = 672
    screen = pygame.display.set_mode((screenbreite, screenhoehe))
    
    # Titel des Fensters setzen, Mauszeiger nicht verstecken und Tastendrücke wiederholt senden.
    pygame.display.set_caption("Brawo: Neurofeedback Game")
    pygame.mouse.set_visible(mouseon)
    pygame.key.set_repeat(1, 30)

    # Clock Objekt erstellen, das wir benötigen, um die Framerate zu begrenzen.
    clock = pygame.time.Clock()
    
    # Wir erstellen eine Tilemap.
    global map
    map = Tilemap.Tilemap()

    pygame.mouse.set_pos(128,112)  #(screenbreite/3.0,screenhoehe/3.0)

    logging.basicConfig()
    ###counter=0
    ###sizerandom = 0
    ###with rsb.createRemoteServer('/example/serverr') as server:
    with rsb.createListener("/example/informer") as listener:

        listener.addHandler(handle)
        # Die Schleife, und damit unser Spiel, läuft solange running == True.
        running = True
        while running:
            # Framerate auf 30 Frames pro Sekunde beschränken.
            # Pygame wartet, falls das Programm schneller läuft.
            clock.tick(30)
            ###if counter%30 == 29:
            ###    counter = 0
                ###print 'server replied to synchronous call: "%s"' % server.echo('bla')
                ###sizerandom = sizerandom + 1
                ###map.changeSize(server.echo(sizerandom))
            ###counter = counter+1

            #print counter

            # screen Surface mit Schwarz (RGB = 0, 0, 0) füllen.
            screen.fill((0, 0, 0))

            # Alle aufgelaufenen Events holen und abarbeiten.
            for event in pygame.event.get():
                # Spiel beenden, wenn wir ein QUIT-Event finden.
                if event.type == pygame.QUIT:
                    running = False

                # Wir interessieren uns auch für "Taste gedrückt"-Events.
                if event.type == pygame.KEYDOWN:
                    # Wenn Escape gedrückt wird posten wir ein QUIT-Event in Pygames Event-Warteschlange.
                    if event.key == pygame.K_ESCAPE:
                        pygame.event.post(pygame.event.Event(pygame.QUIT))

                    # Alle Tastendrücke auch der Tilemap mitteilen.
                    map.handleInput(event.key,keyson)

                if event.type == MOUSEMOTION and mouseon == 1:
                    # If the mouse moves, move the player where the cursor is.
                    map.handleMouse(event.pos[0],event.pos[1])

            map.moveScript()

            # Die Tilemap auf die screen-Surface rendern.
            map.render(screen)

            # Inhalt von screen anzeigen
            pygame.display.flip()
def main():
    # Initialisieren aller Pygame-Module und
    # Fenster erstellen (wir bekommen eine Surface, die den Bildschirm repräsentiert).
    pygame.init()

    agent = DQNAgent()
    counter_games = 0
    record = 0
    while counter_games < 150:
        screen = pygame.display.set_mode((800, 600))

        # Titel des Fensters setzen, Mauszeiger nicht verstecken und Tastendrücke wiederholt senden.
        pygame.display.set_caption("Pygame-Tutorial: Animation")
        pygame.mouse.set_visible(1)
        pygame.key.set_repeat(1, 30)
        pygame.font.init()  # you have to call this at the start,
        myfont = pygame.font.SysFont('Comic Sans MS', 30)

        # Clock-Objekt erstellen, das wir benötigen, um die Framerate zu begrenzen.
        clock = pygame.time.Clock()

        # Wir erstellen eine Tilemap.
        map = Tilemap.Tilemap()

        event = AutoInput.AutoInput()

        # Die Schleife, und damit unser Spiel, läuft solange running == True.
        running = True
        max_steps_reached = False
        max_steps = 100
        step = 0
        max_score = map.player.pos_x
        max_score_evolution = []
        while running and not max_steps_reached:
            agent.epsilon = 80 - counter_games
            #get old state
            state_old = agent.get_state(map)
            map.player.pos_x_old = map.player.pos_x

            #perform random actions based on agent.epsilon, or choose the action
            if randint(0, 200) < agent.epsilon:
                final_move = to_categorical(randint(0, 2), num_classes=3)
            else:
                # predict action based on the old state
                prediction = agent.model.predict(state_old.reshape((1, 7)))
                final_move = to_categorical(np.argmax(prediction[0]),
                                            num_classes=3)

            # Framerate auf 30 Frames pro Sekunde beschränken.
            # Pygame wartet, falls das Programm schneller läuft.
            clock.tick(30)

            # screen Surface mit Schwarz (RGB = 0, 0, 0) füllen.
            screen.fill((198, 209, 255))

            map.handle_input(final_move)

            #continue jump animation after
            if map.player.isjump:
                map.player.jump()

            # Die Tilemap auf die screen-Surface rendern.
            map.render(screen)
            textsurface = myfont.render(
                "Game " + str(counter_games) + " Step " + str(step) +
                " Max Score " + str(max_score), False, (0, 0, 0))
            screen.blit(textsurface, (50, 50))

            #Print Hindernis onto map and check if there should be a new one
            if not map.isThereHindernis:
                map.createNewHindernis()
                map.isThereHindernis = True

            map.hindernis.move()
            map.hindernis.render(screen)
            map.checkHindernisOnMap()

            state_new = agent.get_state(map)

            crash = map.collisionDetection()

            #set treward for the new state
            reward = agent.set_reward(map.player, crash)
            #train short memory base on the new action and state
            agent.train_short_memory(state_old, final_move, reward, state_new,
                                     running)

            # Inhalt von screen anzeigen
            pygame.display.flip()

            if map.player.pos_x > max_score:
                max_score = map.player.pos_x

            step += 1
            if step >= max_steps:
                max_steps_reached = True
                max_score_evolution.append(max_score)

        agent.remember(state_old, final_move, reward, state_new, running)
        #record = get_record(map.player.pos_x, record)
        #if display_option:
        #    #display(player1, food1, game, record)
        #    pygame.time.wait(speed)

        agent.replay_new(agent.memory)
        counter_games += 1

    agent.model.save_weights('weights.hdf5')
    sns.plot(max_score_evolution)