Discuss Scratch

Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

Hallo,
Ich arbeite gerade an einem “Tetris”
und da lasse ich die Blöcke als Malspuren stehen,
und mein Problem ist, dass ich nicht weiß wie ich eine volle Reihe entfernen kann,
bzw. wie Ich abfragen kann ob eine Reihe voll ist.

Und mein zweites Problem ist,
das ich nicht weiß, wenn eine Reihe weg ist wie ich die darüber liegenden Malspuren an die
unten liegenden Malspuren verbinden kann.

Hier ist das Projekt:
http://scratch.mit.edu/projects/14016954/

Ich würde mich gerne über Hilfe freuen,

Lg Cherryc0ke

My new Game: Tetris
Check it out
TM_
Scratcher
1000+ posts

[Problem] Wie kann ich Malspuren entfernen?

(Nicht erschrecken wegen demlangen Text ich habe es sehr ausführlich erklärt, daher ist es auch so lang)

Erstmal zum scannen, ob eine Reihe voll ist:
Du hast das schonmal geschickt gemacht, denn in einer Reihe stehen alle Blöcke lückenlos nebeneinander. Du kannst jetzt ein Objekt machen, das einfach ein langes Rechteck ist. Dieses beginnt im Block ganz links und endet in dem ganz rechts, darf aber nicht darüber hinaus gehen. Denn er überprüft mithilfe von <wird Farbe weiß berührt?>, ob nun eine Lücke in der Reihe ist oder nicht. Falls ja, soll die Reihe entfernt werden, falls nein, eben nicht.
An deiner Stelle würde ich es so machen, dass dieser “Scanner” Unten anfängt und dann nach jedem Scannen eine Reihe höher geht und nochmal scannt, solange bis er fertig ist. Das geht natürlich auch umgekehrt, also von oben nach unten
Wenn du Listen schon ein wenig kennst, kannst du dann folgendes tun, falls nicht sag mir nochmal bescheid
Also: Wenn der Scanner die Farbe weiß berührt, was also bedeutet, dass es eine Lücke in der Reihe gibt, passiert nichts. Ansonsten wird die aktuelle Reihe (Unten ist z.B. 1, die darüber ist Reihe 2 usw.) in einer Liste gespeichert. Diese muss natürlich vor jedem Scannen geleert werden.
Wenn dann alle Reihen durch gescannt wurden, wird wieder unten angefangen. Falls die Liste die aktuele Reihe enthält, also diese Reihe voll ist, pasiert folgendes:

Die Reihe wird komplett mit weißen Blöcken überstempelt.
Das Objekt geht nach ganz links auf diese Reihe und geht jetzt Spaltenweise vor.
Es schaut sich den Block über sich an (mit wird farbe berührt?) und stempelt diesen darunter, also in die weiße Reihe. Nun wird der abgeschaute Block weiß gemacht. Dann wird geguckt ob der einen Block über sich hat und übernimmt in dem Fall den. Und das bis oben hin.
Nun wird wieder in die Anfangsreihe gesprungen und das Objekt geht einen Block nach rechts und geht wieder die ganze Spalte nach oben hin durch.
Wurden alle Spalten korrigiert, wird wieder nach der Liste gegangen. Doch da alles eine Reihe tiefer ist, muss auch die Liste korrigiert werden. Dazu müssen alle weiteren Listenelemente um 1 verringert werden.

Das ganze sieht komplizierter aus, als es eigentlich ist. Es erfordert Kenntnisse über Variablen und eventuell auch über Listen, aber dein Tetris-Spiel sieht für eienn Anfänger schon sehr gut aus, daher weiß ich nciht, wie weit du schon bist. Du kannst ja versuchen zumindest den Scanner einzubauen, also dass er überprüfen kann, ob eine Reihe voll ist oder nicht und diese dann komplett weiß färben kann. Zu Testzwecken halt.
Danach kann ich dir dann noch einmal da weiterhelfen wo es schwierigkeiten gibt und ich kann dir auch Listen udn Variablen erklären, die sind eigenlich auch nicht schwer wenn man es einmal raus hat

