Discuss Scratch

Luprue
Scratcher
2 posts

Jump and run

Hallo erst mal. Ich wollte/will ein Jump and run programmieren. Ich hab in verschiedene Projekte reingeguckt, und wollte generell mal fragen was ihr einem Anfänger empfehlen würdet (gerne auch Tipps wie's in etwa geht):
Den Hintergrund bewegen oder die Figur?
Ganz viele Figuren, bei deren gegenseitigen Berührungen etwas passiert oder mit "Wenn Farbe berührt" arbeiten
Fortbewegen mit Klonen oder der Ursprungsfigur?
Wie programmiere ich die neu entstehenden Klone?

Vielen Dank schon mal wenn jemand hilft.

Luprue
erzeuge Klon von [ v]
We
Wenn ich als Klon entstehe
lösche diesen Klon
Arnie1_0
Scratcher
100+ posts

Jump and run

Hi Luprue!
Da hast du ja eine ganze Menge Fragen

Luprue wrote:

{…} was ihr einem Anfänger empfehlen würdet
Ich würde dir empfehlen, dich erst einmal in Scratch einzuarbeiten und zu probieren, wie du die verschiedenen Blöcke und Funktionen kombinieren kannst, um die besten Resultate zu erzielen. Das ist zwar immer ein bisschen uninteressant (def uninteressant(): langweilig('100%')), es hilft aber später ganz Sicher dabei, gute Projekte zu machen. Das nennt man u.A. auch Erfahrung mit Scratch

Luprue wrote:

Hintergrund oder Figur bewegen
Bei einem Jump'n Run Spiel ist es sinnvoller den Hintergrund und die Figur zu bewegen, da so eine größere Welt gemacht werden kann und man trotzdem noch bis zum Rand laufen kann. Siehe dazu auch Bewegter Hintergrund

Luprue wrote:

Ganz viele Figuren, bei deren gegenseitigen Berührungen etwas passiert oder mit “Wenn Farbe berührt” arbeiten
Einem Anfänger würde ich viele Figuren empfehlen, da das einiges leichter zu realisieren ist. Für die Übersichtlichkeit würde ich Klone erstellen diese als ‘Figuren’ benutzen - so kann man bis zu 300 Figuren in einem ‘Sprite’ kontrollieren. Das ist allerdings noch etwas komplizierter.

Luprue wrote:

Fortbewegen mit Klonen oder der Ursprungsfigur?
Auf jeden Fall mit der Ursprungsfigur fortbewegen! Klone sind für andere Sachen viel besser geeignet.

Luprue wrote:

Wie programmiere ich die neu entstehenden Klone?
Die Klone können, wie dir sicher auch schon aufgefallen ist, alle nur auf ein Event reagieren: wenn sie erstellt werden. Du kannst also A ein Projekt mit kollektiver Intelligenz machen, bei dem alle mehr oder weniger zufällig gespawnt werden und bis zu einem bestimmten Zeitpunkt alle das gleiche machen oder B jedem Klon eine eindeutige ID mitgeben, über die du sie dann einzeln oder in Gruppen ansprechen kannst. Als Beispiel dazu kannst du dir mein Projekt Matrix Clock einmal angucken. Bei diesem habe ich nur eine Figur, die alle Grafiken als Kostüme enthällt und die einfach mehrfach geklont wird (Skript: clock at(x, y) ziemlich weit unten).
Beispiel (nicht getestet):

Wenn die grüne Flagge angeklickt
setze [max_clones v] auf [0]//max_clones ist global
setze [ID v] auf (max_clones)//ID ist lokal

┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

es werden 10 Figuren erstellt::grey hat
wiederhole(10) mal
ändere [max_clones v] um (1)
erzeuge Klon von [mir selbst v]
end

┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

Wenn ich als Klon entstehe
setze [ID v] auf (max_clones)
falls<(ID) = (1)>dann
hier wird der erste Klon programmiert::grey
setze Richtung auf (180 v)
wechsle zu Kostüm [cat v]
wiederhole bis <wird [rand v] berührt>
ändere x um (1)
end
sage [Ich bin da xDDD] für (5) Sek.
lösche diesen klon
end
falls<(ID) = (2)> dann
hier wird der zweite Klon programmiert::grey
wechsle zu Kostüm [fox v]
drehe dich nach rechts um (45) Grad
wiederhole fortlaufend
falls<wird [rand v] berührt> dann
lösche diesen Klon
end
gehe (3) er-Schritt
end
end
falls<<(ID) < (11)> und <(ID) > (2)>>dann
und hier werden die Klone 3 bis 10 Programmiert::grey
wiederhole fortlaufend
wechsle zu Kostüm [rain v]
gehe zu x: ((ID) * (10)) y: (0)
wiederhole bis <wird [rand v] berührt>
ändere y um (-5)
end
end
end

Wenn dir das noch zu kompliziert ist, kannst du aber natürlich auch noch mit mehr Figuren arbeiten. Bei großen Projekten ist es oft auch besser und übersichtlicher mit einzelnen Figuren. Meiner Ansicht nach sind sie nämlich dazu da, die Skripte die zusammen gehören zu gruppieren, dass es übersichtlich bleibt. Bei so etwas kleinem (wie z.B. meine Uhr) reicht dann eine Figur. Oder um es anders auszudrücken:
wenn ich dabei für jedes einzelne Quadrat eine eigene Figur machen wollte (also 72), wäre es so unübersichtlich geworden, dass ich selbst nicht mehr den Überblick hätte, was wo ist und was macht und wenn ich auch nur eine ganz kleine Änderung vornehmen wollte, sie gleich 72 man machen müsste, worauf ich gut verzichten kann.

Viel Spaß noch mit Scratch

Liebe Grüße
Arnie


Edit:
Erklärung zu Klonen ergänzt

Last edited by Arnie1_0 (Oct. 26, 2017 18:27:12)


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


Luprue
Scratcher
2 posts

Jump and run

Danke. Schleifen und so beherrsche ich schon relativ gut, Variablen und Schleifen auch.

Nochmal danke

Last edited by Luprue (Oct. 27, 2017 12:12:04)

Arnie1_0
Scratcher
100+ posts

Jump and run

Ich habe die Antwort erweitert

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


ar55
Scratcher
100+ posts

Jump and run

Schau doch mal im dach wiki

mein Konto

Deutscher Scratch blog
Woran ich arbeite:
Computer simulation beta 0.6
spoiler: Wird cool!!!!!!
mrscratch87
Scratcher
9 posts

Jump and run

Luprue wrote:

Hallo erst mal. Ich wollte/will ein Jump and run programmieren. Ich hab in verschiedene Projekte reingeguckt, und wollte generell mal fragen was ihr einem Anfänger empfehlen würdet (gerne auch Tipps wie's in etwa geht):
Den Hintergrund bewegen oder die Figur?
Ganz viele Figuren, bei deren gegenseitigen Berührungen etwas passiert oder mit "Wenn Farbe berührt" arbeiten
Fortbewegen mit Klonen oder der Ursprungsfigur?
Wie programmiere ich die neu entstehenden Klone?

Vielen Dank schon mal wenn jemand hilft.

Luprue
erzeuge Klon von [ v]
We
Wenn ich als Klon entstehe
lösche diesen Klon

Und für den block mit dem der character nicht durch den boden fällt:
Definiere collision
falls <wird Farbe (Farbe von dem Boden) berührt?> dann
wiederhole bis <nicht <wird Farbe (Farbe von dem Boden) berührt?>>
ändere y um (0.05)


end
end
Wenn du den lila Block erstellst, musst du ein Häkchen bei “Ohne Bildschirmaktualisierung laufen lassen” machen.
Außerdem, den kleinen lila Block musst du in einen “wiederhole fortlaufend” block tun:
Wenn die grüne Flagge angeklickt
wiederhole fortlaufend
collision
end

Last edited by mrscratch87 (Oct. 29, 2017 20:52:02)

Maurinstudios
Scratcher
4 posts

Jump and run

“Schau hinein!”
hoffe, es hilft.

Powered by DjangoBB