Aus Das deutschsprachige Scratch-Wiki

< Scratch-Wiki:Scratch Buch‎ | Entwurf 1

Muss überarbeitet werden, da man keine Texte mehr in Cloud-Variablen abspeichern kann!!!!!

Mit Scratch 2.0 ist es möglich ein Highscore-System zu erstellen. Du kannst so zum Beispiel den besten Spielstand aller Benutzer speichern und anzeigen lassen. Das funktioniert jedoch nur, wenn Du Dich auf der Scratch-Webseite anmeldest, da nur so die sgn. Cloud-Variablen nutzwar sind. Cloud-Variablen sind Variablen, deren Inhalt bei allen Scratch-Benutzern gleich ist. Ändert also ein Nutzer eine Cloud-Variable, so wird die Änderung auch bei allen anderen Nutzern sichtbar.

Erstelle Dir zum Anfang zwei Cloud-Variablen: highscore und highscore-name. In der Variable highscore wird die größte Punktzahl, also der Highscore gespeichert. In highscore-name wird, wie der Name bereits sagt der Name des besten Spielers gespeichert.

Highscore1.png

Wenn das Spiel beendet ist (wenn also ein Highscore gesetzt werden soll) muss als erstes überprüft werden, ob ein neuer Highscore gemacht wurde. Dazu muss man die erreichte Punktzahl und den Highscore vergleichen. Ist die Punktzahl größer als der Highscore, so muss dieser erneuert werden. Dies erreicht man so:

Highscore2.png


Baustelle.png Dieser Artikel ist noch nicht fertig. Bitte nimm keine Änderungen vor, bis der Autor diesen Hinweis entfernt.


Da man keine Texte in Cloud-Variablen speichern kann, muss der Text in Form eines Zahlencodes gespeichert werden. Hierfür legen wir zuerst einmal eine Liste mit allen Buchstaben und Zeichen an, die ein Scratch-Benutzername enthalten. Damit man nicht alles einzeln in einen Block eintippen und in die Liste hinzufügen muss, erstellen wir zuerst einmal eine Variable, die wie die folgende aussieht:

 setze [Alphabet v] auf [abcdefghijklmnopqrstuvwxyz0123456789_-*]
 

Nun brauchen wir nur noch einen einfachen Skript, den Du nachher löschen kannst:

 setze [Schritt v] auf (1)
 wiederhole (Länge von (Alphabet)) mal
 füge (Zeichen (Schritt) von (alphabet)) als [letztes v] in [Alphabet - Liste v] ein
 ändere [Schritt v] um (1)
 

Jetzt, da wir unsere Alphabet-Liste haben, können wir uns immer das richtige Element aus der Liste heraussuchen. Als nächstes brauchen wir eine Zahl, die wir jedem Element der Liste zuordnen. Der Einfachheit wegen benutzen wir einfach die Nummer des jeweiligen Elements. So ist das "a" als erstes in der Liste eingespeichert, wie Du sehen kannst, wenn Du die Liste durch ein Klick auf das Häkchen neben dem Listenname sichtbar machst. Um nun das richtige Element herauszusuchen, das wir brauchen, wenn wir zum Beispiel ein "a" in die Cloud laden wollen, programmieren wir folgenden Skript:

 Wenn ich [In die Cloud laden v] empfange
 setze [Schritt v] auf (1)
 setze [Schritt2 v] auf (0)
 wiederhole bis <(Schritt2)=(Länge von(Antwort))
 ändere [Schritt2 v] um (1)
 setze (Cloud) auf (verbinde(Cloud)(Antwortzahl))
 wiederhole bis <(Element (step) von [Alphabet - Liste v])=(Zeichen (Schritt) von (Antwort))
 ändere [Schritt v] um (1)
 falls <(Länge von (Schritt))=[1]>
 setze [Schritt v] auf (verbinde (0)(Schritt)
 setze [Antwortzahl v] auf (verbinde(Antwortzahl)(Schritt))
 

Der sorgt dafür, dass das Element immer zweistellig ist, indem wir eine Null vor die Nummer des Elements stellen, wenn diese nur einstellig ist. Das wird es uns später einfacher machen, alles zu dekodieren. Nehmen wir nun an, ein Scratcher mit dem (fikitiven) Benutzernamen "A" hat den Highscore erreicht. Unser Skript startet nun und sucht sich das Element der Liste heraus, das "A" beinhaltet. Stellen wir uns dies vereinfacht mit einer Schublade vor: Du möchtest gerne eine Buch aus einem Schrank holen, weißt aber nicht mehr, wo es ist. Du machst also der Reihe nach alle Schubladen auf. Welche Du gerade aufmachen sollst, sagt die Variable "Schritt". Wenn Schritt 1 ist, dann machst du die erste Schublade des Schranks auf. Nun schaust Du nach, was diese Schublade enthält. Sie enthält einen Zettel mit dem Buchstaben "A". Das ist aber nicht das Buch, also änderst du "Schritt" um eins und weißt nun, dass du in der zweiten Schublade suchen musst. Du machst sie auf und siehst, dass dort dein Buch liegt. Du machst die Schublade wieder zu und weißt, dass das Buch in der zweiten Schublade liegt. Die zwei ist aber einstellig, also wandeln wir sie in 02 um. Da Du dauerhaft wissen möchtest, wo dein Buch liegt, trägst Du 02 in eine Zahlenreihe ein. Da alle Zahlen zweistellig sind, brauchst Du dafür keine Trennung, um erkennen zu können, wo eine Zahl anfängt und wo eine aufhört. Jetzt möchtest Du aber immer wissen, wo eine bestimmte Menge von Gegenständen liegt, zum Beispiel das Buch und ein Zettel. Dieses "Paket", bestehend aus Buch und Zettel, ist nun sozusagen unser Benutzername. Um zu wissen, wo ein Paket anfängt und wo es aufhört, setzen wir eine 099 zwischen die einzelnen Pakete. Das ist nötig, weil ein Benutzername ja keine Standardlänge besitzt, er kann beliebig lang sein. Darum kannst Du nicht einfach alle Zahlen abzählen und weißt, wo ein Benutzername zu Ende ist. Mithilfe der 099 weißt Du, wo der benutzername anfängt und wo er aufhört. Nun zurück zu unserem Scratch-Projekt:

Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.