Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Labyrinth Spiel-Ist das Möglich? (https://www.delphipraxis.net/157282-labyrinth-spiel-ist-das-moeglich.html)

Patrick6 6. Jan 2011 18:14

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

DeddyH 6. Jan 2011 18:17

AW: Labyrinth Spiel-Ist das Möglich?
 
Gegenvorschlag: poste doch einfach Deinen Code, dann können wir sehen, wieso es nicht läuft.

Patrick6 7. Jan 2011 15:07

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;

DeddyH 7. Jan 2011 15:24

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;

Patrick6 7. Jan 2011 15:33

AW: Labyrinth Spiel-Ist das Möglich?
 
OKay, danke schonmal :)

Patrick6 7. Jan 2011 16:15

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:
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;
Kann ich die beiden ifs nochmal zusammen fassen mit einem finally oder so?
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?

DeddyH 7. Jan 2011 17:12

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.

Patrick6 7. Jan 2011 23:29

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:
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;
Ich hab keine Ahnung, wie ich das dort einbinden könnt...


Grüße und danke für die Hilfe von euch...

Bummi 7. Jan 2011 23:58

AW: Labyrinth Spiel-Ist das Möglich?
 
Bild laden
gegf. suchen wie ClientToScreen tickt
SetCursorPos(x,y)
und weiter gehts...

Patrick6 8. Jan 2011 13:02

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.
Seite 2 von 4     12 34      

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