![]() |
Spiel programmieren, Hilfe benötigt.
Ich versuche, ein Spiel gegen den Computer zu programmieren, allerdings treten gleich am Anfang ein paar Probleme auf:
Ich habe mir Bilder als BitMap erstellt, die später vom Programm zufällig auf 24 Labels verteilt werden sollen. Wie lade ich die Bilder im Programmtext ins Programm? |
AW: Spiel programmieren, Hilfe benötigt.
Entweder im OnPaint direkt auf das Formular zeichnen oder 24 TImage-Komponenten auf dem Form verteilen und die Bilder dann dort hinein laden.
|
AW: Spiel programmieren, Hilfe benötigt.
Aber immer in zufälliger Verteilung, sonst würde ichs ja wissen.
|
AW: Spiel programmieren, Hilfe benötigt.
Dann erstell Dir ein Array oder eine Liste und "mische" die Einträge. Wie man das macht, steht mehrfach im Forum. Anschließend gehst Du diese Liste durch und verteilst die Bilder auf die Images.
|
AW: Spiel programmieren, Hilfe benötigt.
Und wie lade ich die Bilder im Programmtext?
Da wusste sogar mein Lehrer nicht weiter >.< |
AW: Spiel programmieren, Hilfe benötigt.
Zitat:
|
AW: Spiel programmieren, Hilfe benötigt.
@Caleb: Du glaubst garnicht, wievielen Lehrern mand ass dan sagen müsste ;)
@Topic:
Code:
Alternativ machst du dir soviele TBitmaps wie du verschiedene Bilder hast, lädst dan jedes bild in ein anderes TBitmap und machst dann bei den Images nurnoch
ImageName.Picture.LoadFromFile('Dateiname');
Code:
MFG
ImageName.picture.assign(Bitmap);
Memnarch |
AW: Spiel programmieren, Hilfe benötigt.
Zitat:
Man muß nur wissen wo es steht! Gruß K-H |
AW: Spiel programmieren, Hilfe benötigt.
Was DeddyH meinte (so hab ich das vestanden):
Delphi-Quellcode:
Wichtig dürfte sein, dass die Anzahl der Elemente in der Stringlist >= der Anzahl der TImages ist (- sonst ist die SL leer)
var
ListeVonDateinamen:TStringlist; DatenameIndex:Integer; i:Integer; begin Randomize; //EIGENTLICH SOLLTEN WIR DAS IM FORMCREATE ODER SO MACHEN(nur einmal aufrufen) ListeVonDateinamen:=TStringList.Create; //wir erzeugen eine Stringlist (, die wir unten wieder freigeben) try ListeVonDateinamen.add('C:\pfad\dateiname1.bmp'); //Die Stringlist muss jedes mal befüllt werden ListeVonDateinamen.add('C:\pfad\dateiname2.bmp'); //Oder aus einer Anderen kopiert ListeVonDateinamen.add('C:\pfad\dateiname3.bmp'); //weil Unten Einträge gelöscht werden (damit sie nicht 2 mal vorkommen) ListeVonDateinamen.add('C:\pfad\dateiname4.bmp'); //Übrigens: Dateinamen NIEMALS so hinschreiben, sondern am Besten einen Pfad relativ zu der .exe angeben (s.ParamStr(0)) for i:=0 to Form1.ComponentCount-1 do //hier laufen wir alle auf dem Formular platzierten Komponenten durch begin if Form1.Components[i] is TImage then //und wenn wir ein TImage finden, dann begin DateinameIndex:=Random(ListeVonDateinamen.count) //machen wir erst mal eine Zufallszahl ImageName.Picture.LoadFromFile(ListeVonDateinamen[DatenameIndex]; //und laden das Bild mit dem Dateinamen, der in der Stringlist mit dem Index DatenameIndex liegt ListeVonDateinamen.Delete(DateinameIndex); //dann löschen wir den Eintrag, damit wir nicht 2 mal das gleiche Bild laden end; end; finally //selbst wenn oben seit den try etwas schief läuft kommen wir hier rein FreeAndNil(ListeVonDateinamen); //und geben unsere stringlist wieder frei end; end; Ausserdem kopiere nicht einfach den code (den ich übrigens mangels Delphi nicht getestet habe), sondern sieh dir an was er macht und programmiere es dann selbst, sonst lernst du dabei gar nichts (spreche aus Erfahrung) |
AW: Spiel programmieren, Hilfe benötigt.
Jetzt versteh ich gar nichts mehr -.-
Also, das Spiel, soll ein Spiel gegen den Computer werden, mit den Zahlen von -4 - -1 und den Zahlen 1 - 4 befüllt werden, diese Zahlen sind aber auf Bildern, die ich in Images laden will. Außerdem soll das Spiel in einem 5x5 Feld gespielt werden und man startet immer in der Mitte, die Zahlen in dem Images sollen zufällig auf den restlichen 24 Plätzen verteilt werden. Wenn man das Spiel dann startet darf man nur in seiner vertikalen Reihe eine Zahl auswählen und der Computer wählt dann in der horizontalen Reihe, von der man selbst die Zahl gewählt hat, die möglichst höchste Zahl, also das beste für sich. Ziel des Spiels ist es die höhere Punktzahl als der PC zu bekommen. Die Verteilung der Zahlen ist 3x von jeder Zahl. Ich hab jetzt 24 Images gemacht, wo zufällig etwas reingeladen werden soll. Dazu ein Neu-Button, der die Bilder dort zufällig reinladen soll. Wenn ich das Spiel dann starte will ich auf eins der Images der vertikalen Reihe klicken können, nirgendwo sonst. Dieses Image soll dann verschwinden. Dann soll der PC die für sich beste Zahl wählen. Dort soll dann das X hingesetzt werden und man selbst darf wieder in der vertikalen Reihe wählen, nachdem man einen 2. Weiter-Button drückt und die Punkte zur Zwischenpunktzahl für sich und den PC zusammengezählt werden. Das Spiel endet, wenn man selbst, oder der PC nicht mehr wählen kann. Dann soll die Gesamtpunktzahl verglichen werden und eine Ausgabe erscheinen, wer gewonnen hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz