Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Würfelspiel (https://www.delphipraxis.net/44685-wuerfelspiel.html)

Knotti2015 22. Apr 2005 19:14


Würfelspiel
 
Hallo ich suche einen Code für einen Zufallsgenerator welcher bei einem Buttonklick eines aus 6 verschiedene Bitmaps (z1), (z2) aussucht und dies in einer Form anzeigt.

Für einen Würfel.

JasonDX 22. Apr 2005 19:18

Re: Würfelspiel
 
Delphi-Quellcode:
random(6);
dürfte einerseits das erfüllen, was du suchst. Die Funktion Random gibt dir zufallszahlen zurück, durch den Parameter kannst du den Maximalwert setzen (der bei 6 AFAIK 5 is :D )

Das mit den Bitmaps anzeigen:
Dazu ist die Frage, wie du die Bitmaps lagerst ect.
Helfen kann dir dabei der typ Delphi-Referenz durchsuchenTBitmap, die Forensuche und die Hier im Forum suchencase-anweisung ;)

Nur schnell ein bsp:
Delphi-Quellcode:
case random(6) of
  0: Prozedur_zum_Bitmap_zeigen(z1);
  1: Prozedur_zum_Bitmap_zeigen(z1);
  2: Prozedur_zum_Bitmap_zeigen(z1);
  3: Prozedur_zum_Bitmap_zeigen(z1);
  4: Prozedur_zum_Bitmap_zeigen(z1);
  5: Prozedur_zum_Bitmap_zeigen(z1);
//ect.
end;



//Edit: Dabei nicht vergessen, am anfang (im OnCreate) den Zufallsgenerator mit Randomize() initialisieren!

Knotti2015 22. Apr 2005 19:22

Re: Würfelspiel
 
Okay danke das mit der random Sache funktioniert.

Mit dem Bitmap anzeigen könnte mir dieser Code weiterhelfen ?

Delphi-Quellcode:
     Image.Picture.Graphic := Bitmap;   { Grafik durch neues Bitmap ersetzen }
     CurrentFile := '';   { Verweist auf unbenannte Datei }
     Bitmap.Free;

Die Bitmaps wollte ich in den Programmordner legen und sie dann in einem TImage anzeigen lassen.

Matze 22. Apr 2005 19:25

Re: Würfelspiel
 
oder

Delphi-Quellcode:
Image1.Canvas.Draw(0, 0, Bitmap);

Knotti2015 22. Apr 2005 19:26

Re: Würfelspiel
 
Delphi-Quellcode:
Image.Picture.Loadfromfile

JasonDX 22. Apr 2005 19:26

Re: Würfelspiel
 
Wenn du sie in den Programmordner legst, kannst du sie entweder direkt laden (Image1.Picture.Bitmap.LoadFromFile('z1.bmp'); ) oder eben vorher in Bitmaps speichern und die dann anzeigen (z.B. Image1.Canvas.Draw(0, 0, z1); )

Falls du deinen Code verwenden solltest, vergiss nicht, das Bitmap vorher zu erstellen (nachdem du es ja nach der Zuweisung freigibst).
Ich habe aber leichte Zweifel (ws weil ichs noch nie gesehn hab ;) ) dass dein code nicht funktionieren könnt ;)

//Edits: schreibfehler & erkenntnis, dass ich verdammt langsam war :mrgreen:

Knotti2015 22. Apr 2005 19:36

Re: Würfelspiel
 
Delphi-Quellcode:
 (Image1.Picture.Bitmap.LoadFromFile('z1.bmp');
Funktioniert Danke,

achja kann ich auch festlegen das das Ergebnis 6 nicht allsooft vorkommt ?

Master_RC 22. Apr 2005 19:38

Re: Würfelspiel
 
Noch was:

falls du mit dem random() Probleme zwecks der Startreihenfolge hast (0,1,2,3,4,...), dann mach einfach:
Delphi-Quellcode:
random(5)+1
dann kommt mind. die zahl "1" raus ;)

zu dem ergebnis:
davor randomize; schreiben, das "mischt" sozusagen alle zahlen durch ;)
anosnten hast du immer die gleiche schleife aller zufallsgenerierten zahlen!

Luckie 22. Apr 2005 19:53

Re: Würfelspiel
 
Zitat:

Zitat von Knotti2015
Delphi-Quellcode:
 (Image1.Picture.Bitmap.LoadFromFile('z1.bmp');
Funktioniert Danke,

Aber nur so lange das Arbeitsverzeichnis sich nicht ändert. Ermittle leiber den Pfad zur Exe mit Delphi-Referenz durchsuchenParamStr.

-NIP- 22. Apr 2005 19:57

Re: Würfelspiel
 
Ich würde beim Programmstart den Zufallsgenerator immer neu intialisieren, weil sonst immer die gleichen
"zufälligen" Zahlen rauskommen. Das kannst du mit
Delphi-Quellcode:
Randomize;
machen

-NIP-

Knotti2015 22. Apr 2005 20:10

Re: Würfelspiel
 
Okay allesdings wnen ich die exe immer im gleichen verzeichnis wie die bitmaps habe ist es doch okay.
Lucky du weist doch das ich ein Noob bin.

Binärbaum 22. Apr 2005 20:42

Re: Würfelspiel
 
Zitat:

Zitat von Master_RC
Noch was:

falls du mit dem random() Probleme zwecks der Startreihenfolge hast (0,1,2,3,4,...), dann mach einfach:
Delphi-Quellcode:
random(5)+1
dann kommt mind. die zahl "1" raus ;)