Last edited by TM_ (Nov. 13, 2013 21:52:46)



My YouTube-Account: TM_ (TMtheScratcher)
Join the Google+ Community “Persist” and test the latest Alpha-versions and get news about the desktop-game! Persist
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

Vielen Dank für die schnelle Antwort
Ich werde mich morgen mal dran setzen und das versuchen umzusetzen

My new Game: Tetris
Check it out
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

So, ich versteh das nicht so richtig mit der liste,
wie ich das machen kann.
Wär cool wenn du mir das noch mal erklären könntest, aber sonst funktioniert es schon

My new Game: Tetris
Check it out
TM_
Scratcher
1000+ posts

[Problem] Wie kann ich Malspuren entfernen?

Irgendwie funktioniert dein Spiel nicht mehr. Es stoppt sofort wenn der erste Block den Boden berührt

Aber nun zu den Listen.
Nach jedem Block muss zunächst die Liste geleert werden. Das geht mit dem Block
entferne (alles v) aus Liste [Liste v]

Nun beginnt der Scanner unten und prüft:

falls < wird Farbe weiß berührt?> //Also falls die Reihe nicht voll ist
//passiert nichts
sonst
füge (Reihe) zu Liste [Liste v] hinzu

“Reihe” ist eine Variable. Diese wird vorher, wenn die Liste geleert wird, auf 0 gesetzt.

So sieht die schleife aus, die alles miteinander verbindet:

entferne (alles v) aus Liste [Liste v]
setze [Reihe v] auf (0)
wiederhole <Anzahl der Reihen> mal
ändere [Reihe v] um (1)
falls < wird Farbe weiß berührt?>

sonst
füge (Reihe) zu Liste [Liste v] hinzu

So bekommst du nach dem Scannvorgang eine Liste, die alle vollen Reihen zeigt. Der nächste Schritt ist nun diese Reihen zu löschen, also weiß zu überstempeln. Doch nach jeder Reihe müssen alle nachfolgenden Reihenzahlen in der Liste um 1 verringert werden, weil ja alle Reihen nun eins tiefer liegen.


NOCH IN ARBEIT!

Hab gerade keien Zeit, um weiter zu erklären, ich hoffe du kannst damit erstmal was anfangen. Später schreibe ich dann mehr dazu, wenn du noch eingie Probleme hast

Last edited by TM_ (Nov. 14, 2013 18:15:02)



My YouTube-Account: TM_ (TMtheScratcher)
Join the Google+ Community “Persist” and test the latest Alpha-versions and get news about the desktop-game! Persist
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

Ich hatte gerade nen ein falschen block im script drinne und hab das nun behoben,
und gerade arbeite ich an dem next block,
aber schon mal danke

My new Game: Tetris
Check it out
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

verdammt,
finde keine passende Lösung für das runter setzen
kann mir jemand das bitte erklären wie ich das machen soll?
oder halt lösungsvorschläge ^^

