Verfasste Forenbeiträge

Ansicht von 11 Beiträgen - 1 bis 11 (von insgesamt 11)
  • Autor
    Beiträge
  • als Antwort auf: Easter-Coding: Racing-Game #8380
    Fabian
    Verwalter

    Unsere erste Version vom Racing-Spiel findet ihr hier 🙂

    Das wären die Schritte, um mit dem Spiel anzufangen, und ein paar Tipps, um zu einen coolen Racing-Spiel zu gelangen:

    1. Hintergrund erstellen
    2. Fahrzeuge zeichnen oder als Bilder importieren
    3. Bei Tastendruck beschleunigen und lenken
    4. Abbremsen wenn man auf den Rasen fährt -> Überprüfen, ob grüne Farbe berührt wird
    5. Ziellinie zeichnen
    6. Rundenzähler erhöhen, wenn man über Start-Ziel fährt –> auch mit Farbe erkennen
    7. Zeit stoppen, wenn man über Start-Ziel fährt
    8. Countdown oder Ampel beim Spielstart
    9. Coole Hintergrundmusik hinzufügen
    10. Töne beim Gasgeben, Kurve, Ampel oder Crash
    11. Töne beim durchs Ziel fahren, beim über Gras fahren
    12. Multiplayer gegen andere Spieler oder eine KI
    13. Lasst eurer Kreativität freien Lauf, probiert euch aus, habt Spaß!

    Viel Spaß!

    • Diese Antwort wurde geändert vor 11 Monaten, 2 Wochen von Fabian.
    • Diese Antwort wurde geändert vor 11 Monaten, 2 Wochen von Fabian.
    als Antwort auf: Weekly Challenge – Woche 3 #8260
    Fabian
    Verwalter

    Tipp 1

    Ihr braucht natürlich erst ein neues Thunkable Projekt. Aus der „Add Component“ Liste zieht ihr eine Leinwand („Canvas“) auf euren Screen. Den „Sprite Type 1“ nennt ihr in Ball um, und ihr ladet für den Ball ein Bild hoch oder gibt eine URL ein. Zum Beispiel, die hier. Anschließend draggt ihr einen neuen Ball in eure Leinwand hinein.

    Nun seid ihr dran: Wie programmiert man die Bewegung des Balls durch das Ablesen der Beschlueinigungssensoren (Accelerometer)?

    als Antwort auf: Weekly Challenge – Woche 2 #8228
    Fabian
    Verwalter

    Auflösung

    Und hier ist der gesamte Code für das Reaktionsspiel für zwei Spieler:

    import machine
    import utime
    import urandom
    
    led = machine.Pin(15, machine.Pin.OUT)
    
    knopfA = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
    knopfB = machine.Pin(17, machine.Pin.IN, machine.Pin.PULL_DOWN)
    
    pressed = False
    ersterGedrueckt = None
    
    def button_handler(pin):
        global pressed
        if not pressed:
            pressed=True
            global ersterGedrueckt
            ersterGedrueckt = pin
    
    while True:
        print("Los...")
        led.value(1)
        utime.sleep(urandom.uniform(5, 10))
        led.value(0)
    
        knopfA.irq(trigger=machine.Pin.IRQ_RISING, handler=button_handler)
        knopfB.irq(trigger=machine.Pin.IRQ_RISING, handler=button_handler)
    
        # Warten bis erster gedrückt
        while ersterGedrueckt is None:
            utime.sleep(1)
        
        print("Gedrückt")
        
        # Wer war der erste?
        if ersterGedrueckt is knopfA:
            print("Spieler A gewinnt!")
            
        elif ersterGedrueckt is knopfB:
            print("Spieler B gewinnt!")
    
        # Spiel für nächste Runde vorbereiten
        fastest_button = None
        pressed = False
    

    Ihr könnt natürlich das Spiel für weitere Spieler erweitern. Ihr braucht einfach ein paar mehr Knöpfe, ein paar mehr Pin Definitionen und ein paar mehr Triggers.

    Viel Spaß!

    als Antwort auf: Weekly Challenge – Woche 2 #8211
    Fabian
    Verwalter

    Tipp 3

    Hier ist der Anfang vom Programm mit der Handler-Funktion:

    import machine
    import utime
    import urandom
    
    led = machine.Pin(15, machine.Pin.OUT)
    
    knopfA = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
    knopfB = machine.Pin(17, machine.Pin.IN, machine.Pin.PULL_DOWN)
    
    pressed = False
    ersterGedrueckt = None
    
    def button_handler(pin):
        global pressed
        if not pressed:
            pressed=True
            global ersterGedrueckt
            ersterGedrueckt = pin
    
    while True:
    ....
    

    Wie geht’s weiter?

    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    als Antwort auf: Weekly Challenge – Woche 2 #8210
    Fabian
    Verwalter

    Tipp 2

    Welche Änderungen müsst ihr in eurem Programm von Woche 1 hinzufügen? Hier ein paar Stichpunkte:

    • Ihr müsst ein zweiten Pin als Eingangs-Pin definieren: knopfA = machine.Pin(16, machine.PIN.IN,...)
    • Die Handler-Funktion def button_handler(pin) bleibt, muss aber abgeändert werden. Ihr braucht aber keine zweite Funktion. Diese Handler-Funktion wird sowohl beim Drücken vom Knopf an Pin 16 wie beim Drücken vom Knopf an Pin 17 aufgerufen. In der Variable pin ist der Knopf gespeichert der gedrückt wurde: knopfA oder knopfB.
    • Ihr braucht zwei Triggers im Hauptprogramm: knopfA.irq(trigger=machine...) und knopfB.irq(trigger=machine...)
    • Danach braucht ihr eine Schleife, die fortlaufend überprüft ob eines der Knöpfe gedrückt wurde und welches es war. Dann soll eine Nachricht in der Kommandozeile erscheinen.
    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    als Antwort auf: Weekly Challenge – Woche 2 #8208
    Fabian
    Verwalter

    Tipp 1

    Erst bauen wir die Schaltung. Wir brauchen wieder eine LED mit einem Vorwiderstand in Serie (hintereinander). Zum Beispiel zwischen GP 15 (Pin 20) und Minuspol (Pin 38). Achtet wieder darauf, dass die Anode der LED (das lange Bein) am GP 15 verbunden ist.

    Die zwei Taster, einen für jeden Spieler, bauen wir zwischen jeweils GP 16 (Pin 21) und GP 17 (Pin 22) und dem Pluspol (Pin 36).

    Hier das Schaltbild des Pi Picos zur Hilfe.

    als Antwort auf: Weekly Challenge – Woche 1 #8193
    Fabian
    Verwalter

    Auflösung

    Und die Lösung für die erste Weekly Challenge findet ihr
    hier.

    Ihr könnt den Quellcode aus der Datei in Thonny kopieren und auf euren Pi Pico laden. Wie schnell seid ihr beim Knopfdrücken? Könnt ihr meine 200 Millisekunden schlagen?

    als Antwort auf: Weekly Challenge – Woche 1 #8186
    Fabian
    Verwalter

    Tipp 3

    Welche Schritte müssen programmiert werden? Hier ein paar Stichpunkte:

    • Definition für Handler-Funktion für Knopf programmieren def button_handler(pin): Zeitzähler Differenz berechnen utime.ticks_diff und in die Konsole schreiben print()
    • LED anschlaten –> eine zufällige Zeit warten (z.B. zwischen 5 und 10 Sekunden) –> LED ausschalten
    • Zeitzähler (timer) starten utime.ticks_ms und Millisekunden in Variable speichern
    • Input Request für Knopf mit Handler-Funktion aufrufen button.irq
    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    • Diese Antwort wurde geändert vor 1 Jahr von Fabian.
    als Antwort auf: Weekly Challenge – Woche 1 #8179
    Fabian
    Verwalter

    Tipp 2

    Hier findet ihr die schaltung für die Weekly Challenge – Woche 1.

    Die LED habe ich an GP 15 (Pin 20) und den Taster an GP 16 (Pin 21) gebaut.

    Jetzt fehlt nur noch der Code….

    • Diese Antwort wurde geändert vor 1 Jahr, 1 Monat von Fabian.
    als Antwort auf: Weekly Challenge – Woche 1 #8172
    Fabian
    Verwalter

    TIPP 1

    Als erstes solltet ihr die Schaltung aufbauen. Ihr müsst zwei Input/Output Pins (GP) aussuchen. Zum Beispiel GP 15 (am Pin 20) und GP 16 (am Pin 21).

    Zwischen dem einen GP (z.B. GP 15) und dem Pluspol (3.3V an Pin 36) wird der Taster geschalten. Wenn der Taster gedrückt wird, liegen 3.3V an GP 15 an.

    Zwischen dem anderen GP (GP 16) und dem Minuspol (Pin 38) kommen die LED und der Widerstand in Serie geschalten. Natürlich müsst ihr darauf achten, dass die LED korrekt verpolt ist. Das lange Bein ist die Anode oder Pluspol und muss zum GP des Pi Picos.

    Hier das Schaltbild des Pi Picos zur Hilfe.

    als Antwort auf: Weekly Challenge – Woche 1 #8170
    Fabian
    Verwalter

    Hi Jonathan, als Vorwiderstand, um die LED zu schützen, eigenen sich Werte zwischen 200 und 400 Ohm.

    Je höher der Wert desto weniger Strom fließt und die LED leuchtet weniger. Ist der Wert aber zu klein fließt zu viel Strom und die LED kann kaputt gehen.

    Die Farbringe geben den Wert des Widerstandes an. Bei einem Widerstand mit vier Ringe wäre der 330 Ohm Widerstand Orange-Orange-Braun. Hier sind die Farb-Codes für die 4-Ring und 5-Ring wiederstände:

    Link zu Farbcodes

Ansicht von 11 Beiträgen - 1 bis 11 (von insgesamt 11)