Das hat aber den Nachteil, dass nur Zahlen im Bereich von 1 bis 5 ausgegeben werden, die 6 kommt nie vor. Richtig wäre:
Delphi-Quellcode:
random(6)+1
MfG
Binärbaum

3_of_8 22. Apr 2005 21:07

Re: Würfelspiel
 
Zitat:

Zitat von Knotti2015
Okay allesdings wnen ich die exe immer im gleichen verzeichnis wie die bitmaps habe ist es doch okay.
Lucky du weist doch das ich ein Noob bin.

Klar, aber wenn auf einem anderen PC das ganze z.B. unter C:\Spiele\Würfelspiele\Würfel\ ist funzt es dort nicht.

setze einfach vor den Dateiname deiner bmps immer extractfilepath(application.exename)

malo 22. Apr 2005 21:14

Re: Würfelspiel
 
Zitat:

Zitat von 3_of_8
Zitat:

Zitat von Knotti2015
Okay allesdings wnen ich die exe immer im gleichen verzeichnis wie die bitmaps habe ist es doch okay.
Lucky du weist doch das ich ein Noob bin.

Klar, aber wenn auf einem anderen PC das ganze z.B. unter C:\Spiele\Würfelspiele\Würfel\ ist funzt es dort nicht.

setze einfach vor den Dateiname deiner bmps immer extractfilepath(application.exename)

Warum so kompliziert? Einfach ParamStr(0) dürfte reichen ;)

Also etwa so:

Delphi-Quellcode:
deinPfad := ParamStr(0) + 'EinBitmap.bmp';

Matze 22. Apr 2005 21:22

Re: Würfelspiel
 
Zitat:

Zitat von malo
Delphi-Quellcode:
deinPfad := ParamStr(0) + 'EinBitmap.bmp';

sicher?

Ich meine, ParamStr(0) gibt den kompletten Pfad zur exe zurück. Man müsste also noch ExtractFilePath aufrufen, zumindest mache ich das immer so.

Binärbaum 22. Apr 2005 21:26

Re: Würfelspiel
 
Zitat:

Zitat von Matze
Ich meine, ParamStr(0) gibt den kompletten Pfad zur exe zurück. Man müsste also noch ExtractFilePath aufrufen, zumindest mache ich das immer so.

Und das ist auch gut so. Paramstr(0) gibt nämlich wie schon erwähnt, den vollständigen Pfad zur .EXE zurück.

MfG
Binärbaum

JasonDX 22. Apr 2005 21:28

Re: Würfelspiel
 
Zitat:

Zitat von Matze
Zitat:

Zitat von malo
Delphi-Quellcode:
deinPfad := ParamStr(0) + 'EinBitmap.bmp';

sicher?

Ich meine, ParamStr(0) gibt den kompletten Pfad zur exe zurück. Man müsste also noch ExtractFilePath aufrufen, zumindest mache ich das immer so.

Stimmt.
Als erster Parameter wird immer der Exename inklusive Pfad übergeben. ParamStr(0) holt sich also nix anderes als den ersten Parameter der übergeben wurde, also den Pfad + Exename. -> ExtractFilePath muss davor, um nur den Pfad rauszukriegen ;)

PS: Application.ExeName übergibt auch nix anderes als ParamStr(0) :D

Knotti2015 22. Apr 2005 22:13

Re: Würfelspiel
 
Image1.Picture.Bitmap.LoadFromFile('z1.bmp');
Bei mir geht das auf jedem Rechner...

Wie kann ich z1.bmp durch eine Edit1 Box ersetzten wo dann der Pfad angegeben werden muss...

malo 22. Apr 2005 22:15

Re: Würfelspiel
 
Zitat:

Zitat von Knotti2015
Image1.Picture.Bitmap.LoadFromFile('z1.bmp');
Bei mir geht das auf jedem Rechner...

:roll:

Zitat:

Zitat von Knotti2015
Wie kann ich z1.bmp durch eine Edit1 Box ersetzten wo dann der Pfad angegeben werden muss...

Erm...
Delphi-Quellcode:
Image1.Picture.Bitmap.LoadFromFile(Edit1.Text)
:wall:

fkerber 22. Apr 2005 22:59

Re: Würfelspiel
 
Hi!

Zitat:

Zitat von Knotti2015
Image1.Picture.Bitmap.LoadFromFile('z1.bmp');
Bei mir geht das auf jedem Rechner...

Theoretisch ja.
Es versagt dann, wenn das "Arbeitsverzeichis" deiner Anwendung geändert wird, z.B. durch die Verwendung eines OpenDialogs, in dem der User dann den Ordner wechselt.

Ciao Frederic

3_of_8 23. Apr 2005 10:37

Re: Würfelspiel
 
@Malo:

Delphi-Quellcode:
if ParamStr(0)<>Application.ExeName then Ich.Essen(Besen.Handle);
:mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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