Python PyGame Pong-clock Projekt

  • Hallo RPi Gemeinde

    Das ist mein erster Eintrag/Beitrag und ich möchte mich als begeisterter RPi Neuling vorstellen.

    Ein Projekt hat mich auf den Einsatz eines RPi gebracht… einiges habe ich bereits zum laufen bekommen, einiges aber auch nicht… nun bin ich auf der Suche nach Beistand, damit ich mit meinem Projekt weiterkomme!

    Suche also Hilfe zum Thema RPi zero W und Python/PyGame.

    Danke schon mal...

  • Hallo 0123fant,

    willkommen im Forum! :green_smile:

    Bitte stell konkrete Fragen, dann kann man ggf. auch antworten. Wenn es um Python geht, dann zeig Deinen Code in einem Codeblock und die dazugehörenden Fehlermeldungen etc. Ansonsten die üblichen Infos, die hier Wie frage ich nach Hilfe? nachzulesen sind nicht vergessen.

  • ...also ich versuche mal etwas Ordnung in meine Themen zu bringen!

    Das Projekt besteht aus einem alten, kleinen schwarz-weiß Röhren Fernseher und einem RPi zero W mit DS3231Modul

    Was geht: das Programm pypong-clock.py startet auf dem RPi, das Signal wird über dem AV Ausgang übertragen.

    Was soll gehen: bei Start oder nach einem Stromausfall sollte das Programm automatisch starten und das Bild den Bildschirm ausfüllen.

    Die angezeigten Zahlen/Spielstand/Std.Min. sollten doppelt so groß sein als aktuell um besser ablesbar zu sein.

    Das Ziel: eine eigenständige Uhr die beim einschalten/anstecken das Pong Spiel als Uhrzeit anzeigt.


    Quelle des Programm:

    pong-clock/pypong-clock/pypong-clock.py at master · mharizanov/pong-clock
    Contribute to mharizanov/pong-clock development by creating an account on GitHub.
    github.com


    ...so sieht das aktuell auf dem RPi aus!

  • Post by 0123fant (February 12, 2025 at 11:26 PM).

    This post was deleted by the author themselves: doppelt! (February 12, 2025 at 11:33 PM).
  • Echtzeituhr-Modul DS3231 sorgt für genaue Zeitangaben - Raspberry Pi Geek
    Wenn’s um die genaue Zeit geht, dann gerät der Raspberry Pi schnell ins Schleudern. Die fehlenden Echtzeituhr verpassen Sie dem Mini-PC bei Bedarf…
    www.raspberry-pi-geek.de

    Entweder es gibt eine Fertige python-bibliothek für das Modul oder man benutzt selbst i2c zur Kommunikation wie im ersten Artikel beschrieben. Die Größe des Textes wirst du ändern können wenn das dein Code ist? Oder ist die in einer Bibliothek versteckt?

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

    Edited 2 times, last by momefilo (February 13, 2025 at 2:17 AM).

  • Tust du mir Verraten wie du den Einfall- und Ausfallwinkel des Balls progrmmatisch erfassen tust? Ich will ein änliches spiel programmieren und finde aber noch keinen Ansatz, ich mag auch den Ausfallswinkel abhängig von der Eintreffposition im Pad ändern. So wie in deinem Spiel. Ich habe immer mit einfachen X/Y-Matrizen und vier Richtungen bei sowas gedacht und finde nichts

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

    Edited once, last by momefilo (February 13, 2025 at 2:45 AM).

  • momefilo Das Programm ist weder von 0123fant, noch ist das wirklich ein Spiel, also eventuell ist da gar nicht die komplette Spielmechanik drin, die man für ein Pong braucht. Pong wird hier nur für die Anzeige benutzt. Der Rechner ”spielt” das selbst um einen Punktestand zu erreichen, der der aktuellen Uhrzeit entspricht.

    Damit wäre das eher eine Frage für ein eigenes Thema. Wobei es da draussen mehr als genug Pong-Implementierungen mit Pygame gibt. Das ist ein ziemlich beliebtes Einsteigerprojekt. Einfach mal eine Suchmaschine anwerfen und dann schauen wie das dort jeweils gemacht wurde. Ansonsten der Tipp: Pygame hat eine `Vector2`-Klasse für 2D-Vektoren mit allerlei nützlichen Methoden. Man kann die als Richtungsvektor ansehen, mit der Länge des Vektors als Geschwindigkeit, man zwischen kartesischen und Polarkoordinaten umrechnen, man kann die addieren/subtrahieren und so weiter.

    “The object-oriented version of 'Spaghetti code' is, of course, 'Lasagna code'. (Too many layers)“ — Roberto Waltman

  • __blackjack__
    Ja da sind noch zwei Import anweisung die mich hoffen liesen, aber das hat sich ja erübrigt. Ich mag eine dem Spiel "Breakout" ähnliche implementierung mit Drehpotis und Joystiks versuchen und hatte an das einfache Pong garnicht gedacht. Ein re-Engineering wird mir schwer fallen da ich keine Vorstellung habe wie ich den Winkel des Balles an den Flächen programmatisch abbilden kann so das sie zu Variablen werden. Eine Berechnung im Komplexen ist bestimmt nötig, nur komme ich im Denken immer dazu, alle Wege des Balles zu vor schon abbilden zu müssen was ja eigentlich programmatisch geschehen soll.

    Jeder macht was er will, keiner macht was er soll, aber alle machen mit :)

  • ...also hier geht es um eine Uhr die optisch wie das Pong Spiel aussieht!

    Ich möchte hier einen alten Röhren TV in eine Uhr verwandeln und benötige Unterstützung um das bestehende Programm auf meinen Bedarf zu ändern!

    Wie bereits im obigen Post beschrieben sollte:

    1.beim Start oder nach einem Stromausfall das Programm automatisch starten.

    2. das Bild den gesamten Bildschirm ausfüllen.

    3. die angezeigten Zahlen/Spielstand/Std.Min. sollten ca. doppelt so groß sein als aktuell, um besser ablesbar zu sein.

    Das Ziel: eine eigenständige Uhr die beim einschalten/anstecken das Pong Spiel als Uhrzeit anzeigt.

    Vielleicht kann jemand das Programm ändern, oder mir bei der Änderung behilflich sein...

  • ...fehlen hier noch Angaben zu meinem Projekt?

    Suche weitere Infos wie ich mit meinem Projekt weiter komme!

    Ich schätze den Autostart und die Bildschirmgröße muss in der RPi Software programmiert werden und die Zahlengröße im Pygame Programm!?

  • Die Konfiguration steht doch in der Datei pypong-clock.py:

    Die Schriftgröße ist wohl die "20" beim ScoreDisplay. Spiel' einfach mal mit den Werten...

    Wenn Du alles wunschgemäß konfiguriert hast und die Anzeige immer noch "attraktiv" ist, kann man sich um den Autostart kümmern. Vorher macht das keinen Sinn.

  • Wieso hast Du das denn in /boot gespeichert???? =O Da gehört nichts Benutzerspezifisches hin!

    Speichere das Projekt in Deinem Home-Verzeichnis bzw. dort in einem Unterverzeichnis Deiner Wahl.

    Edit: Also z.B. in /home/pi/pypong-clock oder /home/0123fant/pypong-clock, je nachdem, ob Dein User pi oder 0123fant lautet... Oder halt anders.

    Edited 2 times, last by simonz (February 18, 2025 at 10:01 PM).

  • ...danke für den Tipp, das Programm in das Home Verzeichnis zu verlegen... hier konnte ich auch die Parameter für die Größe der Anzeige, das Feld usw. ändern und speichern:-)

    So sieht das jetzt auf dem Bildschirm aus!

    Das Spielfeld habe ich mit der Maus positioniert, ideal wäre eine automatische Anpassung auf den Bildschirm!

    Weiters würde ich gerne eine 24Std. Anzeige darstellen, kann aber den Befehl in der Software nicht finden.

    Mir ist auch unklar, wie sich die Uhrzeit einstellt? Es ist ein RTC Modul vorhanden, aber woher kommt die aktuelle Zeit und was ist bei Sommer/Winter Umstellung??

  • Weiters würde ich gerne eine 24Std. Anzeige darstellen, kann aber den Befehl in der Software nicht finden.

    Die Projektseite https://github.com/mharizanov/pong-clock/tree/master verweist auf ein Wiki und auf ein Youtube-Video des Programmierers.

    An beiden Stellen sind Hinweise zu finden. z.B.

    Quote

    If somebody wants a 24 hour timeformat just replace in pypong-clock.py the now.strftime("%I") parts with now.strftime("%H").

    Tipp: Ohne ein bisschen selbst Lesen und Forschen wirst Du nur schwer weiterkommen.

    Und etwas Python zu lernen wäre auch ganz sinnvoll. Und sei es nur, um sich in den verwendeten Quelltexten zumindest ein wenig zurechtzufinden.

  • Die Konfiguration steht doch in der Datei pypong-clock.py:

    Python
        [...]
        # Configure the score display which will show the time
        right_score_display = ScoreDisplay((RESOLUTION[0] / 2 + 18, 20, 30, 50), (15, 28), 00, 'right')
        left_score_display = ScoreDisplay((RESOLUTION[0] / 2 - 18, 20, 60, 100), (15, 28), 00, 'left', True)

    Die Schriftgröße ist wohl die "20" beim ScoreDisplay. Spiel' einfach mal mit den Werten...

    Schriftgröße ist die (15, 28) (Breite, Höhe). Die 20 ist die obere Höhe (Kante) der Schrift. Durch Experimentieren herausgefunden, nicht durch Analyse.

    Ich hatte mich erst gewundert, dass die Importe bei 0123fant alle klappen, weil ich hier Fehlermeldungen bekam, aber da liegen ja ein paar mehr Dateien im Repository. Ich hatte zunächst nur pypong-clock.py heruntergeladen. :dau1:

    Mir ist auch unklar, wie sich die Uhrzeit einstellt? Es ist ein RTC Modul vorhanden, aber woher kommt die aktuelle Zeit und was ist bei Sommer/Winter Umstellung??

    Vom Betriebssystem. Das macht auch die Zeitumstellung. Könnte interessant sein wie die Zeitumstellung in pypong-clock abläuft, weil das ja nicht mit der richtigen Zeit zu spielen beginnt, sondern von 00:00 so lange spielt, bis es die aktuelle Zeit erreicht hat. Dauert eine Weile um 23:50 Uhr. Vorstellen bei der Umstellung auf Sommerzeit dürfte für das Spiel kein Problem sein. Ich bin gespannt wie das beim Zurückstellen im Oktober aussieht mit 2 Uhr A und B.

    There are no bugs. Any resemblance thereof is delirium. Really.
    (man lcf)

  • Die Schriftgröße ist wohl die "20" beim ScoreDisplay. Spiel' einfach mal mit den Werten...

    Schriftgröße ist die (15, 28) (Breite, Höhe). Die 20 ist die obere Höhe (Kante) der Schrift. Durch Experimentieren herausgefunden, nicht durch Analyse.

    Danke für die Korrektur.
    Ich hatte es auch nicht analysiert, sondern nur grob überflogen. 0123fant hat es laut Foto in #15 ja auch herausgefunden.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!