![]() |
Re: cards.dll benutzen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, hier biddeschön :)
Also ihr seht ja noch nich viel drin, will erst das mit der .dll hinrkiegen, der Rest (den hatte ich auch schonmal zur Hälfte) kommt dann später! |
Re: cards.dll benutzen?
jau...
hättest du mal "meine" genommen dann währe alles gut. Ist wirklich nicht schwer. Die cards.dll (cards32.dll bei Win 95 etc) brauchst du nicht in das Verz. kopieren, die ist bei Windows mit dabei. (Meine guckt automatisch nach ;) ) Die DLL heisst "cards.dll" bei Windows XP. So, der Fehler liegt bei
Delphi-Quellcode:
warum kann ich jetzt nicht auf die schnelle sagen.
cdtinit(CardWidth, CardHeight) //<--<<<;
Bei mir sähe das so aus:
Delphi-Quellcode:
{
// "Kartenfarbe": // Kreuz, Karo, Herz, Pik // oder auch: // Eichel, Schell, Herz, Grün TCardSuits = (suitClubs, suitDiamonds, suitHearts, suitSpades); // Karten: TCardFaces = (faceAce, // Ass faceTwo, // 2 faceThree, // 3 faceFour, // ... faceFive, faceSix, faceSeven, faceEight, faceNine, faceTen, //10 faceJack, // Bube faceQueen, // Dame faceKing // König }
Delphi-Quellcode:
fertisch.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Cards32; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } Karten: TCards; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Karten := TCards.Create; // Unit/Dll initialisieren end; procedure TForm1.FormDestroy(Sender: TObject); begin Karten.Free; // Unit/Dll wieder freigeben und aus dem Hauptspeicher löschen ! end; procedure TForm1.FormPaint(Sender: TObject); var i: Integer; begin // male mal: for i:= 0 to 5 do Karten.DrawCard( Canvas.Handle, Point(20 + i,20 + (i*10)), // an Stelle suitClubs, // Kreuz faceAce, // Ass FALSE // Ne, kein Highlight (werden invertiert wenn True) ); end; end. |
Re: cards.dll benutzen?
Ok, super danke, das klappt jetzt zwar soweit, schade finde ich nur, dass ich nich ganz verstehe was du in deiner cards32.pas machst! Trotzdem danke ;-)
|
Re: cards.dll benutzen?
Die Fehlermeldung kommt daher, dass die Cards32.pas Datei falsch ist. Die Funktionen müssen alle als stdcall deklariert werden (Hinter den Rückgabewert stdcall; schreiben und vor external... nochmal).
Hier ein Beispiel für die Funktion cdtTerm:
Delphi-Quellcode:
und unten dann noch:
function cdtTerm : Integer; stdcall;
Delphi-Quellcode:
Dann läuft das Programm, aber es zeigt nichts an. Das liegt daran, dass du cdtdraw(Form1.Canvas.Handle, 0, 0, 0, 0, 0); nur im Konstruktor aufrufst. Dies muss aber immer beim neuzeichnen des Formulars (also im OnPaint-Event) geschehen.
function cdtTerm; stdcall; external csCards32;
Außerdem solltest du im OnDestroy-Event deines Formulars die Funktion cdtTerm aufrufen :wink: . mfg pitti platsch |
Re: cards.dll benutzen?
Super, dakne fuer die Antworten ich versuch das dann morgen mal hinzukriegen! Finde den Mist komplizierter als den Rest des Pokerspiels :D (Kartenabfrage etc...)
|
Re: cards.dll benutzen?
Zitat:
Zitat:
2.) es ist egal welche Windowsversion (ausgenommen Vista ;) da ich es noch nicht kenne) 3.) Fehlermeldungen bei Fehlern die man lesen kann 4.) übersichtlicher 5.) einfaches Zeichnen eines eigenen Kartenhintergrundes 6.) fällt mir jetzt nicht ein ;) Die andere Unit stellt wirklich nur die Grundfunktionen "ohne alles". Wird die Dll nicht gefunden oder die falsche geladen gibts Probleme. :mrgreen: |
Re: cards.dll benutzen?
Ok, super danke, vielleicht versteh ich den Code ja wenn ich mich nomma genau dransetze! Vielen Dank für eure Hilfe!!!!! :dp:
Da Hab ich nochma ne Frage (sorry :D )
Delphi-Quellcode:
Wo steht denn, was diese ganzen funktionen machen??? Oder hab ich da shcon wieder was falsch verstanden? ^^
TCardInit = function (var dx, dy : Integer) : Integer; stdcall;
TCardTerm = function : Integer; stdcall; TCardDraw = function (const hDC : Cardinal; const x, y, iCard, iFlags : Integer; const dwColor : Cardinal) : Integer; stdcall; TCardDrawExt = function (const hDC : Cardinal; const x, y, dx, dy, iSuit, iFlags : Integer; const dwColor : Cardinal) : Integer; stdcall; TCardAnimate = function (const hDC : Cardinal; const lBack, x, y, lState : Integer) : Integer; stdcall; // Wird anscheinend unter XP nicht mehr unterstützt |
Re: cards.dll benutzen?
Einfach fragen oder in die Hilfe gucken. :mrgreen:
|
Re: cards.dll benutzen?
Also erstens weise ich nochmal auf meine editierten Beitrag weiter oiben hin, da hab ich nomma ne Frage gestellt und dann schon wieder eine :D
Ist es Möglich dass ich der Klasse Cards noch die properties "Bild" und "Farbe" hinzufüge? Somit könnte ich mir meine neue Typendefinition sparen:
Delphi-Quellcode:
Hoffe ihr versteht was ich machen will. Habs auch schon versucht aber es gibt dabei immr Fehler!
type TCard = record
Bild, Farbe: Integer; end; |
Re: cards.dll benutzen?
Code:
CardInit = function liefert die grösse der Karten, Breite x Höhe
CardTerm = function initialisiert die dll CardDraw = function zeichnet eine definierte karte CardDrawExt = function zeichnet eine definierte karte mit bestimmten zus. Parametern CardAnimate = function Wird anscheinend unter XP nicht mehr unterstützt :gruebel: Zitat:
(vill. falsch verstanden was du möchtest :gruebel: ) Du kanns in deinem Spiel aber einen Recordtypen basteln zB. für jeden spieler
Delphi-Quellcode:
type
TPlayerCard = Record Farbe: TCardSuits; // Kreuz, Karo, Herz und so Bild: TCardFaces; // Bube, Dame, ..., 2, 3, ... end; TPlayerHandCards = array [0..5] of TPlayerCard; // jeder bekommt nur 6 Karten oder so ;-) var PlayerOneCards = TPlayerHandCards; procedure SoUndSo... begin PlayerOneCards[0].Farbe := suitHearts; PlayerOneCards[0].Bild := faceAce; //.. end; procedure Werhatwas... begin if (PlayerOneCards[0].Farbe = suitHearts) and PlayerOneCards[0].Bild = faceAce) then ShowMessage('Player 1 hat n Hertz Ass'); //.. end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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