archiv:gf:gf2021_2022:2d2:inesmira

Unsere Idee: Unsere kleine Welt - New York, New Yoooork

Wir haben uns überlegt, das Puzzle-Spiel „100 Floors“ in Minecraft zu programmieren. Das Spiel findet in einem Hochhaus, in einer von New York inspirierter Stadt, neben dem ähnlichen inspirierten Central Park statt. Wir haben uns entschieden, dass wir die Umgebung selber, mit einigen wenigen Programmen, konstruieren und das Haus und Spiel versuchen so viel wie möglich zu programmieren.


Arbeitstagebuch:

15.11.2021 (in der Schule)

Heute haben wir uns erstmals für eine Idee entschieden. Danach haben wir angefangen den See, im Central Park zu konstruieren (ohne Programm).

Wir hatten einige Probleme mit dem auffüllen von Wasser, da es nie wollte wie wir es wollten :)

21.11.2021 (zu Hause)

Wir haben endlich den ganzen See mit Wasser füllen können und haben angefangen Korallen, Seetang, Seegras und Fisch darin zu verteilen. Wir haben auch einige Seerosen auf der Wasseroberfläche platziert. Unser nächster Schritt wird wahrscheindlich sein, entweder die Wege oder Bäume zu bauen oder schon mit dem Spiel selber zu beginnen.

22.11.2021 (in der Schule)

Wir haben heute erstmals ein Haus programmiert, das unser Rätselhaus werden soll. Ausserdem haben wir versucht, ein Programm zu erstellen, wie man einen Baum schneller wachsen lässt. Bis jetzt blieben wir aber bei dem erfolglos.

In der nächsten Lektion haben wir vor, eine Lösung für das wachsen der Bäume zu finden, wenn dies überhaupt möglich ist, und die verschiedenen Stockwerke für das Haus zu programmieren. Eventuell werden wir auch bereits einen Weg, der bis zum Eingang des Hauses führt, bauen/programmieren.

Tipp für Baumsetzlinge: Knochenmehl verstreuen


def simple_house(xpos,ypos,zpos,breite, hoehe):
    blocks.fill(STRIPPED_DARK_OAK_WOOD,world(xpos,ypos,zpos),world(xpos+breite,ypos+hoehe, zpos+breite))
    blocks.fill(AIR, world(xpos+1,ypos,zpos+1),world(xpos+breite-1,ypos+hoehe-1, zpos+breite-1))
    #tor
    blocks.fill(blocks.block_with_data(DARK_OAK_DOOR,3),world(xpos+4,ypos,zpos),world(xpos+4,ypos+1,zpos))
    

simple_house(100, 4, -100, 10, 24)

Weil wir das Haus nicht wieder von „Hand“ abbauen wollten, haben wir ein Programm programmiert, das das Haus wieder verschwinden lässt:



def simple_house2(xpos,ypos,zpos,breite, hoehe):
    blocks.fill(AIR,world(xpos,ypos,zpos),world(xpos+breite,ypos+hoehe, zpos+breite))
    blocks.fill(AIR, world(xpos+1,ypos,zpos+1),world(xpos+breite-1,ypos+hoehe-1, zpos+breite-1))
    #tor
    blocks.fill(AIR,world(xpos+4,ypos,zpos),world(xpos+4,ypos+1,zpos))


simple_house2(100, 4, -100, 10, 24)

29.11.2021 (in der Schule)


def Stockwerk(xpos, ypos, zpos, breite, hoehe):
        blocks.fill(BLACK_STAINED_GLASS,world(xpos, ypos, zpos), world(xpos+breite,ypos+hoehe, 
        zpos+breite))
        blocks.fill(BLACK_STAINED_GLASS,world(xpos, ypos, zpos), world(xpos+breite,ypos+hoehe, 
        zpos+breite))

Stockwerk(100, 8, -100, 10, 0)

06.12.2021 (in der Schule)

Um die Codes für das Haus und das/die Stockwerk/e in ein Programm einzufügen haben wir ein Programm „build_house()“ geschrieben:


