Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| gf2:projekte:minecraft:2d1gruppe1 [2023/01/13 09:03] – marroc | gf2:projekte:minecraft:2d1gruppe1 [2023/02/26 07:31] (aktuell) – marroc | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | < | + | < |
| X=0 | X=0 | ||
| Y=0 | Y=0 | ||
| Zeile 10: | Zeile 10: | ||
| Hind3=False | Hind3=False | ||
| Hind4=False | Hind4=False | ||
| - | Hind4=False | + | Hind5=False |
| + | Hind6=False | ||
| zaehler2=1 | zaehler2=1 | ||
| Zeile 16: | Zeile 17: | ||
| gameplay.time_set(0) | gameplay.time_set(0) | ||
| gameplay.set_difficulty(NORMAL) | gameplay.set_difficulty(NORMAL) | ||
| - | gameplay.set_game_mode(CREATIVE, mobs.target(ALL_PLAYERS)) | + | gameplay.set_game_mode(SURVIVAL, mobs.target(ALL_PLAYERS)) |
| mobs.clear_effect(mobs.target(ALL_PLAYERS)) | mobs.clear_effect(mobs.target(ALL_PLAYERS)) | ||
| - | + | gameplay.set_game_rule(KEEP_INVENTORY, | |
| + | player.execute(" | ||
| def raum1(): | def raum1(): | ||
| - | player.execute(" | + | player.execute(" |
| + | player.execute(" | ||
| blocks.fill(BLACKSTONE, | blocks.fill(BLACKSTONE, | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| blocks.fill(GLOWSTONE, | blocks.fill(GLOWSTONE, | ||
| - | blocks.fill(ANVIL, world(X+8, Z, Y-1), world(X+9, Z+2, Y+1))# anderer Block??? | + | blocks.fill(AIR, world(X+8, Z, Y-1), world(X+8, Z+2, Y+1)) |
| + | blocks.fill(MONSTER_SPAWNER, world(X+8, Z, Y-1), world(X+9, Z+2, Y+1)) | ||
| blocks.fill(GLOWSTONE, | blocks.fill(GLOWSTONE, | ||
| raetselblock() | raetselblock() | ||
| Zeile 34: | Zeile 38: | ||
| blocks.place(AIR, | blocks.place(AIR, | ||
| blocks.place(AIR, | blocks.place(AIR, | ||
| - | # Decko hier hinzufügen | ||
| def dialog1(): # Text an Spieler einige Zeilen angenehmer zum Lesen | def dialog1(): # Text an Spieler einige Zeilen angenehmer zum Lesen | ||
| Zeile 54: | Zeile 57: | ||
| player.say(" | player.say(" | ||
| - | if (zaehler> | + | |
| + | player.say(" | ||
| + | |||
| + | | ||
| player.say(" | player.say(" | ||
| Zeile 62: | Zeile 68: | ||
| - | def on_travelled_walk(): | + | def on_travelled_walk(): |
| - | x = player.position().get_value(Axis.X) | + | x = player.position().get_value(Axis.X) |
| z = player.position().get_value(Axis.Y) | z = player.position().get_value(Axis.Y) | ||
| y = player.position().get_value(Axis.Z) | y = player.position().get_value(Axis.Z) | ||
| Zeile 69: | Zeile 75: | ||
| if (x==X+8) and (y==Y) and (z==z> | if (x==X+8) and (y==Y) and (z==z> | ||
| blocks.fill(ANVIL, | blocks.fill(ANVIL, | ||
| - | |||
| player.execute(" | player.execute(" | ||
| mobs.apply_effect(LEVITATION, | mobs.apply_effect(LEVITATION, | ||
| global Teil2 | global Teil2 | ||
| Teil2 = True | Teil2 = True | ||
| - | if (x==X+10): | + | if (x==X+10) and (z>Z-1):# Raum 2 schweben |
| mobs.apply_effect(LEVITATION, | mobs.apply_effect(LEVITATION, | ||
| - | if (x==X+13) and (Z+14==z): | + | if (x==X+13) and (Z+14==z): |
| player.execute(" | player.execute(" | ||
| - | player.say(" | + | |
| - | | + | global Hind1 |
| - | global Hind1 | + | Hind1=False |
| - | Hind1=False | + | global Hind2 |
| - | global Hind2 | + | Hind2= True # die neue Funktion wird aktiviert |
| - | Hind2= True | + | player.execute(" |
| - | player.say(" | + | |
| - | player.execute(" | + | |
| if (z==Z+10) and (X+23==x) or (X+24==x) and (y==Y+20) or (y==Y+21): | if (z==Z+10) and (X+23==x) or (X+24==x) and (y==Y+20) or (y==Y+21): | ||
| global Hind2 | global Hind2 | ||
| Zeile 91: | Zeile 94: | ||
| global Hind3 | global Hind3 | ||
| Hind3= True | Hind3= True | ||
| - | player.say(" | ||
| player.execute(" | player.execute(" | ||
| - | if (zaehler2==1): | + | if (zaehler2==1): |
| global zaehler2 | global zaehler2 | ||
| zaehler2= zaehler2 +2 | zaehler2= zaehler2 +2 | ||
| mobs.give(mobs.target(NEAREST_PLAYER), | mobs.give(mobs.target(NEAREST_PLAYER), | ||
| + | player.say(" | ||
| if ((X+15==x) or (X+14==x)) and (z==Z+16) and (y==Y+27) or (y==Y+28): | if ((X+15==x) or (X+14==x)) and (z==Z+16) and (y==Y+27) or (y==Y+28): | ||
| global Hind3 | global Hind3 | ||
| Zeile 102: | Zeile 105: | ||
| global Hind4 | global Hind4 | ||
| Hind4= True | Hind4= True | ||
| + | player.execute(" | ||
| + | if (X+13< | ||
| + | global Hind4 | ||
| + | Hind4= False | ||
| + | global Hind5 | ||
| + | Hind5= True | ||
| + | player.execute(" | ||
| + | if (X+13< | ||
| + | global Hind5 | ||
| + | Hind5= False | ||
| + | global Hind6 | ||
| + | Hind6= True | ||
| def raum2(): | def raum2(): | ||
| - | | + | |
| | | ||
| | | ||
| Zeile 110: | Zeile 125: | ||
| | | ||
| | | ||
| - | | + | |
| | | ||
| | | ||
| Zeile 116: | Zeile 131: | ||
| | | ||
| - | def blöckebewegen (M, | + | def blöckebewegen (M, |
| running = True | running = True | ||
| intervall=1 | intervall=1 | ||
| Zeile 133: | Zeile 148: | ||
| intervall= intervall + 1 | intervall= intervall + 1 | ||
| - | def blöckebewegen2 (M, | + | def blöckebewegen2 (M, |
| running = True | running = True | ||
| intervall=1 | intervall=1 | ||
| Zeile 141: | Zeile 156: | ||
| if gameplay.time_query(GAME_TIME) > gurke + intervall * intervalldauer: | if gameplay.time_query(GAME_TIME) > gurke + intervall * intervalldauer: | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| + | blocks.fill(M, | ||
| + | x = x + richx # Position anpassen | ||
| + | x2= x2+richx | ||
| + | y= y+richy | ||
| + | y2=y2+richy | ||
| + | z= z+richz | ||
| + | z2=z2+richz | ||
| + | intervall= intervall + 1 | ||
| + | |||
| + | def blöckebewegen3 (M, | ||
| + | running = True | ||
| + | intervall=1 | ||
| + | gurke = gameplay.time_query(GAME_TIME) | ||
| + | blocks.fill(M, | ||
| + | while gameplay.time_query(GAME_TIME) < gurke + länge: #zähler der ticks | ||
| + | if gameplay.time_query(GAME_TIME) > gurke + intervall * intervalldauer: | ||
| blocks.fill(M, | blocks.fill(M, | ||
| x = x + richx # Position anpassen | x = x + richx # Position anpassen | ||
| Zeile 157: | Zeile 188: | ||
| blocks.fill(STONE, | blocks.fill(STONE, | ||
| blocks.fill(STONE, | blocks.fill(STONE, | ||
| - | while Hind1: | + | |
| - | blöckebewegen(STONE_BRICKS, | + | |
| + | blöckebewegen(STONE_BRICKS, | ||
| while Hind2: | while Hind2: | ||
| blöckebewegen2(STONE_BRICKS, | blöckebewegen2(STONE_BRICKS, | ||
| Zeile 164: | Zeile 196: | ||
| blöckebewegen (STONE_SLAB, | blöckebewegen (STONE_SLAB, | ||
| while Hind4: | while Hind4: | ||
| - | blöckebewegen (BRICKS, | + | |
| - | blocks.fill(AIR, world(X+14, | + | |
| - | + | blocks.fill(STONE_BRICKS, world(X+14, | |
| + | while Hind5: | ||
| + | blocks.fill(STONE_BRICKS, | ||
| + | if (Hind6==True): | ||
| + | blocks.fill(AIR, | ||
| + | blöckebewegen3 (STONE_BRICKS, | ||
| + | blöckebewegen3 (ANVIL, | ||
| + | | ||
| + | blocks.fill(MONSTER_SPAWNER, | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | |||
| + | def antworttod(): | ||
| + | player.teleport(world(X+11, | ||
| + | player.execute(" | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | player.say(" | ||
| + | mobs.apply_effect(HUNGER, | ||
| + | mobs.apply_effect(FIRE_DAMAGE, | ||
| + | Materialien=[DIAMOND, | ||
| + | n=1 | ||
| + | for zahl in Materialien: | ||
| + | mobs.give(mobs.target(NEAREST_PLAYER), | ||
| + | n=n+1 | ||
| + | |||
| + | def antwortend(): | ||
| + | player.say(" | ||
| + | player.teleport(positions.ground_position(pos(0, | ||
| + | |||
| spielbediungen() | spielbediungen() | ||
| raum1() | raum1() | ||
| - | #player.teleport(world(X, | + | player.teleport(world(X, |
| player.on_travelled(WALK, | player.on_travelled(WALK, | ||
| dialog1() | dialog1() | ||
| player.on_chat(" | player.on_chat(" | ||
| - | player.on_chat(" | + | player.on_chat(" |
| + | player.on_chat(" | ||
| + | player.on_chat(" | ||
| raum2() | raum2() | ||
| raum3() | raum3() | ||
| - | |||
| </ | </ | ||
| Zeile 184: | Zeile 249: | ||
| ====== Notizen für das Projekt ====== | ====== Notizen für das Projekt ====== | ||
| + | |||
| + | **Ideen für das Projekt** | ||
| + | |||
| + | Unser ursprünglicher Gedanke war eine Schatzsuche in einer mittelalterlichen Burg und oder die Entschärfung einer Bombe. | ||
| + | Dabei muss man sich durch verschiedene Räume kämpfen. | ||
| + | Am Schluss hat man die Wahl den Schatz zu nehmen oder die Bombe aufzuhalten. | ||
| + | Wenn man den Schatz nimmt, löst sich der Boden auf und man fällt in die Tiefe (alles explodiert), | ||
| + | |||
| + | __Mögliche Hindernisse: | ||
| + | * Einen Block, den man an die richtige Stelle setzen muss. | ||
| + | * Ein kleines jump in run mit Effekten | ||
| + | * Mit Pfeil und Bogen etwas in einer Reihenfolge abschiessen. | ||
| + | * Ein Chemierätsel | ||
| + | |||
| + | **Ergebnisse aus den Ideen** | ||
| + | |||
| + | Bei der aktuellen Version muss man sich durch drei Räume durchkämpfen. Wenn man das jeweilige Rätsel gelöst hat, öffnet sich der nächste Raum. Dabei wird man durch den Chat angeleitet. Bei ersten muss man sich einem Rätsel stellen. Beim Zweiten fliegt man hoch und muss Blöcken ausweichen. Beim Dritten ist es erforderlich sich über einen Lavasee zu bewegen. Am Schluss muss man sich entscheiden, | ||
| + | |||
| + | ====== Unsere Problematiken beim Programmieren ====== | ||
| - | **Beschreibung** | + | **Blöcke Bewegen:** |
| - | Ein Abenteuer-Rätselspiel | + | |
| - | Von Raum zu Raum durchkämpfen | + | |
| - | Sekundär eine mittelalterliche Burg als Dekohülle falls genug Zeit | + | |
| - | **Ziel** | + | Das Problem bestand darin, die Blöcke in verschiedenen Geschwindigkeiten zu bewegen. Dabei sollen sie nur eine bestimmte Bewegung vollführen |
| - | Mehrere Rätsel und Aufgaben lösen, alle Räume abschliessen | + | |
| - | Schatz suchen/ stehlen | + | |
| - | **Story** (wird sich noch sicherlich noch ändern) | + | Um dies zu lösen, haben wir die spieleigene Zeitrechnung als Basis genommen. Diese Zeiteinheit erhöhte jedoch schneller, als das Programm sie abfragen konnte. Deshalb mussten wir Intervalle einführen: Das Programm fragt die Zeit ab, und immer wenn der erfragte Zeitpunkt |
| - | Man ist ein wackerer Abenteuer | + | |
| - | **Ablauf** | + | **Fehlende Blöcke:** |
| - | Man muss in verschiedene Räume | + | |
| - | Dort muss man jeweils die Aufgabe lösen. | + | |
| - | Alle gelöst, öffnet/ | + | |
| - | Anweisungen durch den Chat | + | |
| - | Am Schluss hat man die Wahl den Schatz zu nehmen oder etwas anderes (?) | + | Einige Blöcke, die im Inventar |
| - | Wenn man den Schatz nimmt, löst sich der Boden auf und man fällt in die tiefe und alles Explodiert ,aber man stirbt nicht daran. Man kann dann aber auch nichts mehr machen. | + | |
| - | Eine letzte gehässige Nachricht erscheint, dabei bekommt der Spieler | + | |
| - | Wenn man sich für das Andere entscheidet, | + | **Absolute |
| + | Zuerst haben wir relative Koordinaten verwendet, was auch kein Problem war. Als wir aber Blöcke durch eine Interaktion ersetzen wollten, mussten wir auf absolute Koordinaten zurückgreifen. Sonst erscheinen die Blöcke nicht am gewünschten Ort, sondern an verschiedenen Orten, je nach der Position der Spielerfigur. | ||
| - | **Hindernisse Ideen** | + | **Programm Fehler:** |
| - | Mehrere mögliche Möglichkeiten, je nach Schwierigkeit/ | + | Wir haben den Code kopiert und in verschiedenen Welten ausgeführt. Es zeigte sich, dass die Spawnpoints, |
| - | 1.Einen Block den man an der richtigen Stelle setzen muss (Geometrie Rätsel) | + | ===== Presentation ===== |
| - | 2.Knöpfe drücken, welche verschiedene Funktionen ausführen, richtige Reihenfolge ergibt den Weg. | + | https:// |
| - | 3.Mit Effekten hochschweben und Blöcke(Fallen, | + | |
| - | 4.«Chemie» Rätsel | + | |
| - | 5.Labyrinth | + | |
| - | 6.Wer hat Angst vor dem Einhorn, ich nicht... | + | |
| - | 7.« vielleicht ein paar Mobs zum bekämpfen». | + | |
| - | Es gibt einmal noch die Möglichkeit direkt z u gewinnen aber auch zu verlieren. | ||