image image


image

Retrogaming, Python und KI: Pygame Zero Hack (Stage 0)

Ich weiß noch nicht, wo das hinführt und was daraus wird. Ich weiß nur, daß ich schon viel zu lange nichts mehr mit Pygame Zero angestellt hatte und daß ich die Nevanda-, respektive die UnTekhack-Tiles ganz witzig fand und daher unbedingt etwas mit ihnen anstellen wollte. Dies hier ist das Ergebnis:

import pgzrun

WIDTH = 512      # Tilesize * ROOMWIDTH
HEIGHT = 512     # Tilesize * ROOMHEIGHT
TITLE = "Pygame Zero Hack Stage 1"

TS = 32          # Tilesize
ROOMWIDTH = 16
ROOMHEIGHT = 16

WALL = 63
TREE = 62
DOOR_CLOSED = 60
DOOR_OPEN = 59

room01 = [[63, 63, 63, 63, 63, 63, 63, 63, 60, 63, 63, 63, 63, 63, 63, 63],
          [63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 62, 62, 63],
          [63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 62, 63],
          [63, -1, -1, 62, 62, 62, 62, 62, -1, -1, -1, -1, -1, 62, 62, 63],
          [63, -1, 62, 62, 62, 63, 62, 62, -1, -1, -1, -1, -1, -1, 62, 63],
          [63, -1, -1, -1, -1, 63, 62, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, -1, -1, 63, 62, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, 63, 63, 63, 62, -1, -1, -1, -1, -1, -1, -1, -1, 59],
          [63, -1, -1, -1, -1, 63, 62, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, -1, -1, 63, 62, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, 63, 63, 63, 62, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, -1, -1, 62, 62, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63],
          [63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 60, 63]]

# Walls
walls = []
for y in range(ROOMHEIGHT):
    for x in range(ROOMWIDTH):
        if room01[y][x] == WALL:
            wall = Actor("wall")
            wall.topleft = x*TS, y*TS
            walls.append(wall)
        elif room01[y][x] == TREE:
            wall = Actor("tree")
            wall.topleft = x*TS, y*TS
            walls.append(wall)
        elif room01[y][x] == DOOR_CLOSED:
            wall = Actor("door_closed")
            wall.topleft = x*TS, y*TS
            walls.append(wall)
        elif room01[y][x] == DOOR_OPEN:
            wall = Actor("door_open")
            wall.topleft = x*TS, y*TS
            walls.append(wall)
        
link = Actor("link")
link.topleft = 10*TS, 7*TS

def on_key_down(key):
    if key == keys.UP and room01[int(link.top//TS) - 1][int(link.left//TS)] < 50:
        link.y -= TS
    elif key ==keys.DOWN and room01[int(link.top//TS) + 1][int(link.left//TS)] < 50:
        link.y += TS
    elif key == keys.LEFT and room01[int(link.top//TS)][int(link.left//TS) - 1] < 50:
        link.x -= TS
    elif key == keys.RIGHT and room01[int(link.top//TS)][int(link.left//TS) + 1] < 50:
        link.x += TS

def update():
    pass

def draw():
    screen.fill("#94b0c2")  # Light gray
    for wall in walls:
        wall.draw()
    link.draw()     

pgzrun.go()

In dem kleinen Scriptchen steckt einiges von dem, was ich während meiner Beschäftigung von TIC-80 gelernt hatte, aber es ist auch eine Fortsetzung und Erweiterung meiner Mazegame-Experimente zu Retrogaming und KI mit Pygame Zero (Nachschlag) (hier die Links zu Stage 1, Stage 2, Stage 2a und Stage 3). Nach ein paar Wochen Pause bin ich nun bereit, diese Experimente fortzuführen und bei aller meiner Sympathie für die oben erwänten Nethack-Sprites werde ich vermutlich weiterhin wie bisher die (ebenfalls freien) DawnLike-Tiles verwenden. Mit den nur 16x16 Pixel großen Bildchen habe ich einfach mehr Raum auf dem Monitor.

Aber das letzte Wort ist hier noch nicht gesprochen. Laßt Euch einfach überraschen, wohin mich meine Reise führen wird. Ich weiß es schließlich selber noch nicht. Still digging!


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image