Appearance
Lösungen zu Einführung A
Aufgabe 2.1
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
figur1.draw()
figur2.draw()
figur3.draw()
figur4.draw()
WIDTH = 800
HEIGHT = 600
TITLE = "Mein tolles Game"
hintergrundfarbe = 11, 102, 35
figur1 = Actor("figur_01.png")
figur1.x = WIDTH / 2
figur1.y = 40
figur2 = Actor("figur_02.png")
figur2.x = WIDTH - 32
figur2.y = HEIGHT / 2
figur3 = Actor("figur_04.png")
figur3.x = figur2.x - 64
figur3.y = figur2.y
figur4 = Actor("figur_11.png")
figur4.x = WIDTH / 4
figur4.y = HEIGHT * 0.75
pgtrun.go()Aufgabe 2.2
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
figur1.draw()
figur2.draw()
figur3.draw()
figur4.draw()
WIDTH = 800
HEIGHT = 600
TITLE = "Mein tolles Game"
hintergrundfarbe = 11, 102, 35
figur1 = Actor("figur_01.png")
figur1.x = WIDTH / 5
figur1.y = HEIGHT / 2
figur2 = Actor("figur_02.png")
figur2.x = WIDTH * 2/5
figur2.y = figur1.y
figur3 = Actor("figur_04.png")
figur3.x = WIDTH * 3/5
figur3.y = figur1.y
figur4 = Actor("figur_11.png")
figur4.x = WIDTH * 4/5
figur4.y = figur1.y
pgtrun.go()Aufgabe 3.1
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
figur1.draw()
figur2.draw()
figur3.draw()
figur4.draw()
def update():
figur1.x = figur1.x + 2
figur2.x = figur2.x + 1
figur3.x = figur3.x + 3
figur4.x = figur4.x + 4
WIDTH = 800
HEIGHT = 600
TITLE = "Rennen"
hintergrundfarbe = 11, 102, 35
figur1 = Actor("figur_01.png")
figur1.x = 0
figur1.y = HEIGHT * 1/5
figur2 = Actor("figur_02.png")
figur2.x = 0
figur2.y = HEIGHT * 2/5
figur3 = Actor("figur_04.png")
figur3.x = 0
figur3.y = HEIGHT * 3/5
figur4 = Actor("figur_11.png")
figur4.x = 0
figur4.y = HEIGHT * 4/5
pgtrun.go()Aufgabe 4.1
figurhat den unteren Fensterrand erreicht.pythonfigur.y > HEIGHTfigur1ist unterhalb vonfigur2.pythonfigur1.y > figur2.yfigurist rechts der Mitte des Fensters.pythonfigur.x < WIDTH / 2
Aufgabe 4.2
py
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
figur1.draw()
figur2.draw()
figur3.draw()
figur4.draw()
def update():
# 1. Eine Figur soll wieder am linken Rand erscheinen,
# wenn sie den rechten Rand erreicht hat.
figur1.x = figur1.x + 2
if figur1.x > WIDTH:
figur1.x = 0
# 2. Die zweite Figur soll am rechten Rand stehenbleiben.
if figur2.x < WIDTH:
figur2.x = figur2.x + 1
# 3. Die dritte Figur soll sich von rechts nach links bewegen
# und beim Erreichen des linken Rands wieder am rechten Rand erscheinen.
figur3.x = figur3.x - 3
if figur3.x < 0:
figur3.x = WIDTH
# Pfeiltasten: keyboard.up / keyboard.down / keyboard.left / keyboard.right
if keyboard.d:
figur4.x = figur4.x + 2
if keyboard.a:
figur4.x = figur4.x - 2
if keyboard.w:
figur4.y = figur4.y - 2
if keyboard.s:
figur4.y = figur4.y + 2
WIDTH = 800
HEIGHT = 600
TITLE = "Rennen"
hintergrundfarbe = 11, 102, 35
figur1 = Actor("figur_01.png")
figur1.x = 0
figur1.y = HEIGHT * 1/5
figur2 = Actor("figur_02.png")
figur2.x = 0
figur2.y = HEIGHT * 2/5
figur3 = Actor("figur_04.png")
figur3.x = WIDTH
figur3.y = HEIGHT * 3/5
figur4 = Actor("figur_11.png")
figur4.x = WIDTH / 2
figur4.y = HEIGHT * 4/5
pgtrun.go()Aufgabe 5.1
Das Programm gibt folgendes aus:
Hallo Anna
Hallo BenNach dem ersten Aufruf von gruesse gibt es folgende Schachteln:

