Discuss Scratch

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:

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.
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.

Linux fedora, Flash 11.2 (release 202)
Windows XP, Flash 20.0 (release 0)


Baumus
Scratcher
100+ posts

Cloud-Game Download ohne Lags! Oder doch?

Arnie1_0 wrote:

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.
Was meinst du damit? Ich codiere den Benutzernamen zu Zahlen. Bei mir wäre das 201021013021019 bei dir 10180120905001000, ich erkläre mal den Code:

  • 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.
Das mit dem eigenen Block habe ich schon versucht. habe ich auch früher schon mal geschrieben. Die Frage, ist nur was das bringen sollte oder könnte.
Arnie1_0
Scratcher
100+ posts

Cloud-Game Download ohne Lags! Oder doch?

Baumus wrote:

Was meinst du damit?
Wie du den Namen codierst, meine ich.

Baumus wrote:

Ich codiere den Benutzernamen zu Zahlen. Bei mir wäre das 201021013021019 bei dir 10180120905001000
Genau das, danke

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.

gehört zusammen wrote:

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-_]))
Jetzt muss nur noch der literator (i) um 2 erhöht werden, weil schon zwei Zeichen ausgelesen wurden:
ä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

Linux fedora, Flash 11.2 (release 202)
Windows XP, Flash 20.0 (release 0)


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:
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.

Arnie1_0 wrote:

Baumus wrote:

Was meinst du damit?
Wie du den Namen codierst, meine ich.

Baumus wrote:

Ich codiere den Benutzernamen zu Zahlen. Bei mir wäre das 201021013021019 bei dir 10180120905001000
Genau das, danke
Nein ich meinte das mit durch Schleife 2 literieren.

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.

Linux fedora, Flash 11.2 (release 202)
Windows XP, Flash 20.0 (release 0)


Baumus
Scratcher
100+ posts

Cloud-Game Download ohne Lags! Oder doch?

Arnie1_0 wrote:

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] empfange
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
Und 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.
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?

Baumus wrote:

Ups, das habe ich vergessen:
Die Liste wird so gefüllt:
Wenn ich [ v] empfange
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
Und 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.
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.
Aber das Skript hier und das, dass du oben geschrieben hast, kannst du doch auch einfach zusammenfassen, oder nicht?

::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)


Linux fedora, Flash 11.2 (release 202)
Windows XP, Flash 20.0 (release 0)


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?

Baumus wrote:

Aber dein Skript zum füllen ist eigentlich länger als meines. Was hat das dann für einen Sinn.
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 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);
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.
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)


Linux fedora, Flash 11.2 (release 202)
Windows XP, Flash 20.0 (release 0)


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.

Arnie1_0 wrote:

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);
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.
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
Baumus
Scratcher
100+ posts

Cloud-Game Download ohne Lags! Oder doch?

Auf jeden Fall super Antwort.
Arnie1_0
Scratcher
100+ posts

Cloud-Game Download ohne Lags! Oder doch?

Baumus wrote:

Arnie wrote:

javascript:document.querySelector('#content').style.width='-moz-max-content'; void(0);
Was würde das denn überhaupt machen
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), …
Das könnte dann Beispielsweise so aussehen:
javascript:document.querySelector('#content').style.width='100cm'; void(0);
Das würde die Seite 100 Zentimeter (also 1 Meter) breit machen. So kann man mit höchster Wahrscheinlichkeit alle Scratchblocks sehen

Baumus wrote:

Auf jeden Fall super Antwort.
Freut mich, wenn es dir geholfen hat

Linux fedora, Flash 11.2 (release 202)
Windows XP, Flash 20.0 (release 0)


Powered by DjangoBB