i

Update

Das Modell aktualisieren

Die update-Funktion ist dafür zuständig, das Modell zu aktualisieren. Sie erhält eine Nachricht und das aktuelle Modell und gibt das neue Modell zurück. Die Nachrichten, die an die update-Funktion gesendet werden können, sind in Elm typischerweise im Typ Msg definiert.

Nimm n

In unserem Fall sind die Nachrichten Nimm 1, Nimm 2 und Nimm 3 möglich und werden durch Klicken auf die Buttons zum Ziehen der Streichhölzer gesendet. Die Gedanken zur Implementierung der update-Funktion könnten so aussehen:

Wir müssen uns überlegen, wie wir die Nachrichten Nimm 1, Nimm 2 und Nimm 3 in der update-Funktion verarbeiten wollen. Allen gemeinsam ist, dass sie eine Zahl n enthalten, die die Anzahl der zu ziehenden Streichhölzer angibt. Die Zahl n können wir durch Pattern Matching aus der Nachricht extrahieren.

Wenn die Zahl der zu ziehenden Streichhölzer kleiner als die Anzahl der verbleibenden Streichhölzer ist, wird die Anzahl der verbleibenden Streichhölzer um n reduziert und der aktuelle Spieler gewechselt.

Wenn die Anzahl der zu ziehenden Streichhölzer der Anzahl der verbleibenden Streichhölzer entspricht, hat der aktuelle Spieler verloren, der andere Spieler also gewonnen. Am Zug ist dann kein Spieler mehr.

Wenn die Anzahl der zu ziehenden Streichhölzer größer als die Anzahl der verbleibenden Streichhölzer ist, ist der Zug ungültig und es passiert nichts, das Modell bleibt also unverändert.

Um die Implementierung übersichtlich zu halten, bietet es sich an den anderen Spieler in einem let-Ausdruck zu berechnen.

Aufgabe 1

Implementiere die update-Funktion, die eine Nachricht und das aktuelle Modell entgegennimmt und das neue Modell zurückgibt.
update : Msg -> Model -> Model
update msg model =
    let
        andererSpieler =
            if model.amZug == ???
    in
    case msg of
        ??? ->
            if model.rest - n > 0 then
                ???

            else if ???
                ???

            else
                ???

Suche

v
8.2.3.6.3
dev.inf-schule.de/deklarativ/fp_elm/dynamischewebseiten/nimspiel/update
dev.inf-schule.de/8.2.3.6.3
dev.inf-schule.de/@/page/JBXCe6JB26uR97nc

Rückmeldung geben