(hier ist die neuere Version: http://scratch.mit.edu/projects/14293547/#player)

My new Game: Tetris
Check it out
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

Habs hin bekommen
ohne listen ^^ allerdings gibts da noch fehler ^^
muss gucken das ich die lös

My new Game: Tetris
Check it out
TM_
Scratcher
1000+ posts

[Problem] Wie kann ich Malspuren entfernen?

das löschen ist irgendwie noch fehlerhaft. Da rutschen irgendwie nicht alle Blöcke nach


My YouTube-Account: TM_ (TMtheScratcher)
Join the Google+ Community “Persist” and test the latest Alpha-versions and get news about the desktop-game! Persist
TM_
Scratcher
1000+ posts

[Problem] Wie kann ich Malspuren entfernen?

bem rübergucken übers script ist mir aufgefallen, dass du objekte immer zeigen läst, dann stempelst und die sichdann verstecken. Das musst du nicht mache,auch im versteckten Zustand stempeln die Korrekt
Zweiter kleiner Tipp: Bei dem Scanner hast du ja einen eigenen Block namesn “Aufrücken” erstellt. Mach dort mal rechtsklick und geh dan auf edit/bearbeiten und klicke dann auf die weiteren Optionen. Dort gibt es eine Checkbox. Kreuze diese an und dann läuft das Programm von “Aufrücken” ohne Bildschirmaktualisierung. Was das heißt: Es behandelt alle Schleifen und Berechnungen blitzschnell und man muss nicht warten. Dadurch wird der Spielablauf flüssiger


My YouTube-Account: TM_ (TMtheScratcher)
Join the Google+ Community “Persist” and test the latest Alpha-versions and get news about the desktop-game! Persist
TM_
Scratcher
1000+ posts

[Problem] Wie kann ich Malspuren entfernen?

Zum Aufrücken: Ichwürde dasa nders gestalten: Ich würde das so machen, dass es in der Reihe anfängt und dann einen nach oben geht, schaut welche farbe der block hat, diesen eins nach unten stempelt (also in die gelöschte reihe), diesen einen block auch löscht und dann wieder eins nach oben geht um den block eins tiefer zu übernehmen udn so weiter. Halt eine ganze Spalte. Erst dann wird die X-Position geändert, um die nächste Spalte zu behandeln. Dabei darf nicht vergessen werden, dass die y-Position wieder der der Reihe entsprechen muss!
Ich glaube dass deswegen das Aufrücken so fehlerhaft ist, da dabei wahrscheinlich falsch vorgegangen wird. Das wiederhole 10 mal und 9 mal sind feste Zahlen, aber eigentlich müsste es sich da auch um variable Werte handeln,denn wird die 2.Oberste Reihe gelöscht, muss ja weniger aufgerückt werden, als bei der untersten reihe.


My YouTube-Account: TM_ (TMtheScratcher)
Join the Google+ Community “Persist” and test the latest Alpha-versions and get news about the desktop-game! Persist
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

Vielen Dank,
habs soweit umgesetzt,
allerdings treten Fehler in der ersten reihe auf.
teilweise auch mitten im Feld.

Last edited by Cherryc0ke (Nov. 15, 2013 23:03:10)


My new Game: Tetris
Check it out
Cherryc0ke
Scratcher
19 posts

[Problem] Wie kann ich Malspuren entfernen?

So, hab den fehler gefunden
Vielen Dank nochmal für die tolle Hilfe

My new Game: Tetris
Check it out
Vyte
New to Scratch
2 posts

[Problem] Wie kann ich Malspuren entfernen?

Verstehe nicht bin neu.
Vyte
New to Scratch
2 posts

[Problem] Wie kann ich Malspuren entfernen?

My browser / operating system: MacOS Macintosh X 10.9, Safari 7.0, Flash 11.9 (release 900)
say []
when green flag clicked
pen up
Lirex
Scratcher
500+ posts

[Problem] Wie kann ich Malspuren entfernen?

Vyte wrote:

My browser / operating system: MacOS Macintosh X 10.9, Safari 7.0, Flash 11.9 (release 900)
say []
when green flag clicked
pen up
Hallo Vyte, erst einmal willkommen bei Scratch!
Wenn du eine explizite Frage hast, zögere nicht, ein eigenes Thema dafür zu eröffnen.
Wenn du dich vorstellen magst, kannst du dies in der Vorstellungsrunde tun. Um Blöcke etc. auszutesten, kann meiner Meinung nach die Freie Unterhaltung herhalten.
Viel Spaß!

Last edited by Lirex (Dec. 2, 2013 20:01:04)


Scratch-DACH-Wiki author


;




Yay, 500+ posts! (05/25/2014)

Powered by DjangoBB