Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pokerkarten während des Spiels erstellen (https://www.delphipraxis.net/86821-pokerkarten-waehrend-des-spiels-erstellen.html)

.chicken 20. Feb 2007 09:13


Pokerkarten während des Spiels erstellen
 
Also ich hab hier im Forum nichts zu meiner Frage gefunden.
Ich programmier momentan ein (noch relativ simples) Pokerspiel.

Anfangs hab ich einfach alle 52Pokerkarten in Photoshop erstellt, in eine ImageList geladen und wenn sie benötigt wurden daraus geladen.

Jetzt möchte ich aber die Karten (die gebraucht werden, nichtmehr alle 52) während des Spiels erstellen, und hab dabei bisher folgendes hinbekommen:
Delphi-Quellcode:
//Ausschnitt aus einer Schleife in der dem Spieler die Karten gegeben werden und halt die Karten
//gezeichnet werden sollen
//In der ImageList sind Bilder von Karo, Herz, Pik und Kreuz mit den Indexen 1-4
      Spieler[j].Zwei[i].Grafik := TBitmap.Create;
      Spieler[j].Zwei[i].Grafik.Width := 50;;
      Spieler[j].Zwei[i].Grafik.Height := 80;
      x := clWhite;
      Spieler[j].Zwei[i].Grafik.Canvas.FillRect(rect(0, 0, 50, 80));
      if Spieler[j].Zwei[i].Farbe < 3 then
        x := clRed
      else
        x := clBlack;
      ImageList1.Draw(Spieler[j].Zwei[i].Grafik.Canvas, 1, 39, Spieler[j].Zwei[i].Farbe);
      Spieler[j].Zwei[i].Grafik.Canvas.Font.Color := x;
      Spieler[j].Zwei[i].Grafik.Canvas.Font.Size := 20;
      Spieler[j].Zwei[i].Grafik.Canvas.Font.Style := [fsBold];
      Spieler[j].Zwei[i].Grafik.Canvas.Font.Name := 'Arial Black';
      Spieler[j].Zwei[i].Grafik.Canvas.TextOut(15, 2, Kartenaufschrift[Spieler[j].Zwei[i].Bild]);
//Hoffe ihr versteht soweit einigermaßen was ich zu tun versuche
Jetzt zu meinem Problem: Erstens, hab ich keine Idee wie ich den Text den ich auf den Canvas schreibe zentrieren soll...geht das nur nach Gfeühl? Also abschätzen mit welchen Einstellungen es zentriert wäre?

Und mein zweites Problem: Die Schrift wird mir zu wenig "weich" (dh Pixelig) gezeichnet (ich hoffe ihr wisst was ich damit meine), kann ich das irgendwie ändern?


MfG und danke im Vorraus! =)


Edit: Achso eins noch...wenn ich jetzt die Größe des Bildes ändere, dh Width und Height kleiner stelle, dann zeigt er nur noch einen Ausschnitt des Bildes, ich hätt aber gerne, dass er das Bild Stretched...wie krieg ich das hin?

Cöster 20. Feb 2007 14:45

Re: Pokerkarten während des Spiels erstellen
 
Zitat:

Zitat von .chicken
Erstens, hab ich keine Idee wie ich den Text den ich auf den Canvas schreibe zentrieren soll

Mit Delphi-Referenz durchsuchenTextExtend kriegst du die Breite und Höhe eines Textes auf einem Canvas heraus. So lässt sich errechnen, wo der Text stehen muss.

Zitat:

Zitat von .chicken
Die Schrift wird mir zu wenig "weich" (dh Pixelig) gezeichnet

Such mal nach Anti-Aliasing bzw. Kantenglättung

Zitat:

Zitat von .chicken
wenn ich jetzt die Größe des Bildes ändere, dh Width und Height kleiner stelle, dann zeigt er nur noch einen Ausschnitt des Bildes, ich hätt aber gerne, dass er das Bild Stretched...wie krieg ich das hin?

Delphi-Referenz durchsuchenTImage.Stretch

.chicken 20. Feb 2007 14:50

Re: Pokerkarten während des Spiels erstellen
 
Danke, das seh ich mir mal an!

.chicken 20. Feb 2007 15:10

