Seite 1 von 1

Hilfestellung bei meinem ersten kleinen Projekt

Verfasst: Donnerstag 14. Oktober 2021, 20:24
von PB_92
Hallo an alle,

ich beschäftige mich seit ca. 1woche mit dem Programmieren und habe mich für python entschieden. Nun habe ich mir ein kleines Projekt/Aufgabe gestellt und komme nun leider nicht weiter.

Hier die Aufgabe die ich mir gestellt habe:

Schreibe für ein Würfelspiel die folgenden Varianten:
(a) Der Sieger des Spieles ist der Spieler, der nach 10 Durchläufen die höchste
Augenzahl hat.
(b) Der Sieger des Spieles ist der Spieler, der zuerst die Gesamtsumme von 50
Augenzahlen besitzt.
(c) Der Sieger des Spieles ist der Spieler, der zuerst dreimal hintereinander die
gleiche Zahl würfelt.
(d) Der Sieger des Spieles ist der Spieler, der zuerst eine Sechs würfelt.

Es soll mit einem Würfel gespielt werden.

Das habe ich bisher geschrieben:

Code: Alles auswählen

import random

spielerEins = 0
spielerZwei = 0

for i in range(1, 10):
     print("Let's get rdy!")
     print("runde", i)

     a = random.randint(1, 6)
     print("spielerEins würfelt = ", a)
     b = random.randint(1, 6)
     print("spielerZwei würfelt = ", b)

     if a == 6:
         print("spielerEins hat gewonnen! Herzlichen Glückwunsch")
         quit()
     if b == 6:
         print("spielerZwei hat gewonnen! Herzlichen Glückwunsch")
         quit()
   

Ich habe als erstes die variante "d" gelöst, weil es für mich am einfachsten war. Als nächstes habe ich mir Gedanken gemacht wie ich variante "c" lösen kann und hänge komplett in der Luft. Ich weiß leider nicht wie ich es schaffe das python die gewürfelte zahl "speichert" und dann in der nächsten Runde mit berücksichtigt.
Auch für Möglichkeiten den Code "schöner" zu schreiben bin ich sehr dankbar.
Falls ich irgendwas beim posten falsch gemacht habe werde ich daraus lernen.

Vielen Dank im Voraus!

Re: Hilfestellung bei meinem ersten kleinen Projekt

Verfasst: Donnerstag 14. Oktober 2021, 20:33
von __deets__
Eine selbstgestellte Aufgabe? Und nicht nur eine, sondern gleich 4 davon? Ich bin beeindruckt. Da werfe ich doch gerne den Begriff „Liste“ in den Raum. Damit kann man mehrere Ergebnisse Speichern.

Re: Hilfestellung bei meinem ersten kleinen Projekt

Verfasst: Donnerstag 14. Oktober 2021, 20:42
von PB_92
Danke🙈
Ich glaube es am besten wenn man viel selber probiert und gezielt etwas macht anstatt einfach nur Tutorials zu gucken.

Danke für die Anmerkung mit den Liste. Werde mich da mal einlesen und hoffe ich kann das integrieren.

Re: Hilfestellung bei meinem ersten kleinen Projekt

Verfasst: Donnerstag 14. Oktober 2021, 20:48
von Sirius3
Variablennamen schreibt man komplett kein.
Nur in Deiner Variante a gibt es 10 Durchläufe, alle anderen könnten theoretisch beliebig lang laufen.
Wenn Spieler 1 eine 6 Würfelt, braucht Spieler 2 nicht mehr würfeln.
`quit` hat in einem Programm nichts zu suchen. Um eine Schleife abzubrechen gibt es `break`.

Re: Hilfestellung bei meinem ersten kleinen Projekt

Verfasst: Freitag 15. Oktober 2021, 05:47
von PB_92
@Sirius3
Der Hinweis mit der Kleinschreibung wurde umgesetzt genau so wie „quit“ durch „Break“ ersetzt wurde.

Re: Hilfestellung bei meinem ersten kleinen Projekt

Verfasst: Freitag 15. Oktober 2021, 16:15
von __blackjack__
Spasseshalber eine Lösung mit allen Varianten in CBM BASIC:

Code: Alles auswählen

   10 X=RND(-TI):PRINT"WUERFELSIMULATION":PRINT
   20 PRINT"VARIANTEN: SIEGER IST, WER..."
   30 PRINT"1 NACH 10 RUNDEN HOECHSTE PUNKTZAHL HAT"
   40 PRINT"2 ZUERST SUMME >=50 HAT"
   50 PRINT"3 ZUERST 3 MAL HINTEREINANDER GLEICH"
   60 PRINT"  WUERFELT":PRINT"4 ZUERST EINE SECHS WUERFELT":PRINT
   70 INPUT"DEINE WAHL";T$:V=VAL(T$)
   80 IF V<1 OR V>4 THEN PRINT"UNGUELTIGE WAHL.":END
   90 PRINT" #   A   B   TA    TB":PRINT"------------------------"
  100 R=0:TA=0:TB=0:LA=0:LB=0:RA=0:RB=0
  500 R=R+1:A=INT(RND(0)*6)+1:TA=TA+A:IF A=LA THEN RA=RA+1:GOTO 520
  510 LA=A:RA=1
  520 B=INT(RND(0)*6)+1:TB=TB+B:IF B=LB THEN RB=RB+1:GOTO 540
  530 LB=B:RB=1
  540 PRINT R;TAB(4);A;TAB(8);B;TAB(12);TA;TAB(18);TB
  550 ON V GOTO 560,580,600,620
  560 IF R<>10 THEN 500
  570 X=TA:Y=TB:GOTO 900
  580 IF TA<50 AND TB<50 THEN 500
  590 X=TA:Y=TB:GOTO 900
  600 IF RA<3 AND RB<3 THEN 500
  610 X=RA:Y=RB:GOTO 900
  620 IF A<>6 AND B<>6 THEN 500
  630 X=A:Y=B
  900 IF X=Y THEN PRINT"UNENTSCHIEDEN.":END
  910 PRINT"SPIELER";ABS(X<Y)+1;"HAT GEWONNEN."