AW: Labyrinth Spiel-Ist das Möglich?
hmm...ich bekomm das einfach nicht hin. Hab es mal mit einem Panel versucht aber dann lief es nicht und einen Bereich festzulegen hab ich auch nicht hinbekommen...Könntest du vielleicht mal den ganzen Code posten? Vielleicht versteh ichs dann besser
|
AW: Labyrinth Spiel-Ist das Möglich?
Gegenvorschlag: poste doch einfach Deinen Code, dann können wir sehen, wieso es nicht läuft.
|
AW: Labyrinth Spiel-Ist das Möglich?
Hey, also ich habe noch nichtmal viele Ideen, wie ich das mit Codes anwenden könnte, deshalb hab ich es einfach mal so dazugeschrieben, wie ich mir es ungefähr vorstell. Vielleicht könnt ihr mir ja ein wenig helfen.
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin {wenn Farbe blau, fängt Pen an zu zeichnen} {Versuch: if Pixel[x,y] := blue then} Image1.Canvas.MoveTo (X, Y); end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin begin {wenn Pen "aktiviert", dann} if ssLeft in Shift then Image1.Canvas.LineTo(X, Y) end; end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin {wenn farbe rot, dann pen deaktivieren) {ShowMessage(Gewonnen!)} end; |
AW: Labyrinth Spiel-Ist das Möglich?
Ich halte es eigentlich für keine gute Idee, die Farbe der Zeichenfläche auszuwerten, aber wenn es denn sein muss:
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Image1.Canvas.Pixels[x,y] = clBlue then begin //PenActive soll eine private Variable sein PenActive := true; Image1.Canvas.MoveTo (X, Y); end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if PenActive and (ssLeft in Shift) then Image1.Canvas.LineTo(X, Y) end; |
AW: Labyrinth Spiel-Ist das Möglich?
OKay, danke schonmal :)
|
AW: Labyrinth Spiel-Ist das Möglich?
Also ich hab das jetzt so weit...Mein Code für ein 'Game Over' klappt aber noch nicht ganz. Er sieht so aus:
Delphi-Quellcode:
Kann ich die beiden ifs nochmal zusammen fassen mit einem finally oder so?
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin begin if PenActive and (ssLeft in Shift) then {if ssLeft in Shift then} Image1.Canvas.LineTo(X, Y); end; begin; if Image1.Canvas.Pixels[x,y] =clyellow then PenActive := false; end; begin if PenActive and (Image1.Canvas.Pixels[x,y] =clyellow) then ShowMessage('Game Over'); end; end; Und dann sollte ja auch, wenn GameOver kommt, die Spur gelöscht werden. das müsste ja auch noch in diese Abfrage rein...if PenActive and (Image1.Canvas.Pixels[x,y]=clyellow) then Image1.Canvas.Pen.Destroy...oder so ähnlich? |
AW: Labyrinth Spiel-Ist das Möglich?
Da würde ich einmal durchsteppen. Deine Setzung von "begin"s und "end"s ist sehr kreativ, daran wird es vermutlich liegen.
|
AW: Labyrinth Spiel-Ist das Möglich?
Hab jetzt einfach bei MouseMove nur die Message anzeigen, wenn die gelbe Linie berührt wird und bei MouseUp dann PenActive:=false...so klappt das!
Ich schließe aber gleich meine nächste Frage an, die ich noch hab. Ich möchte, nachdem ein "Level" abgeschlossen ist, direkt das nächste laden. Ich zeige ja dann eine MEssage und wenn ich dann auf okay klicke, sollte das nächste geladen werden...Code bis dato:
Delphi-Quellcode:
Ich hab keine Ahnung, wie ich das dort einbinden könnt...
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if PenActive and (Image1.Canvas.Pixels[x,y] = clred) then ShowMessage('Herzlichen Glückwunsch! Sie haben dieses Level geschafft! Weiter gehts mit dem Nächsten!'); {Image1.Picture.Bitmap.LoadFromFile('C:\Dokumente und Einstellungen\Jäger\Desktop\Delphi7\Bilder\Labyrinth2.bmp');} PenActive := false; end; Grüße und danke für die Hilfe von euch... |
AW: Labyrinth Spiel-Ist das Möglich?
Bild laden
gegf. suchen wie ClientToScreen tickt SetCursorPos(x,y) und weiter gehts... |
AW: Labyrinth Spiel-Ist das Möglich?
DAs hab ich jetzt so halbwegs hinbekommen. Auf eine etwas andere Art und Weise.
Jetzt noch eine Frage. Ist es möglich in einem Bereich im Image per prozedur die Farbe zu ändern? Könnte dies für Checkpoints bei dem SPiel gebrauchen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz