Spiel auf Scratch programmieren?
Hallo,
ich bin daran, ein Spiel auf Scratch zu programmieren, in welchem es darum geht, nacheinander erscheinenende Punkte anzuklicken. Diese Punkte sollen immer an bestimmten Koordinaten erscheinen und bei jedem Anklicken eines Punktes soll sich eine Zähler-Variabel um 1 erhöhen. Soweit sieht meine Programmierung wie auf dem Bild aus, jedoch wartet mein Spiel nicht, bis der Spieler den Punkt anklickt, um dann den Zähler um 1 zu erhöhen und dann den nächsten Punkt an der festgelegten Position erscheinen zu lassen, sondern durchläuft die Anweisung direkt, wodurch ich ohne irgendeinen Punkt angeklickt zu haben bei den Koordinaten x29 und x-55 und der Zähler bei 4 ist.
Kann mir da jemand weiterhelfen?
2 Antworten
Ich denke, dass es so ist, dass die ganze Anweisungsfolge durchlaufen wird, sobald eine Maustaste niedergeddrückt wird. Wenn du "Maustaste drücken und loslassen" haben willst - und das ist es wohl, was du eigentlich willst - solltest du die Anweisungsfolge
warte bis Maustaste gedrückt?
warte bis nicht Maustaste gedrückt?
ausprobieren.
Weiterhin ist zu bedenken, dass "Maustaste gedrückt?" einen beliebigen Mausklick registriert. Wenn du auf eine Figur klicken möchtst, kannst du unter günstigen Umständen die Figurfarbe abfagen. Wenn der (oft verwendete) Trick mit der Farbe nicht in Fage kommt, ist die Postion des Mauszeigers abzufragen und durch Rechnung zu entscheiden, ob der Klick in der nächsten Umgebung eines bestimmten Punkts erfolgt ist. Das ist natürlich ein nicht unerheblicher zusätzlicher Aufwand.
Die Mausposition lässt sich in der Kategorie "Fühlen" mit den Wertblöcken "Maus x-Position" und "Maus y-Position" ermitteln.
Ob die nähere Umgebung eines Punkts (x, y) getroffen wurde, lässt sich mit einem logischen Ausdruck der Art
(abs(x - maus xPosition) < 5) und (abs (y - maus y-Position) < 5)
feststellen - dieser Ausdruck muss natürlcih durch Scratch-Blöcke dargestellt werden. Wenn die Zahl 5 und der Vergleichsoperator "<" verwendet wird, bedeutet dies, dass um den Punkt ein Quadrat mit Seitenlänge 8 gebildet wird, in das geklickt werden muss, damit der Punkt als getroffen gilt. Wenn 5 durch eine andere, positive, kleine Zahl ersetzt wird, wird die Größe dieses Trefferquadrats verändert.
Hallo,
das problem ist Du wartest auf einen Mausklick, fragst aber nicht mehr ab auf was geklickt wurde, so reagiert das auf alle deine Mausklicks versuch mal so:
Das gehe zu musst Du natürlch noch anpassen