def build_house(xpos, ypos, zpos, breite, hoehe):
    simple_house(xpos, ypos, zpos, breite, hoehe)
    Stockwerk(xpos, ypos+4, zpos, breite, 0)
    Stockwerk(xpos, ypos+8, zpos, breite, 0)
    Stockwerk(xpos, ypos+12, zpos, breite, 0)
    Stockwerk(xpos, ypos+16, zpos, breite, 0)
    Stockwerk(xpos, ypos+20, zpos, breite, 0)

build_house(100, 4, -100, 10, 24)

Damit dieses Programm funktioniert, müssen alle Definitionen vom simple_house() und die vom Stockwerk in den Code eingegeben/vermerkt werden.


def on_item_interacted():
    player.say(":)")
    agent.teleport_to_player()
    for count in range(3):
        agent.set_item(BONE_MEAL,1,1)
        agent.place(FORWARD)
    agent.teleport(world(10, 0, 0), WEST)

player.on_item_interacted(OAK_SAPLING, on_item_interacted)

Fichte:
player.on_item_interacted(SPRUCE_SAPLING, on_item_interacted)

Birke:
player.on_item_interacted(BIRCH_SAPLING, on_item_interacted)

Tropenbaum:
player.on_item_interacted(JUNGLE_SAPLING, on_item_interacted)

Akazienbaum:
player.on_item_interacted(ACACIA_SAPLING, on_item_interacted)

Schwarzeichenbaum:
player.on_item_interacted(DARK_OAK_SAPLING, on_item_interacted)


Bei dieser Funktion muss man noch die Richtung des Agenten definieren! Ansonsten wirft der Agent das Knochenmehl nachdem der Spieler ein Eichensetzling gepflanzt hat. Nach dem Werfen des Knochenmehls verschwindet der Agent wieder. (Grundfunktion kopiert von Herr Lehmann)

13.12.2021 (in der Schule)

Heute haben wir im Rätselhaus drin, den Boden und die Fakeln an der Wand von Hand platziert.

20.12.2021 (in der Schule)

Heute haben wir mit dem Programmieren der Rätsel begonnen (in einer Test Welt). Das erste Rätsel ist einfach, man muss nur auf einen Knopf drücken und wird darauf in das nächste Level, in den nächsten Stock, teleportiert. Dort, beim 2. Rätsel, muss man erst einen Knopf in einer Kiste suchen und an der richtigen Stelle (auf den Diamantenblock) platzieren. Wenn man auf den Knopf drückt, kommt man zum 3.Level und somit zum nächsten Rätsel. Im 3. Level muss man eine Sonnenblume finden und etwas mit dieser machen, damit man zum 4.Rätsel gelangt. Nun fehlen uns noch 2 Rätsel. Wir haben uns dazu noch überlegt, dass wir jeweils in jedem Stockwerk eine Tafel mit einem Gedicht platzieren. Dieses Gedicht sollte einen Hinweis geben, damit es einfacher ist, das Rätsel zu lösen.

Für die ersten 2 Rätsel haben wir einen Commandblock verwendet, der aber versteckt wurde. Wir benutzen für beide Rätsel den gleichen Befehl:


def push_button():
    player.teleport(pos(0, 5, 0))
    player.say("Bravo, du hast das Level geschafft. Weiter gehts zum nächsten Level")

player.on_tell_command("Knopf", push_button)

In den Commandblock haben wir jeweils '/tell @p Knopf'eingegeben.

Dies ist das Programm für das 3.Rätsel mit der Sonnenblume:


found = False

def on_item_interacted():
    global found
    player.say("The sun is shining")
    found = True
    player.teleport(pos(0, 5, 0))
 
player.on_item_interacted(SUNFLOWER, on_item_interacted)

Weihnachtsferien (zu Hause)

Während den Weihnachtsferien haben wir an der Umgebung weitergearbeitet. Wir haben einige Gebäude mithilfe des simpel_house() Programms gebaut. Wir haben einfach die Höhe und auch den Block/das Material gewechselt. Ausserdem haben wir auf unserem kleinen See eine Freiheitsstatue gebaut.

10.01.2022 (in der Schule)

In dieser Lektion haben wir die verschiedenen Rätsel, die wir bereits haben in unsere richtige Welt hinzugefügt. Uns fehlen aber immer noch 2 Rätsel. Wir haben heute auch einige Gebäude mithilfe des Programms simple_house()gebaut, damit man wirklich das Gefühl hat, in New York zu sein. Wahrscheinlich werden wir noch mehr Häuser um den See bauen.

