Discuss Scratch
- Discussion Forums
- » Deutsch
- » Cloud-Game Download ohne Lags! Oder doch?
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Hi, Leute!
Bei meinem Cloud-Game bin ich dabei, den Benutzernamen des Gegners aus der Cloud runterzuladen.
Leider bugt es extrem (Lags, Ausfälle, Funktionsverluste)
Was zur H***e ist hier los?! Habe ich etwas falsch gemacht?!?!
Vor dem skript, was aus jeder Zahl einen Buchstaben macht (Einfach nur viele Falls-Abfragen in diesem Rahmen:
kam noch:
Macht euch bitte nicht über meine Englischkenntnisse lustig, ansonsten freue ich mich (Oder hoffe, dass ich mich freuen kann) auf eure Antworten.
Bei meinem Cloud-Game bin ich dabei, den Benutzernamen des Gegners aus der Cloud runterzuladen.
Leider bugt es extrem (Lags, Ausfälle, Funktionsverluste)
Was zur H***e ist hier los?! Habe ich etwas falsch gemacht?!?!
Vor dem skript, was aus jeder Zahl einen Buchstaben macht (Einfach nur viele Falls-Abfragen in diesem Rahmen:
setze [letter v] auf [1])
wiederhole (Länge von [Looking for opponent v] :: list) mal
blablabla :: #4A4B64
ändere [letter v] um (0)
end
kam noch:
Wenn ich [Nachricht1 v] empfange
warte bis <(☁ Player2) > [0]>
setze [letter v] auf [1]
falls <(☁ Player1) = (Username ID)> dann
wiederhole (Länge von (☁ Player2)) mal
falls <(Zeichen (((letter)) + (1)) von [(☁ Player2)]) = [0]> dann
füge (Zeichen (letter) von [(☁ Player2)]) zu [Looking for opponent v] hinzu
ändere [letter v] um (2)
sonst
füge (verbinde (Zeichen (letter) von [(☁ Player2)]) (Zeichen (((letter)) + (1)) von [(☁ Player2)])) zu [list v] hinzu
ändere [letter v] um (3)
end
end
sonst
wiederhole (Länge von (☁ Player1)) mal
falls <(Zeichen (((letter)) + (1)) von [(☁ Player1)]) = [0]> dann
füge (Zeichen (letter) von [(☁ Player1)]) zu [Looking for opponent v] hinzu
ändere [letter v] um (2)
sonst
füge (verbinde (Zeichen (letter) von [(☁ Player1)]) (Zeichen (((letter)) + (1)) von [(☁ Player1)])) zu [list v] hinzu
ändere [letter v] um (3)
end
end
end
Macht euch bitte nicht über meine Englischkenntnisse lustig, ansonsten freue ich mich (Oder hoffe, dass ich mich freuen kann) auf eure Antworten.
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Hey, antwortet mal jemand?!
Wenigstens, dass das ein nicht bekannter Bug ist, wäre in Ordnung.
Wenigstens, dass das ein nicht bekannter Bug ist, wäre in Ordnung.
- Arnie1_0
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Okay, also das ist ein nicht bekannter Bug
Nein, Spaß. Du hast geschrieben, dass du um den Benutzernamen zu downloaden viele Falls-Abfragen machst. Ich denke, das kann auch (ein) Grund dafür sein, dass das Projekt lagt.
Ich hoffe nur, du hast die Abfragen nicht, um den ganzen Benutzernamen wieder umzuwandeln. Falls du das hast, solltest du einmal versuchen, durch die Zeichen mit zwei Schleife zu literieren.
Um besser (oder überhaupt :'D) helfen zu können, musst du noch schreiben, wie die Namen codiert wurden und ich würde mich auserdem über eine Erklärung deines Skriptes freuen, da ich den Zweck davon nicht finden konnte (vielleicht ist er auch einfach so einfach, dass ich ihn übersehen habe )
Liebe Grüße
Arnie
PS:
Wenn es nur anhällt, bis die Namen heruntergeladen wurden, kannst du es auch versuchen mit einem ‘eigenen Block’ ohne Bildschirmaktualisierung auszuführen aber daran hast du auch selbst gedacht, denke ich.
Nein, Spaß. Du hast geschrieben, dass du um den Benutzernamen zu downloaden viele Falls-Abfragen machst. Ich denke, das kann auch (ein) Grund dafür sein, dass das Projekt lagt.
Ich hoffe nur, du hast die Abfragen nicht, um den ganzen Benutzernamen wieder umzuwandeln. Falls du das hast, solltest du einmal versuchen, durch die Zeichen mit zwei Schleife zu literieren.
Um besser (oder überhaupt :'D) helfen zu können, musst du noch schreiben, wie die Namen codiert wurden und ich würde mich auserdem über eine Erklärung deines Skriptes freuen, da ich den Zweck davon nicht finden konnte (vielleicht ist er auch einfach so einfach, dass ich ihn übersehen habe )
Liebe Grüße
Arnie
PS:
Wenn es nur anhällt, bis die Namen heruntergeladen wurden, kannst du es auch versuchen mit einem ‘eigenen Block’ ohne Bildschirmaktualisierung auszuführen aber daran hast du auch selbst gedacht, denke ich.
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
das ist ein nicht bekannter BugWas meinst du damit? Ich codiere den Benutzernamen zu Zahlen. Bei mir wäre das 201021013021019 bei dir 10180120905001000, ich erkläre mal den Code: Okay, also
Nein, Spaß. Du hast geschrieben, dass du um den Benutzernamen zu downloaden viele Falls-Abfragen machst. Ich denke, das kann auch (ein) Grund dafür sein, dass das Projekt lagt.
Ich hoffe nur, du hast die Abfragen nicht, um den ganzen Benutzernamen wieder umzuwandeln. Falls du das hast, solltest du einmal versuchen, durch die Zeichen mit zwei Schleife zu literieren.
Um besser (oder überhaupt :'D) helfen zu können, musst du noch schreiben, wie die Namen codiert wurden und ich würde mich auserdem über eine Erklärung deines Skriptes freuen, da ich den Zweck davon nicht finden konnte (vielleicht ist er auch einfach so einfach, dass ich ihn übersehen habe )
Liebe Grüße
Arnie
PS:
Wenn es nur anhällt, bis die Namen heruntergeladen wurden, kannst du es auch versuchen mit einem ‘eigenen Block’ ohne Bildschirmaktualisierung auszuführen aber daran hast du auch selbst gedacht, denke ich.
- als erstes ist es gut zu wissen, dass die Buchstaben durch Zahlen ersetzt werden (A durch 1, b durch 2, etc.)
- dann wird noch eine 0 eingefügt nach jedem Zeichen. Zahlen werden durch 0 und die Zahl codiert (01 für 1, 02 für 2, etc.)
- für Zeichen muss ich mir noch eine Codierung überlegen.
- Und durch Zufall ist mir jetzt ein kleiner Fehler aufgefallen: Beim Buchstaben j heißt es Beispielsweise 1003 das könnte jc oder a3 sein.
- Arnie1_0
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Was meinst du damit?Wie du den Namen codierst, meine ich.
Genau das, danke Ich codiere den Benutzernamen zu Zahlen. Bei mir wäre das 201021013021019 bei dir 10180120905001000
Du codierst also den Benutzernamen ca. so …
...
setze [res v] auf []
setze [i v] auf [0]
wiederhole(länge von(Benutzername)) mal
ändere [i v] um (1)
setze [j v] auf [0]
wiederhole (länge von[abcdefghijklmnopqrstuvwxyz0123456789-_]) mal//du kannst natürlich auch ein längeres Alphabet nehmen :D
ändere [j v] um (1)
falls <(zeichen(i) von (Benutzername)) = (Zeichen(j) von [abcdefghijklmnopqrstuvwxyz0123456789-_])> dann
setze [res v] auf (verbinde(res)((j) + (10))
end
end
end
setze [code v] auf (res)
Ich habe bei jedem Index ( a = 1; b = 2; c = 3 ) noch 10 dazu addiert, dass es immer eine zweistellige Zahl gibt. Das hast du nicht gemacht, wie ich es verstanden habe.
Um den Namen jetzt von den Zahlen wieder in Buchstaben umzuwandeln, musst du einfach nur immer zwei Ziffern auswählen und den Buchstaben, der an der Stelle im Alphabet steht einfügen.
Erklärung
Resultat auf ‘blank’ setzen
setze [res v] auf []
index auf 1 setzen (dass i mod 2 immer 1 ergibt bzw. ergeben würde)
setze [i v] auf [1]
jedes zweite Zeichen wird übersprungen - also nur maximale Länge / 2 mal wiederholen
wiederhole ((länge von(code)) / (2)) mal
end
Jetzt wird es ein bisschen komplizierter. Daher mit Zwischenschritten.
Jetzt muss nur noch der literator (i) um 2 erhöht werden, weil schon zwei Zeichen ausgelesen wurden: i ist das aktuelle Zeichen im codierten Benutzernamen:(zeichen(i) von(code))
i + 1 ist das Zeichen dannach:(zeichen((i) + (1)) von (code))
Diese beiden Zeichen hintereinander sind der Zeichenindex + 10 :(verbinde(zeichen(i) von(code))(zeichen((i) + (1)) von (code)))
Also noch 10 abziehen, um den echten index (den Buchstabe als Zahl) zu bekommen:((verbinde(zeichen(i) von(code))(zeichen((i) + (1)) von (code))) - (10))
Diesen Index aus dem Alphabet filtern:(Zeichen((verbinde(zeichen(i) von(code))(zeichen((i) + (1)) von (code))) - (10)) von [abcdefghijklmnopqrstuvwxyz0123456789-_])
… dem Resultat ‘anhängen’:(verbinde(res)(Zeichen((verbinde(zeichen(i) von(code))(zeichen((i) + (1)) von (code))) - (10)) von [abcdefghijklmnopqrstuvwxyz0123456789-_]))
und die Variable aktualisieren:setze[res v] auf (verbinde(res)(Zeichen((verbinde(zeichen(i) von(code))(zeichen((i) + (1)) von (code))) - (10)) von [abcdefghijklmnopqrstuvwxyz0123456789-_]))
ändere [i v] um (2)
Das ganze Skript zusammen sieht also so aus:
...
setze [res v] auf []
setze [i v] auf [1]
wiederhole ((länge von(code)) / (2)) mal
setze[res v] auf (verbinde(res)(Zeichen((verbinde(zeichen(i) von(code))(zeichen((i) + (1)) von (code))) - (10)) von [abcdefghijklmnopqrstuvwxyz0123456789-_]))
ändere [i v] um (2)
end
Bei mir hat dieses Skript noch nicht angefangen zu laggen. So wird aber auch nicht der Benutzername aus der Cloud gefiltert sondern nur wieder in Buchstaben umgewandelt.
Und nebenbei noch: Ich habe das Alphabet, dass verwendet werden soll kopiert und immer wieder eingefügt, da sich daran nichts ändern sollte. Manche speichern es auch in einer Variable, um es kürzer zu machen. Ich habe es hier so gemacht, dass es noch so gut wie möglich übersichtlich bleibt.
Du kannst aber natürlich auch selbst noch (maximal 89) Zeichen dazu schreiben. Es muss nur überall das gleiche Alphabet sein, dass es nicht zu Missverständnissen kommt …
Ich hoffe ich konnte helfen
Liebe Grüße
Arnie
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Ui, ich sehe, du hast dir richtig viel Mühe gegeben, aber ich muss leider sagen, das mein System auf einer ganz anderen Überlegung beruht:
Und dann wird es richtig interessant:
Und natürlich das Skript, das entscheidet ob du
setze [letter v] auf [1]
wiederhole (Länge von (Benutzername)) mal
falls <(Element ((letter) v) von [looking for Username ID v] :: list) = [a]> dann
ersetze Element ((letter) v) von [Looking for Username ID v] durch [1]
sonst
falls <(Element ((letter) v) von [looking for Username ID v] :: list) = [b]> dann
ersetze Element ((letter) v) von [Looking for Username ID v] durch [2]
sonst
... :: grey
end
end
ändere [letter v] um (1)
end
Und dann wird es richtig interessant:
setze [letter v] auf [1]
wiederhole (Länge von [Looking for Username ID v] :: list) mal
falls <(Länge von (Element ((letter) v) von [Looking for Username ID v] :: list)) = [1]> dann
setze [Username ID v] auf ((((Username ID) * (100))) + (Element ((letter) v) von [Looking for Username ID v] :: list))
sonst
setze [Username ID v] auf ((((Username ID) * (1000))) + (Element ((letter) v) von [Looking for Username ID v] :: list))
end
ändere [letter v] um (0)
end
Und natürlich das Skript, das entscheidet ob du
(☁ Player 1)oder
(☁ Player 2)bist und dann die entsprechende Variable auf
(Username ID)setzt.
Nein ich meinte das mit durch Schleife 2 literieren.Was meinst du damit?Wie du den Namen codierst, meine ich.Genau das, danke Ich codiere den Benutzernamen zu Zahlen. Bei mir wäre das 201021013021019 bei dir 10180120905001000
Last edited by Baumus (Aug. 16, 2017 07:04:25)
- Arnie1_0
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
jetzt verstehe ich überhaupt nichts mehr
Welchen Inhalt hat die Liste ‘looking for Username ID’ vorher gehabt? Und warum soll es die Länge des Benutzernamens wiederholen? Und was wäre ein mögliches Resultat des zweiten Skriptes?
Vielleicht veröffentlichst du einfach ein kleines Beispielprojekt - ich verstehe leider überhaupt nicht, was du meinst.
Welchen Inhalt hat die Liste ‘looking for Username ID’ vorher gehabt? Und warum soll es die Länge des Benutzernamens wiederholen? Und was wäre ein mögliches Resultat des zweiten Skriptes?
Vielleicht veröffentlichst du einfach ein kleines Beispielprojekt - ich verstehe leider überhaupt nicht, was du meinst.
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
jetzt verstehe ich überhaupt nichts mehr
Welchen Inhalt hat die Liste ‘looking for Username ID’ vorher gehabt? Und warum soll es die Länge des Benutzernamens wiederholen? Und was wäre ein mögliches Resultat des zweiten Skriptes?
Vielleicht veröffentlichst du einfach ein kleines Beispielprojekt - ich verstehe leider überhaupt nicht, was du meinst.
Ups, das habe ich vergessen:
Die Liste wird so gefüllt:
Wenn ich [ v] empfangeUnd eigentlich habe ich nicht Benutzername sondern Länge von “Looking for Username ID” eingefügt, aber das ist egal, da die Länge von der Liste der vom Benutzernamen entspricht.
setze [letter v] auf [1]
wiederhole (Länge von (Benutzername)) mal
füge (Zeichen (letter) von [(Benutzername)]) als ((letter) v) in [Looking for Username ID v] ein
ändere [letter v] um (1)
end
Das zweite Skript wird angefügt an das Erste und sorgt dafür, dass die einzelnen Ziffern, die das Resultat aus 1 sind zu einem zusammenhängenden Code verarbeitet werden.
Last edited by Baumus (Aug. 17, 2017 07:24:16)
- Arnie1_0
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Aber das Skript hier und das, dass du oben geschrieben hast, kannst du doch auch einfach zusammenfassen, oder nicht? Ups, das habe ich vergessen:
Die Liste wird so gefüllt:Wenn ich [ v] empfangeUnd eigentlich habe ich nicht Benutzername sondern Länge von “Looking for Username ID” eingefügt, aber das ist egal, da die Länge von der Liste der vom Benutzernamen entspricht.
setze [letter v] auf [1]
wiederhole (Länge von (Benutzername)) mal
füge (Zeichen (letter) von [(Benutzername)]) als ((letter) v) in [Looking for Username ID v] ein
ändere [letter v] um (1)
end
Das zweite Skript wird angefügt an das Erste und sorgt dafür, dass die einzelnen Ziffern, die das Resultat aus 1 sind zu einem zusammenhängenden Code verarbeitet werden.
::grey hat
lösche [alles v] aus [looking for username ID v]
setze [i v] auf [0]
wiederhole(länge von(Benutzername)) mal
ändere [i v] um (1)
setze [j v] auf [0]
wiederhole (länge von[abcdefghijklmnopqrstuvwxyz0123456789-_]) mal//du kannst natürlich auch ein längeres Alphabet nehmen :D
ändere [j v] um (1)
falls <(zeichen(i) von (Benutzername)) = (Zeichen(j) von [abcdefghijklmnopqrstuvwxyz0123456789-_])> dann
füge (j) als [letztes v] in [lokking for username ID v] ein
end
end
end
...//dein anderes Skript um die ID zu berechnen
Ich denke einmal, das braucht nicht so viel Arbeitsspeicher als alles manuell zu überprüfen.
Last edited by Arnie1_0 (Aug. 17, 2017 13:55:44)
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Aber dein Skript zum füllen ist eigentlich länger als meines. Was hat das dann für einen Sinn.
- Arnie1_0
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Es füllt die Liste gleich mit dem jeweiligen Index des Zeichens. Du hast als erstes die Zeichen in die Liste kopiert und dann mit dem Index ersetzt (dass mit den vielen Aber dein Skript zum füllen ist eigentlich länger als meines. Was hat das dann für einen Sinn.if (condition) { statement } Abfragen).
Beispiel:
::grey hat
lösche [alles v] aus [looking for username ID v]
setze [i v] auf [0]
wiederhole(länge von(Benutzername)) mal
ändere [i v] um (1)
setze [j v] auf [0]
wiederhole (länge von[abcdefghijklmnopqrstuvwxyz0123456789-_]) mal//du kannst natürlich auch ein längeres Alphabet nehmen :D
ändere [j v] um (1)
falls <(zeichen(i) von (Benutzername)) = (Zeichen(j) von [abcdefghijklmnopqrstuvwxyz0123456789-_])> dann
füge (j) als [letztes v] in [lokking for username ID v] ein
end
end
end
setze [i v] auf [0]
wiederhole (Länge von [Looking for Username ID v] :: list) mal
ändere [i v] um (1)
falls <(Länge von (Element (i) von [Looking for Username ID v] :: list)) = [1]> dann
setze [Username ID v] auf (((Username ID) * (100)) + (Element (i) von [Looking for Username ID v] :: list))
sonst
setze [Username ID v] auf (((Username ID) * (1000)) + (Element (i) von [Looking for Username ID v] :: list))
end
end
falls <(☁ player 1) = []> dann
setze [☁ player 1 v] auf (Username ID)
sonst
falls <(☁ player 2) = []> dann
setze [☁ player 2 v] auf (Username ID)
sonst
sage [Please wait until a player leave the game]
warte bis<<(☁ player 1) = []> oder <(☁ player 2) = []>>
falls<(☁ player 1) = []> dann
setze [☁ player 1 v] auf (Username ID)
sonst
setze [☁ player 2 v] auf (Username ID)
end
end
end
Fertig. Hier kommt nichts mehr!::grey cap
Und noch so nebenbei:
Wenn du den Firefox Browser benutzt und die Scratchblocks komplett angezeigt haben willst, kannst du in die Suchleiste einfach das hier eintippen:
javascript:document.querySelector('#content').style.width='-moz-max-content'; void(0);
Die Beite (-moz-max-content) kannst du natürlich beliebig ändern (Hilfe? => CSS: Physische Längenmaße).
Edit:
Beispiel hinzugefügt
Last edited by Arnie1_0 (Aug. 19, 2017 08:22:46)
- Baumus
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
OK, das ist ein cooles Design, was ich auf jeden Fall verwenden werde, ich verwende leider Mac Safari.
Was würde das denn überhaupt machen
Und noch so nebenbei:
Wenn du den Firefox Browser benutzt und die Scratchblocks komplett angezeigt haben willst, kannst du in die Suchleiste einfach das hier eintippen:Kopieren und einfügen funktioniert oft nicht. Manchmal wird aber auch nur das Wort javascript: gelöscht und dann eingefügt. Das musst du einfach wieder dazu schreiben. Alternativ dazu kannst du es auch (ohne javascript:) in die Browserkonsole (F12) eingeben/einfügen.javascript:document.querySelector('#content').style.width='-moz-max-content'; void(0);
Die Beite (-moz-max-content) kannst du natürlich beliebig ändern (Hilfe? => CSS: Physische Längenmaße).
Edit:
Beispiel hinzugefügt
Was würde das denn überhaupt machen
- Arnie1_0
- Scratcher
100+ posts
Cloud-Game Download ohne Lags! Oder doch?
Es setzt die Breite der Seite (mit -moz-max-content) auf die Breite, die die Seite braucht, um vollständig angezeigt zu werden. void(0) ist das gleiche wie undefined - dass keine neue Seite geladen wird (und es ist einfach kürzer). Dann muss man zwar oft scrollen und es sieht nicht sehr schön aus, man sieht aber alles. Die -moz* methoden funktionieren aber, glaube ich, nur in Firefox. In jedem anderen Browser musst du die Breite wahrscheinlich anders einstellen. Also z.B. in Pixel (px), Zentimeter (cm), Millimeter (mm), Zoll (in), …Was würde das denn überhaupt machenjavascript:document.querySelector('#content').style.width='-moz-max-content'; void(0);
Das könnte dann Beispielsweise so aussehen:
javascript:document.querySelector('#content').style.width='100cm'; void(0);
Freut mich, wenn es dir geholfen hat Auf jeden Fall super Antwort.
- Discussion Forums
- » Deutsch
- » Cloud-Game Download ohne Lags! Oder doch?