Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Spiel programmieren, ( if Image1.picture= ???) (https://www.delphipraxis.net/160827-spiel-programmieren-if-image1-picture%3D.html)

Bosgu 2. Jun 2011 21:41

Delphi-Version: 5

Spiel programmieren, ( if Image1.picture= ???)
 
Hallo und guten Tag,

ich bin zur Zeit dran ein kleines Spiel zumachen, leider habe ich nun ein kleines Problem. Ich hatte versucht über die Suchfuntion hier und über google was zu finden, leider erfolsglos.

Nun wollte ich hier mal fragen ob es möglich ist bei einem Image abzufragen ob ein bestimmtes Bild geladen wurde.

Beispiel:

Code:
if Zone1.Picture = (C:\Projekt Duell (end.)\Bilder\Saloon\A1a.png) then
begin
showmessage('peng');
end;
Ich hoffe hier kann mir jemand helfen.

MfG

mkinzler 2. Jun 2011 21:43

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Diese Information musst du gesondert abspeichern.

Bosgu 2. Jun 2011 22:27

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Könntest du mir sagen wie ich die bild information gesondert speichern kann damit meine if abfrage funtioniert?

himitsu 2. Jun 2011 22:49

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Du nimmst eine Stringvariable und wenn du etwas in das Image lädst, dann speicherst du dort den Namen.

Bosgu 2. Jun 2011 23:19

AW: Spiel programmieren, ( if Image1.picture= ???)
 
hab nun versucht mit einem string

Code:
begin
Zone1.Picture.loadfromfile('C:\Projekt Duell (end.)\Bilder\Saloon\A1a.png');
bilda:=('C:\Projekt Duell (end.)\Bilder\Saloon\A1a.png');
end;
oder
Code:
begin
Zone1.Picture.loadfromfile('C:\Projekt Duell (end.)\Bilder\Saloon\A1a.png');
bilda:=Zone1.picture;
end;
und
Code:
if Zone1.Picture = bilda then
begin
showmessage('peng');
end;

kommt dieser Fehler

unit2.pas(222,9) Error: Incompatible types: got "TPicture" expected "AnsiString"

diese beiden typen sind mir leider nicht bekannt

mkinzler 3. Jun 2011 07:20

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Delphi-Quellcode:
if bilda = 'C:\Projekt Duell (end.)\Bilder\Saloon\A1a.png' then
begin
    showmessage('peng');
end;

DeddyH 3. Jun 2011 07:55

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Allerdings finde ich die Speicherung als String nicht unbedingt elegant, mit einem eigenen Typ z.B. wäre das schöner.
Delphi-Quellcode:
type
  TBildTyp = (btIrgendwas, btWasAnderes, btWasGanzAnderes);
Nun setzt man den Bildtyp, kann den elegant ohne String auswerten oder je nach Typ die entsprechende Datei laden (von Platte oder aus den Ressourcen) etc.

nuclearping 3. Jun 2011 09:02

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Zitat:

Zitat von DeddyH (Beitrag 1104369)
Allerdings finde ich die Speicherung als String nicht unbedingt elegant, mit einem eigenen Typ z.B. wäre das schöner.
Delphi-Quellcode:
type
  TBildTyp = (btIrgendwas, btWasAnderes, btWasGanzAnderes);
Nun setzt man den Bildtyp, kann den elegant ohne String auswerten oder je nach Typ die entsprechende Datei laden (von Platte oder aus den Ressourcen) etc.

Daran anknüpfend kann man das dann zB auch so machen:

Delphi-Quellcode:
type
  TZoneType = (ztSaloonA1, ztSaloonA2, ...);

const
  ZoneRootPath = 'C:\Projekt Duell (end.)\Bilder\';
  ZoneImages: Array[TZoneTyp] of String =
    ('Saloon\A1a.png', 'Saloon\A2a.png', ...);

var
  CurrentZoneType: TZoneType;

begin
  ...

  CurrentZoneType := ztSaloonA1;
  Zone1.Picture.LoadFromFile(ZoneRootPath + ZoneImages[CurrentZoneType]);
  Zone1.Tag := Integer(CurrentZoneType);

  ...

  if TZoneType(Zone1.Tag) = ztSaloonA1 then
    begin
      ShowMessage('peng');
    end;

  ...
end;

Bosgu 3. Jun 2011 09:45

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Vielen Dank,

dass mit dem String klappt nun richtig. Aber an das mit den typen trau ich mich nicht rumzuprobieren, muss da noch etwas lernen um damit zurecht zukommen.

Wenn ich noch welche probleme habe wende ich mich an euch.

Danke noch mal.

MfG

Bosgu 4. Jun 2011 10:40

AW: Spiel programmieren, ( if Image1.picture= ???)
 
Hallo ich bins wieder;

hab wieder ein einfaches Problem.

Habe Form1 und Form2.

Form1 fungiert als Hauptmenü was dann From2 öffnet, dies funtioniert auch richtig.

Das Problem ist nach dem man Form2 gewonnen/verloren hat soll man wieder zum Menü und dort neu starten können. Ich kann zwar Form2 visible/enabled false machen aber das löscht sie nicht und wenn der button des menüs aktiviert wird geht schon das durchlaufene programm auf.

Kurz gefasst brauche ich ein Befehl der Form2 erstellt und das alter löscht durch einen button klick.

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr.
Seite 1 von 2  1 2      

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