17.01.2022 (in der Schule)

Heute haben wir nochmals einige Gebäude gebaut, mithilfe des Programms simple_house(). Wir haben auch einen kleinen Kiesweg rund um den See von Hand gemacht und sind gerade dran eine Strasse in der Stadt zu bauen.

24.01.2022 (in der Schule)

Wir haben heute ein neues Rätsle programmiert. Man hat drei Teppiche am Boden mit verschiedenen Farben: einen blauen, einen roten und einen gelben Teppich. Um ins nächste Level zu gelangen muss man auf den richtigen Teppich stehen, auf dem gelben. Wenn man sich auf dieser Position, also auf dem gelben Teppich befindet, wird man ins nächste Stockwerk teleportiert.


def on_travelled_walk():
    x = player.position().get_value(Axis.X)
    y = player.position().get_value(Axis.Y)
    z = player.position().get_value(Axis.Z)
    
    player.say("x:"+str(x)+" y:"+str(y)+" z:"+str(z))
    
    if (x==104) and (y==17) and (z==-96):
        player.teleport(pos(0, 5, 0))
    
player.on_travelled(WALK, on_travelled_walk)

01.02.2022 (zu Hause)

Heute haben wir versucht unsere letzten Programme zu programmieren. Ausserdem haben wir angefangen die Umgebung mehr nach der Stadt New York scheinen zu lassen, in dem wir viele Hochhäuser um den See und unser Rätselhaus gebaut haben (mit simple_house()). Wir haben auch ein wenig unsere Strasse durch die Häuser erweitert. Wir hatten aber ein Problem. Ein Programm (push_button()) hat auf einmal nur noch bei einer Person funktioniert, beim Host. Auch unser Lehrer konnte sich dieses Problem nicht erklären. Schlussendlich haben wir es seingelassen und meinten, dass solange es bei einem Spieler funktioniert, dies trotzdem okay sei.

02.02.2022 (zu Hause)

Wir haben unser letztes Rätsel für den Rätsel-Turm programmiert und sind weiterhin dran die Umgebung mit Programmen und von Hand zu bauen. Bei den meisten Rätsel geht es darum einen Knopf zu finden. Erstens fanden wir, dass es dann dem Spiel „100 Floors“ ähnlich sieht und für uns war es einfacher, da wir dazu noch die Umgebung gestalten. Wir haben dennoch zwei Rätsel wo etwas anderes zu tun ist.


def push_button_1():
    player.teleport(pos(0, 15, 0))
    player.say("Bravo, du hast es geschafft :)")

def push_button_2():
    player.teleport(pos(0, 0, 0))
    player.say("Versuch es nochmal!")

def push_button_3():
    player.teleport(pos(0, -4, 0))
    player.say("Leider nicht der richtige")
    
 

02/04/05.02.2022 (zu Hause)

Wir haben während diesen drei Tagen uns vorallem um die Umgebung gekümmert. Damit unsere Welt New York und dem Central Park ähnelt, haben wir um den See Bäume gepflanzt und Hochhäuser gebaut. Ausserdem haben wir noch einen Ballon gebaut. Wir habe auch noch zwei letzte Programme gebaut. Diese zwei Programme befinden sich auf dem Dach des Rätselhauses. Man soll am Schluss, nach dem lösen der Rätsel, auf dem Dach die Möglichkeit haben, die Umgebung ein wenig zu betrachten. Dafür haben wir uns zwei Aussichtspunkte überlegt. Einer befindet sich auf der Freiheitsstatue und der andere im Ballon. Um dorthin zu gelangen haben wir auf dem Dach zwei Knöpfe, jeweils mit einem Schild markiert. Wenn man auf einen der Knöpfe drückt, wird man zum jeweiligen Aussichtspunkt hin teleportiert. Dies geschieht mithilfe eines Commandblocks, der die folgenden Programme aufruft:


def Ballon():
    player.teleport(world(44, 25, 14))

player.on_tell_command("Ballon", Ballon)


def Freiheitsstatue():
    player.teleport(world(104, 19, -33))

player.on_tell_command("Freiheitsstatue", Freiheitsstatue)


Was wurde wie gebaut?