Nach dem zweiten Aufruf von gruesse gibt es folgende Schachteln:

Aufgabe 5.2
Das Programm gibt folgendes aus:
Anna
AnnaWenn ben in Anführungszeichen gesetzt wird, gibt das Programm folgendes aus:
ben
AnnaEin Wort ohne Anführungszeichen ist ein Name, ein Wort in Anführungszeichen ist ein Wert.
Zunächst wird der Wert Anna in der Schachtel mit dem Namen ben gespeichert. Danach wird der Wert wieder aus der Schachtel gelesen und in die Schachtel mit dem Namen anna gespeichert.
Nun wird der Inhalt der Schachtel anna und danach der Inhalt der Schachtel ben ausgegeben.
Aufgabe 6.1
Korrekturen:
Zeile Korrektur 1 import pgtruneinfügen.3 Doppelpunkt am Ende der Zeile einfügen. 5 hintergrundfarbeklein schreiben.8 Punkt zwischen figurundxeinfügen:figur.x =9 Doppelpunkt am Ende der Zeile einfügen. 10 Zeile einrücken. 12 Leerzeichen am Anfang der Zeile löschen. 14 Text in Anführungszeichen setzen: "Rennen"17 Dateiname mit Kleinbuchstaben schreiben: figur_01.png18 Division mit Schrägstrich /schreiben19 Division mit Schrägstrich /schreiben19 HEIGHTkorrekt schreibenFigur sichtbar machen: Figur zuerst zeichnen und danach den Hintergrund füllen, d.h. Zeilen 4 und 5 tauschen:
pythondef draw(): screen.fill(hintergrundfarbe) figur.draw()Figur soll links wieder erscheinen: In der Bedingung auf Zeile 9 wird die y-Koordinate verglichen anstatt die x-Koordinate.
pythonif figur.x > WIDTH: figur.x = 0
Vollständig korrigiertes Programm:
python
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
figur.draw()
def update():
figur.x = figur.x + 2
if figur.x > WIDTH:
figur.x = 0
WIDTH = 800
HEIGHT = 600
TITLE = "Rennen"
hintergrundfarbe = 11, 102, 35
figur = Actor("figur_01.png")
figur.x = WIDTH / 2
figur.y = HEIGHT * 1/5
pgtrun.go()Aufgabe 7.1
Variante 1 — Am Rand anhalten
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
lara.draw()
def update():
if keyboard.w and lara.y > 0:
lara.y = lara.y - lara.geschwindigkeit
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + lara.geschwindigkeit
if keyboard.a and lara.x > 0:
lara.x = lara.x - lara.geschwindigkeit
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + lara.geschwindigkeit
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
pgtrun.go()Variante 2 — Am Rand gehts weiter
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
lara.draw()
def update():
if keyboard.w:
lara.y = lara.y - lara.geschwindigkeit
if lara.y < 0:
lara.y = HEIGHT
if keyboard.s:
lara.y = lara.y + lara.geschwindigkeit
if lara.y > HEIGHT:
lara.y = 0
if keyboard.a:
lara.x = lara.x - lara.geschwindigkeit
if lara.x < 0:
lara.x = WIDTH
if keyboard.d:
lara.x = lara.x + lara.geschwindigkeit
if lara.x > WIDTH:
lara.x = 0
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
pgtrun.go()Aufgabe 7.2
Die hinzugefügten Zeilen sind markiert.
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import random
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
pizza.draw()
lara.draw()
def update():
if keyboard.w and lara.y > 0:
lara.y = lara.y - lara.geschwindigkeit
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + lara.geschwindigkeit
if keyboard.a and lara.x > 0:
lara.x = lara.x - lara.geschwindigkeit
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + lara.geschwindigkeit
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
pizza = Actor("pizza.png")
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
pgtrun.go()Aufgabe 7.3
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import random
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
pizza.draw()
lara.draw()
def update():
if keyboard.w and lara.y > 0:
lara.y = lara.y - lara.geschwindigkeit
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + lara.geschwindigkeit
if keyboard.a and lara.x > 0:
lara.x = lara.x - lara.geschwindigkeit
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + lara.geschwindigkeit
if lara.colliderect(pizza):
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
pizza = Actor("pizza.png")
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
pgtrun.go()Aufgabe 7.4
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import random
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
pizza.draw()
lara.draw()
text = "Punkte: " + str(lara.punkte)
screen.draw.text(text, left=10, top=30, fontsize=40)
def update():
if keyboard.w and lara.y > 0:
lara.y = lara.y - lara.geschwindigkeit
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + lara.geschwindigkeit
if keyboard.a and lara.x > 0:
lara.x = lara.x - lara.geschwindigkeit
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + lara.geschwindigkeit
if lara.colliderect(pizza):
lara.punkte = lara.punkte + 1
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
lara.punkte = 0
pizza = Actor("pizza.png")
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
pgtrun.go()Aufgabe 7.5
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import random
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
pizza.draw()
lara.draw()
text = "Punkte: " + str(lara.punkte)
screen.draw.text(text, left=10, top=30, fontsize=40)
text = "Zeit: " + str(lara.zeit)
screen.draw.text(text, left=400, top=30, fontsize=40)
def update():
if keyboard.w and lara.y > 0:
lara.y = lara.y - lara.geschwindigkeit
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + lara.geschwindigkeit
if keyboard.a and lara.x > 0:
lara.x = lara.x - lara.geschwindigkeit
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + lara.geschwindigkeit
lara.zeit = lara.zeit - 1 / 60
if lara.colliderect(pizza):
lara.punkte = lara.punkte + 1
lara.zeit = lara.zeit + 1
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
lara.punkte = 0
lara.zeit = 10
pizza = Actor("pizza.png")
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
pgtrun.go()Aufgabe 7.6
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import random
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
pizza.draw()
lara.draw()
text = "Punkte: " + str(lara.punkte)
screen.draw.text(text, left=10, top=30, fontsize=40)
text = "Zeit: " + str(lara.zeit)
screen.draw.text(text, left=400, top=30, fontsize=40)
if lara.zeit < 0:
screen.draw.text("GAME OVER", left=170, top=250, fontsize=100)
def update():
if lara.zeit < 0:
return
if keyboard.w and lara.y > 0:
lara.y = lara.y - lara.geschwindigkeit
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + lara.geschwindigkeit
if keyboard.a and lara.x > 0:
lara.x = lara.x - lara.geschwindigkeit
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + lara.geschwindigkeit
lara.zeit = lara.zeit - 1 / 60
if lara.colliderect(pizza):
lara.punkte = lara.punkte + 1
lara.zeit = lara.zeit + 1
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.geschwindigkeit = 4
lara.punkte = 0
lara.zeit = 10
pizza = Actor("pizza.png")
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
pgtrun.go()Zusatzaufgabe 7.7
python
# Hack: Fenster positionieren
import os
os.environ["SDL_VIDEO_WINDOW_POS"] = "100, 50"
import random
import pgtrun
def draw():
screen.fill(hintergrundfarbe)
pizza.draw()
lara.draw()
text = "Punkte: " + str(lara.punkte)
screen.draw.text(text, left=10, top=30, fontsize=40)
screen.draw.filled_rect(Rect(10, 10, lara.zeit * 50, 10), color=(255, 0, 0))
if lara.zeit < 0:
screen.draw.text("GAME OVER", centerx=WIDTH / 2, centery=HEIGHT / 2, fontsize=80)
def update():
if lara.zeit < 0:
return
lara.zeit = lara.zeit - 0.01
if keyboard.w and lara.y > 0:
lara.y = lara.y - 4
if keyboard.s and lara.y < HEIGHT:
lara.y = lara.y + 4
if keyboard.a and lara.x > 0:
lara.x = lara.x - 4
if keyboard.d and lara.x < WIDTH:
lara.x = lara.x + 4
if lara.colliderect(pizza):
lara.zeit = lara.zeit + 1
lara.punkte = lara.punkte + 1
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
WIDTH = 800
HEIGHT = 600
TITLE = "Erstes Spiel"
hintergrundfarbe = 11, 102, 35
lara = Actor("figur_01.png")
lara.x = WIDTH / 2
lara.y = HEIGHT / 2
lara.zeit = 10
lara.punkte = 0
pizza = Actor("pizza.png")
pizza.x = random.randrange(WIDTH)
pizza.y = random.randrange(HEIGHT)
pgtrun.go()