Delphi-PRAXiS
Seite 13 von 17   « Erste     3111213 1415     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Spiel programmieren, Hilfe benötigt. (https://www.delphipraxis.net/157611-spiel-programmieren-hilfe-benoetigt.html)

haentschman 1. Feb 2011 07:48

AW: Spiel programmieren, Hilfe benötigt.
 
klar kannst du das nicht vor dem Programmstart wissen, aber während der Ausführung. Du mußt auch ein wenig Quelltext schreiben, damit der Computer weiß, was er tun soll. :roll:

z.B.

1. Zufallszahl ermitteln
2. z.B. 5 ermittelt
3. Bild Nr. 5 laden
4. in Bild.Tag die 5 eintragen

...jetzt hat das Bild eine eindeutige "Eigenschaft". Der Wert in Tag ist in jedem Bild dann eindeutig.

DeddyH 1. Feb 2011 07:50

AW: Spiel programmieren, Hilfe benötigt.
 
Eben, und dazu muss man ja nur wissen, welche Zahl sich hinter der jeweiligen Grafik verbirgt. Dazu fallen mir mehrere Möglichkeiten ein, von elegant und OOP-konform bis leicht verständlich, aber fehleranfällig.

Connor Temple 1. Feb 2011 07:59

AW: Spiel programmieren, Hilfe benötigt.
 
Meinst du die ListevonDateinamen?
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  ListeVonDateinamen:TStringlist;
  DateinameIndex:Integer;
  i:Integer;
begin
   begin
   for i := 1 to 24 do
  TImage(FindComponent('Image' + IntToStr(i))).Visible := true;
   end;
  Randomize;

  ListeVonDateinamen:=TStringList.Create;
  try
    ListeVonDateinamen.add('H:\Informatik-Bilder\+1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\+4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-1.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-2.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-3.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-4.bmp');
    ListeVonDateinamen.add('H:\Informatik-Bilder\-4.bmp');
    for i:=0 to Form1.ComponentCount-1 do
      if Components[i] is TImage then
      begin
        DateinameIndex:=Random(ListeVonDateinamen.count);
        TImage(Components[i]).Picture.LoadFromFile(ListeVonDateinamen[DateinameIndex]);
        ListeVonDateinamen.Delete(DateinameIndex);
      end;
      finally
   ListeVonDateinamen.Free;
  end;

end;
procedure TForm1.Label19Click(Sender: TObject);
begin
Image16.Visible := False;
end;

procedure TForm1.Label18Click(Sender: TObject);
begin
Image15.Visible := False;
end;

procedure TForm1.Label20Click(Sender: TObject);
begin
Image17.Visible := False;
end;

procedure TForm1.Label3Click(Sender: TObject);
begin
Image1.Visible := False;
end;

procedure TForm1.Label4Click(Sender: TObject);
begin
Image2.Visible := False;
end;

procedure TForm1.Label5Click(Sender: TObject);
begin
Image3.Visible := False;
end;

procedure TForm1.Label6Click(Sender: TObject);
begin
Image4.Visible := False;
end;

procedure TForm1.Label7Click(Sender: TObject);
begin
Image5.Visible := False;
end;

procedure TForm1.Label8Click(Sender: TObject);
begin
Image6.Visible := False;
end;

procedure TForm1.Label9Click(Sender: TObject);
begin
Image7.Visible := False;
end;

procedure TForm1.Label10Click(Sender: TObject);
begin
Image8.Visible := False;
end;

procedure TForm1.Label11Click(Sender: TObject);
begin
Image9.Visible := False;
end;

procedure TForm1.Label12Click(Sender: TObject);
begin
Image10.Visible := False;
end;

procedure TForm1.Label13Click(Sender: TObject);
begin
Image11.Visible := False;
end;

procedure TForm1.Label14Click(Sender: TObject);
begin
Image12.Visible := False;
end;

procedure TForm1.Label16Click(Sender: TObject);
begin
Image13.Visible := False;
end;

procedure TForm1.Label17Click(Sender: TObject);
begin
Image14.Visible := False;
end;

procedure TForm1.Label21Click(Sender: TObject);
begin
Image18.Visible := False;
end;

procedure TForm1.Label22Click(Sender: TObject);
begin
Image19.Visible := False;
end;

procedure TForm1.Label23Click(Sender: TObject);
begin
Image20.Visible := False;
end;

procedure TForm1.Label24Click(Sender: TObject);
begin
Image21.Visible := False;
end;

procedure TForm1.Label25Click(Sender: TObject);
begin
Image22.Visible := False;
end;

procedure TForm1.Label26Click(Sender: TObject);
begin
Image23.Visible := False;
end;

procedure TForm1.Label27Click(Sender: TObject);
begin
Image24.Visible := False;
end;


end.

Das ist mein kompletter momentaner Text, nochmal etwas überarbeitet...

Gibts hier eigentlich ne Spoiler-Funktion, dass die Antwort nicht so lang wird?

Zitat:

Zitat von haentschman (Beitrag 1078697)
klar kannst du das nicht vor dem Programmstart wissen, aber während der Ausführung. Du mußt auch ein wenig Quelltext schreiben, damit der Computer weiß, was er tun soll. :roll:

z.B.

1. Zufallszahl ermitteln
2. z.B. 5 ermittelt
3. Bild Nr. 5 laden
4. in Bild.Tag die 5 eintragen

...jetzt hat das Bild eine eindeutige "Eigenschaft". Der Wert in Tag ist in jedem Bild dann eindeutig.

Du meinst, ich soll die Bilder vor Programmstart den Zahlen zuweisen und dann die Zahlen mit den Bildern verteilen?
Warum bin ich da nicht selbst drauf gekommen?

haentschman 1. Feb 2011 08:06

AW: Spiel programmieren, Hilfe benötigt.
 
...*seufz*...

Delphi-Quellcode:
if Components[i] is TImage then
  begin
    DateinameIndex:=Random(ListeVonDateinamen.count);
    TImage(Components[i]).Picture.LoadFromFile(ListeVonDateinamen[DateinameIndex]);
    TImage(Components[i]).Tag:= DateinameIndex;
    ListeVonDateinamen.Delete(DateinameIndex);
  end;
fertsch...

Quatsch. Eben hab ich gesehen, daß du keine fortlaufenden Bilder hast. Damit kannst du den Index nicht verwenden. Du mußt dir was einfallen lassen, den "Wert" des Bildes zu ermitteln.

DeddyH 1. Feb 2011 08:09

AW: Spiel programmieren, Hilfe benötigt.
 
Da Befüllen der Stringliste kannst Du übrigens mit 2 Schleifen eleganter und weniger fehleranfällig machen.

@haentschman: mit dem Index kommst Du so aber nicht zum Ziel.

Deep-Sea 1. Feb 2011 08:09

AW: Spiel programmieren, Hilfe benötigt.
 
... sry, schwachsinniges Post von mir ... ich sollte erst denken, dann schreiben *gg*

DeddyH 1. Feb 2011 08:22

AW: Spiel programmieren, Hilfe benötigt.
 
Gibt es unter Delphi 3 bereits TStrings.AddObject?

Connor Temple 1. Feb 2011 08:24

AW: Spiel programmieren, Hilfe benötigt.
 
Ich weiß nicht, wo ich das finde, momentan bin ich sowas von verwirrt, vom Lehrer und von allem.
Ich bin echt kurz vorm Aufgeben...

DeddyH 1. Feb 2011 08:26

AW: Spiel programmieren, Hilfe benötigt.
 
Schau doch einfach in die mitgelieferte Hilfe. Ggf. musst Du allerdings erst ein MS-Tool installieren, damit *.hlp-Dateien auch angezeigt werden.

Deep-Sea 1. Feb 2011 08:26

AW: Spiel programmieren, Hilfe benötigt.
 
Zitat:

Zitat von DeddyH (Beitrag 1078707)
Gibt es unter Delphi 3 bereits TStrings.AddObject?

Und selbst wenn nicht: Es reicht, wenn man die Zahlen in der Liste speichert anstatt die kompletten Dateinamen. Dann kann man diese direkt dem Tag zuweisen und den Dateinamen kann man sich zusammensetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.
Seite 13 von 17   « Erste     3111213 1415     Letzte »    

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