Die Spiele im Rätselhaus, die Häuser und die Bäume wurden mithilfe von Programmen gebaut. Der kleine Flugplatz neben dem See ist auch zum Teil programmiert (mit dem simple_house Programm).

Der See, die Bänke, die Freiheitsstatue, der Ballon, der Zaun, der Kiesweg und der ganze Rest wurde von Hand gebaut.

Schwierigkeiten:

Eines unserer grössten Probleme war, dass die Programme überhaupt funktionieren. Oftmals haben wir bei einem Programm einen kleinen Fehler gemacht und diesen nicht bemerkt. Später, bei sorgfältigem Überarbeiten haben wir unsere Fehler gefunden und korrigieren können. Nur bei einem Problem wussten wir keine Antwort darauf. Auch unser Lehrer konnte sich nicht erklären weshalb es nicht funktionierte. Bei diesem Problem handelt es sich um das Programm für das erste Rätsel. Manchmal hat es funktioniert. Aber bei einigen Spieler funktionierte es gar nicht. Wir haben gedacht, dass es eventuell nur beim Host funktioniere. Jedenfalls sollte das Programm nun funktionieren, solange nur eine Person oder der Host spielt. Wenn es jedoch trotzdem nicht funktionieren sollte, können wir uns dies nicht erklären. Auch die Programme zu programmieren hat uns allgemein häufig Schwierigkeiten bereitet.

Beschreibung unserer Welt:

Unsere Welt besitzt ein Rätselhaus, zu welchem der Kieselweg führt. Das Rätselhaus befindet sich in einer von New York inspirierten Stadt und man kann dieses mit einem Kieselweg um den ähnlich inspirierten Central Park finden. Auf dem See befindet sich eine Freiheitsstatue (nicht Realitätsnah!). Ein Ballon und eine Helikopterlandeplatz befinden sich ebenfalls in diesem Park. Proportionen spielten in unserer Welt keine Rolle :) ….. Um wieder zu unserem Rätselhaus zu kommen, haben wir in diesem nicht all zu schwierige Rätsel programmiert. Sie sind grundsätzlich gut und einfach zu lösen. Wenn man die Rätsel mit Schweiss und Anstrengung …gelöst hat, befindet man sich auf dem Dach. Dort findet man zwei bzw. drei Möglichkeiten, um die „Stadt“ von verschiedenen Aussichtspunkten zu betrachten. Einblicke in unsere Welt

Fazit

Wir sind im Grossen und Ganzen mit unserer Arbeit zufrieden. Wir hätten uns mehr zutrauen können was das Programmieren angeht. Trotzdem sind wir stolz auf unsere kleine Welt.

Zugang zu unserer Welt und benötigter Code


found = False
 
def on_item_interacted():
    global found
    player.say("The sun is shining")
    found = True
    player.teleport(pos(0, 5, 0))
  

def on_travelled_walk():
    x = player.position().get_value(Axis.X)
    y = player.position().get_value(Axis.Y)
    z = player.position().get_value(Axis.Z)
     
     
    if (x==104) and (y==17) and (z==-96):
        player.teleport(pos(0, 5, 0))
     

def push_button():
    player.teleport(pos(0, 5, 0))
    player.say("Bravo, du hast das Level geschafft. Weiter gehts zum nächsten Level")
 

def push_button_1():
    player.teleport(pos(0, 15, 0))
    player.say("Bravo, du hast es geschafft :)")


 
def push_button_2():
    player.teleport(pos(0, 0, 0))
    player.say("Versuch es nochmal!")
 


def Freiheitsstatue():
    player.teleport(world(104, 19, -33))


def Ballon():
    player.teleport(world(44, 25, 14))

 
player.on_tell_command("Knopf", push_button)
player.on_travelled(WALK, on_travelled_walk)
player.on_item_interacted(SUNFLOWER, on_item_interacted)
player.on_tell_command("der erste Knopf", push_button_1)
player.on_tell_command("Freiheitsstatue", Freiheitsstatue)
player.on_tell_command("Ballon", Ballon)

Zugang zur Welt:

mires2.mcworld

  • archiv/gf/gf2021_2022/2d2/inesmira.txt
  • Zuletzt geändert: 2022/08/27 18:08
  • von lehmannr