Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:snr:informatik:glf22:python:while [2022/10/25 11:37] Olaf Schnürer [Aufgabe: Zahlenraten] |
lehrkraefte:snr:informatik:glf22:python:while [2022/10/25 12:03] Olaf Schnürer [Sehr nette Bonus-Aufgabe: Game loop oder: Mein erstes Spiel] |
||
---|---|---|---|
Line 194: | Line 194: | ||
<hidden Lösung> | <hidden Lösung> | ||
- | Starte mit 50 und halbiere dann jeweils den Bereich aller noch möglichen Zahlen. Wenn beispielsweise 50 zu niedrig war, sind noch alle Zahlen von 51 bis 100 möglich. Rate also 75. (Beim Halbieren muss man natürlich manchmal auf- oder abrunden.) | + | Starte mit 50 und halbiere dann jeweils den Bereich aller noch möglichen Zahlen. Wenn beispielsweise 50 zu niedrig war, sind noch alle Zahlen von 51 bis 100 möglich. Rate also 75. |
</ | </ | ||
</ | </ | ||
Line 236: | Line 236: | ||
---- | ---- | ||
- | * (4) Das Spiel endet, wenn die Schlange auf das Feld mit der roten Box kommt (die Schlange frisst den Apfel). | + | * (4) Wenn die Schlange auf das Feld mit der roten Box kommt (die Schlange frisst den Apfel), soll ein neuer Apfel an einer neuen Position erzeugt werden. |
* (5) Drücken der Taste " | * (5) Drücken der Taste " | ||
+ | |||
+ | <hidden Lösungsvorschlag> | ||
+ | <code python aepfel-fressen.py> | ||
+ | # Strongly inspired by a program by Al Sweigart, see | ||
+ | # https:// | ||
+ | # Creative Commons BY-NC-SA 3.0 US | ||
+ | |||
+ | import random, pygame | ||
+ | from pygame.locals import * | ||
+ | |||
+ | FRAMES_PER_SECOND = 30 | ||
+ | |||
+ | ANZAHL_BOXEN_X = 10 | ||
+ | ANZAHL_BOXEN_Y = 6 | ||
+ | |||
+ | BOX_BREITE = 60 | ||
+ | BOX_HOEHE = 60 | ||
+ | |||
+ | FENSTER_BREITE = ANZAHL_BOXEN_X * BOX_BREITE | ||
+ | FENSTER_HOEHE = ANZAHL_BOXEN_Y * BOX_HOEHE | ||
+ | |||
+ | # Farben per Rot-, Grün- und Blauwert | ||
+ | # (jeweils auf Skala von 0 bis 255). | ||
+ | # rot grün blau | ||
+ | ROT = (255, 0, 0) | ||
+ | GRUEN = ( 0, 255, 0) | ||
+ | BLAU = ( 0, 0, 255) | ||
+ | WEISS = (255, 255, 255) | ||
+ | SCHWARZ = ( 0, 0, 0) | ||
+ | GRAU = (150, 150, 150) | ||
+ | HINTERGRUND_FARBE = SCHWARZ | ||
+ | |||
+ | def zeichneBox(x, | ||
+ | rechteck = pygame.Rect(x * BOX_BREITE + 1, y * BOX_HOEHE + 1, BOX_BREITE - 1, BOX_HOEHE - 1) | ||
+ | pygame.draw.rect(leinwand, | ||
+ | |||
+ | def zeichneGitter(): | ||
+ | for x in range(ANZAHL_BOXEN_X + 1): | ||
+ | pygame.draw.line(leinwand, | ||
+ | for y in range(ANZAHL_BOXEN_Y + 1): | ||
+ | pygame.draw.line(leinwand, | ||
+ | |||
+ | pygame.init() | ||
+ | uhr = pygame.time.Clock() | ||
+ | leinwand = pygame.display.set_mode((FENSTER_BREITE + 1, FENSTER_HOEHE + 1)) | ||
+ | pygame.display.set_caption(' | ||
+ | |||
+ | xSpieler = random.randint(0, | ||
+ | ySpieler = random.randint(0, | ||
+ | farbeSpieler = GRUEN | ||
+ | |||
+ | xApfel = random.randint(0, | ||
+ | yApfel = random.randint(0, | ||
+ | while (xSpieler == xApfel) and (ySpieler == yApfel): | ||
+ | xApfel = random.randint(0, | ||
+ | yApfel = random.randint(0, | ||
+ | |||
+ | fensterSchliessen = False | ||
+ | while not fensterSchliessen: | ||
+ | leinwand.fill(HINTERGRUND_FARBE) | ||
+ | zeichneGitter() | ||
+ | zeichneBox(xApfel, | ||
+ | zeichneBox(xSpieler, | ||
+ | pygame.display.update() | ||
+ | uhr.tick(FRAMES_PER_SECOND) | ||
+ | |||
+ | for ereignis in pygame.event.get(): | ||
+ | if ereignis.type == QUIT: | ||
+ | print(" | ||
+ | fensterSchliessen = True | ||
+ | elif ereignis.type == KEYDOWN: | ||
+ | if ereignis.key == K_LEFT: | ||
+ | print(" | ||
+ | if xSpieler > 0: | ||
+ | xSpieler = xSpieler - 1 | ||
+ | elif ereignis.key == K_RIGHT: | ||
+ | print(" | ||
+ | if xSpieler < ANZAHL_BOXEN_X - 1: | ||
+ | xSpieler = xSpieler + 1 | ||
+ | elif ereignis.key == K_UP: | ||
+ | print(" | ||
+ | if ySpieler > 0: | ||
+ | ySpieler = ySpieler - 1 | ||
+ | elif ereignis.key == K_DOWN: | ||
+ | print(" | ||
+ | if ySpieler < ANZAHL_BOXEN_Y - 1: | ||
+ | ySpieler = ySpieler + 1 | ||
+ | elif ereignis.key == K_ESCAPE: | ||
+ | print(" | ||
+ | fensterSchliessen = True | ||
+ | elif ereignis.key == K_q: | ||
+ | print(" | ||
+ | fensterSchliessen = True | ||
+ | elif ereignis.key == K_f: | ||
+ | if farbeSpieler == GRUEN: | ||
+ | farbeSpieler = BLAU | ||
+ | else: | ||
+ | farbeSpieler = GRUEN | ||
+ | if xSpieler == xApfel and ySpieler == yApfel: | ||
+ | print(" | ||
+ | xApfel = random.randint(0, | ||
+ | yApfel = random.randint(0, | ||
+ | while (xSpieler == xApfel) and (ySpieler == yApfel): | ||
+ | xApfel = random.randint(0, | ||
+ | yApfel = random.randint(0, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
Bonus-Aufgaben (such dir aus, was dir gefällt): | Bonus-Aufgaben (such dir aus, was dir gefällt): |