Re: Pokerkarten während des Spiels erstellen
 
So, dass mit dem TextExtent hat super geklappt, danke dafür!

Zum Anti-Aliasing hab ich nur folgendes gefunden:
http://www.delphipraxis.net/internal...t=antialiasing

Ich entnehme daraus, dass ich das selbst programmieren müsste und es dafür keine vorgefertigte Möglichkeit gibt, lieg ich damit richtig?

So und zum TImage.Strech...dann müsste ich das Bitmap in n Image packen oder?

Danke shconmal für die bisherige Hilfe

Cöster 20. Feb 2007 15:23

Re: Pokerkarten während des Spiels erstellen
 
Zitat:

Zitat von .chicken
Zum Anti-Aliasing hab ich nur folgendes gefunden:
http://www.delphipraxis.net/internal...t=antialiasing

Ich entnehme daraus, dass ich das selbst programmieren müsste und es dafür keine vorgefertigte Möglichkeit gibt, lieg ich damit richtig?

In Delphi drin gibt es keine solche Lösung, aber kannst die von dir verlinkte Prozedur in dein Projekt reinkopieren.

Zitat:

Zitat von .chicken
So und zum TImage.Strech...dann müsste ich das Bitmap in n Image packen oder?

Joa, glaub schon. Aber zur Ausgabe von Bildern sind Images ja auch gedacht.

Ach, jetzt fällt mir dazu noch ne Möglichkeit ein: [oh]StretchBlt[oh]

PS: Hab mich oben verschrieben, es heißt nicht TImage.Strech, sondern TImage.Stretch (ich editier's oben)

.chicken 20. Feb 2007 15:37

Re: Pokerkarten während des Spiels erstellen
 
Ok, super danke! Jetzt hab ihc aber shcon wieder ne Frage, auch wennse vielleicht nich ganz zum Thread passt aber will dafür jetzt nich extra n neuen aufmachen:
Ich möchte gerne, dass wenn der Flop angezeigt wird, nach jeder der drei Karten ein bisschen gewartet wird, bis die nächste Karte angezeigt wird!
Habs mit Sleep() probiert, aber dann läuft der Rest des Programms (mein Timer im Hitnergrund) nicht weiter!

Gibts auch ne andere Methode dass er auf die nächste Karte wartet? (abgesehn vom Timer)

Corpsman 20. Feb 2007 16:32

Re: Pokerkarten während des Spiels erstellen
 
Also eigentlich sollte das mit Sleep ja gehn.

Aber kannst ja mal ein "Manuelles" sleep machen.

Delphi-Quellcode:
// Wartet Value ms lang.
Procedure Warte(Value:Integer);
var d1 : dword;
begin
  d1 := Gettickcount;
  while Gettickcount - d1 < Value do
    Application.processmessages;
end;
Aber vorsicht habs Blind gecoded.

.chicken 20. Feb 2007 16:38

Re: Pokerkarten während des Spiels erstellen
 
Wow das funktioniert ;-)
Wär nie auf die Idee gekommen das selbst zu schreiben, wobeis ja eig recht simpel is :)

Dankeschöön...das wars erstma soweit, den Rest versuch ich erstmal selber zu lösen, sonst meld ich mich nochmal :)

.chicken 21. Feb 2007 17:40

Re: Pokerkarten während des Spiels erstellen
 
Ok, jetzt nochmal was...
Also das mit dem Spiel klappt soweit alles super, aber will das halt auf ner grafischen Oberfläche haben!
Jetzt lass ich den Flop halt einmal als große Karten darstellen und will ihn dann nochmal auf dem Pokertisch mit kleinen Karten haben! Das klappt zwar mit StretchBlt, aber die Ergebnisse sind sehr Pixelig!

Jetzt wollte ich fragen...macht es Sinn DelphiX dafür zu benutzen (müsste mich darein arbeiten)?
Kann ich damit zB auch den Text glätten?
Würdet ihr mir das empfehlen? :)

.chicken 23. Feb 2007 18:45

Re: Pokerkarten während des Spiels erstellen
 
Kann da denn keiner was zu sagen? Bitte... :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr.
Seite 1 von 2  1 2      

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