Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Démonstration de CARDS.DLL | |
|
+3Ouf_ca_passe Klaus papydall 7 participants | |
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 1:34 | |
| - Code:
-
rem ============================================================================ rem Démonstration de CARDS.DLL rem Par Papydall rem ============================================================================ ' ============================================================================== ' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ' ============================================================================== rem La DLL "cards.dll" contient des images de carte à jouer qui sont utilisées rem dans de nombreux jeux sur Windows. rem Cette DLL se trouve sur votre PC. rem La DLL "cards.dll" exporte cinq fonctions qui sont : rem ' ============ rem ' cdtAnimate rem ' ============ rem Anime le dos des cartes. Elle fonctionne uniquement avec des cartes de taille rem normale dessinées avec la fonction "cdtDraw". rem Cela marche suivant le dos des cartes (paramètre "Card" à 56, 63, 64 et 65) rem et la version de Windows. rem Il faut incrémenter le paramètre "Etat" partant de "0" puis le remettre à "0" rem lorsque la fonction retourne "0". rem ' ========= rem ' cdtDraw rem ' ========= rem Dessine une carte à jouer (cette fonction est détaillée en peu plus bas). rem ' ============ rem ' cdtDrawExt rem ' ============ rem Identique à la fonction "cdtDraw". rem La seule différence est que cette fonction possède deux paramètres suplémentaires rem qui vous permetteront d indiquer la taille (largeur et hauteur) des cartes. rem ' ========= rem ' cdtInit rem ' ========= rem Initialise la DLL. rem Les deux paramètres permettent de récupèrer la largeur et la hauteur des cartes à jouer. rem ' ========= rem ' cdtTerm rem ' ========= rem Libère les ressources allouées. rem ============================================================================ ' IMPORTANT ! rem Vous devez respecter les majuscules et les minuscules pour les noms des fonctions rem que vous importez. rem Il n est pas nécessaire de spécifier le chemin complet de la DLL "cards.dll" rem puisqu elle se trouve dans le répertoire "System32" de Windows. rem ============================================================================ rem Paramètre Description rem HDC Handle du contexte de périphérique dans lequel le tracé de rem la carte à jouer sera effectué. rem X,Y Position de la carte à jouer en pixel. rem Card Numéro (appelé égalemnt ID) de la carte à jouer. rem Typ Type de la carte. Les valeurs possibles sont "0", "1" et "2" rem (permet d inverser les couleurs). rem Couleur Couleur de fond de la carte. Par défaut, cette couleur est blanche. rem ============================================================================ ' Tableau récapitulant les valeurs possibles du paramètre "Card" de la fonction "cdtDraw". rem _________________________________________ rem | | rem | N° Trèfle Carreau Coeur Pique | rem | As 0 1 2 3 | rem | 2 4 5 6 7 | rem | 3 8 9 10 11 | rem | 4 12 13 14 15 | rem | 5 16 17 18 19 | rem | 6 20 21 22 23 | rem | 7 24 25 26 27 | rem | 8 28 29 30 31 | rem | 9 32 33 34 35 | rem | 10 36 37 38 39 | rem | Valet (J) 40 41 42 43 | rem | Dame (Q) 44 45 46 47 | rem | Roi (K) 48 49 50 51 | rem |_________________________________________| rem rem Si le paramètre "Typ" vaut "1", le paramètre "Card" de la fonction "cdtDraw" rem possède également quinze autres valeures qui sont : rem "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", rem "67" et "68". rem ' REMARQUE : la valeur "66" n'existe pas! rem ============================================================================ rem Les images qui sont affichées au dos de la carte à jouer peuvent être rem différentes en fonction des versions de Windows et donc de la DLL. rem ' ASTUCE : rem Lorsque le paramètre "Typ" de la fonction "cdtDraw" vaut "1", vous pouvez alors rem changer la couleur de fond des 52 cartes à jouer (ainsi que pour le dos de la carte "53") rem grâce au paramètre "Couleur". ' ============================================================================== ' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ' ============================================================================== Init() Init_DLL() Demo() Liberer_Ressources() end rem ============================================================================ SUB Init() dim HDC% : ' Handle du contexte de périphérique dans lequel le tracé de la ' carte à jouer sera effectué. dim ret% : ' Valeur de retour de l'appel à la DLL dim w%,h% : ' pour récupérer la largeur et la hauteur de la carte width 0,1250 : height 0,800 picture 10 : full_space 10 : ' On dessine les cartes à jouer sur un PICTURE HDC% = handle_canvas(10) : ' On détermine le Handle Device Control END_SUB rem ============================================================================ ' Initialiser la DLL. les deux paramètres permettent de récuperer la largeur ' et la hauteur des cartes SUB Init_DLL() dll_on "cards.dll" ret% = dll_call2("cdtInit",adr(w%),adr(h%)) END_SUB rem ============================================================================ ' Dessiner les cartes à jouer SUB Demo() dim_local i for i = 0 to 11 : ' les 12 premières cartes ret% = dll_call6("cdtDraw",HDC%,20+i*100,20,i,0,0) next i
for i = 12 to 23 : ' les 12 cartes suivantes ret% = dll_call6("cdtDraw",HDC%,20+(i-12)*100,20+120,i,0,0) next i
for i = 24 to 35 : ' les 12 cartes d'après ret% = dll_call6("cdtDraw",HDC%,20+(i-24)*100,20+240,i,0,0) next i
for i = 36 to 47 : ' encore 12 autres cartes ret% = dll_call6("cdtDraw",HDC%,20+(i-36)*100,20+360,i,0,0) next i
for i = 48 to 51 : ' les 4 dernières cartes ret% = dll_call6("cdtDraw",HDC%,20+(i-48)*100,20+480,i,0,0) next i
ret% = dll_call6("cdtDraw",HDC%,20+4*100,20+480,52,0,0) : ' Afficher une carte retournée
for i = 53 to 59 ret% = dll_call6("cdtDraw",HDC%,20+(i-48)*100,20+480,i,1,0) : ' Afficher le dos des cartes next i for i = 60 to 65 ret% = dll_call6("cdtDraw",HDC%,20+(i-60)*100,620,i,1,0) : ' Afficher le dos des cartes next i ' Le N° 66 n'existe pas ! for i = 67 to 68 ret% = dll_call6("cdtDraw",HDC%,20+(i-60)*100,620,i,1,0) : ' Afficher le dos des cartes next i END_SUB rem ============================================================================ ' Libèrer les ressources allouées SUB Liberer_Ressources() ret% = dll_call0("cdtTerm") dll_off END_SUB rem ============================================================================ rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ============================================================================
- Le résultat:
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 1:39 | |
| Bel exemple instructif, Papydall ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 1:49 | |
| Merci Klaus. Une autre démo ... - Code:
-
rem ============================================================================ rem Demo Cards.DLL rem Par Papydall rem ============================================================================
Demo()
end rem ============================================================================ SUB Demo() Constantes() Variables() GUI() Init() Deal() Destroy() END_SUB rem ============================================================================ SUB Constantes() ' Coordonnées x,y des jeux des 4 joueurs (Nord, Est, Sud, Ouest) dim NORTHx : NORTHx = 150 dim NORTHy : NORTHy = 020 dim EASTx : EASTx = 280 dim EASTy : EASTy = 140 dim SOUTHx : SOUTHx = 150 dim SOUTHy : SOUTHy = 280 dim WESTx : WESTx = 020 dim WESTy : WESTy = 140 END_SUB rem ============================================================================ SUB Variables() dim xpix%, ypix% : ' Dimensions de la carte dim crd(52),xlt(52) : ' jeu de 52 cartes dim HDC% : ' Handle Device Control dim ret% : ' Retour de l'appel à DLL_CALLx END_SUB rem ============================================================================ SUB GUI() picture 10 : width 10,520 : height 10,400 : left 10,30 : top 10,20 caption 0, "Demo Cards.DLL" END_SUB rem ============================================================================ SUB Init() dim_Local i,j For i = 1 To 52 : crd(i) = i : next i For i = 1 To 4 : xlt(13*i) = i - 1 : next i : ' Les as For j = 2 To 13 : ' 2 au roi K For i = 0 To 3 : xlt(j-2 + 13*i + 1) = 4*(j-1) + i : next i next j HDC% = handle_canvas(10) dll_on "cards.dll" ret% = dll_call2("cdtInit",adr(xpix%),adr(ypix%)) : ' Initialisation de la DLL END_SUB rem ============================================================================ ' Melanger les cartes SUB Shuffle() dim_local i,tmp,n for i = 1 to 52 : crd(i) = i : next i for i = 1 to 52 n = int(rnd(52)+1) : tmp = crd(i) : crd(i) = crd(n) : crd(n) = tmp next i END_SUB rem ============================================================================ ' Trier et afficher les jeux des 4 mains SUB Sort_Draw(nHand, xpos, ypos) dim_Local i,j, nSt, nEnd, tmp nSt = nHand * 13+1 nEnd = nSt + 12 For i = nSt To nEnd For j = nSt To i-1 If crd(i) > crd(j) tmp = crd(i) : crd(i) = crd(j) : crd(j) = tmp End_if next j next i For i = nSt To nEnd ret% = dll_call6("cdtDraw",HDC%, xpos+(i-nSt)*12,ypos,xlt(crd(i)),0,0) next i END_SUB rem ============================================================================ SUB Deal() Shuffle() Sort_Draw(0,NORTHx,NORTHy) Sort_Draw(1,SOUTHx,SOUTHy) Sort_Draw(2,EASTx, EASTy) Sort_Draw(3,WESTx,WESTy) END_SUB rem ============================================================================ ' Libérer les ressources SUB Destroy() ret% = dll_call0("cdtTerm") END_SUB rem ============================================================================
- ... et le résultat:
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 1:54 | |
| Super ! On a là la boite à outils pour la réalisation d'un jeu de cartes ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 2:27 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 4:07 | |
| Tiens, c'est curieux: si dans - Code:
-
' Trier et afficher les jeux des 4 mains SUB Sort_Draw(nHand, xpos, ypos) dim_Local i,j, nSt, nEnd, tmp nSt = nHand * 13+1 nEnd = nSt + 12 For i = nSt To nEnd For j = nSt To i-1 If crd(i) > crd(j) tmp = crd(i) : crd(i) = crd(j) : crd(j) = tmp End_if next j next i For i = nSt To nEnd ret% = dll_call6("cdtDraw",HDC%, xpos+(i-nSt)*12,ypos,xlt(crd(i)),0,0) next i END_SUB j'insère un "WAIT 200", ça bloque tout: - Code:
-
' Trier et afficher les jeux des 4 mains SUB Sort_Draw(nHand, xpos, ypos) dim_Local i,j, nSt, nEnd, tmp nSt = nHand * 13+1 nEnd = nSt + 12 For i = nSt To nEnd For j = nSt To i-1 If crd(i) > crd(j) tmp = crd(i) : crd(i) = crd(j) : crd(j) = tmp End_if next j next i For i = nSt To nEnd ret% = dll_call6("cdtDraw",HDC%, xpos+(i-nSt)*12,ypos,xlt(crd(i)),0,0) wait 200 : ' <================= next i END_SUB Même dans SUB Deal(), on ne peut rien mettre entre les 4 appels de Sort_Draw. Tout ce sui suit ne sera pas affiché: - Code:
-
SUB Deal() Shuffle() Sort_Draw(0,NORTHx,NORTHy) message "a" Sort_Draw(1,SOUTHx,SOUTHy) Sort_Draw(2,EASTx, EASTy) Sort_Draw(3,WESTx,WESTy) END_SUB
Dernière édition par Klaus le Mer 16 Nov 2016 - 10:36, édité 1 fois | |
| | | Ouf_ca_passe
Nombre de messages : 285 Age : 76 Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France Date d'inscription : 21/12/2015
| Sujet: Calimero Mer 16 Nov 2016 - 10:19 | |
| Papydall a écrit - Papydall a écrit:
Cette DLL se trouve sur votre PC.
mais pas sur le mien (Windows 10) EVIDEMMENT Bonne journée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 10:25 | |
| Moi aussi, je suis sous W10. Elle devrait se trouver normalement dans C:\Windows\System32. Mais pour l'utiliser, il faudra certainement la copier dans le dossier où se trouve ton source Panoramic - chez moi, il y avait un problème de droit d'accès.
A tout hasard, je l'ai placé sur mon WebDav, dossier DLLs. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 13:23 | |
| Si vous n’avez pas CARDS.DLL sur votre PC, téléchargez le fichier sur le Webdav de Klaus dans le dossier DLLs.
Une fois le fichier DLL téléchargé sur votre ordinateur, copiez le fichier DLL dans le répertoire système de votre système d’exploitation Windows. Ce répertoire change selon la version de Microsoft Windows que vous utilisez.
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10: C:\Windows\System32
Si vous utilisez une version 64-bits de Windows, vous devez également placer le fichier DLL dans le dossier C:\Windows\SysWOW64\ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 13:31 | |
| @Papydall: est-ce que tu as vu mes remarques techniques un peu plus haut ? Il y a quelques problèmes, tout de même...
Outre ceux documentés dans le post plus haut, il y en a un autre. Lorsque tu as une suite de cartes qui se recouvrent partiellement, et losque tu veux en déplacer une, tu utilises normalement cdtDrawExt avec mdRemove pour l'effacer, puis cdtDrawExt avec mdFaceUp pour l'afficher ailleurs. Ca marche, sauf que la commande d'effacement efface brutalement tout le rectangle occupé par l'ancienne position de la carte (en mettant la couleur de fond passée en paramètre), ce qui efface une partie des cartes se trouvant en-dessous et au-dessus de la carte à déplacer. Seule solution: tout réaffichier, ce qui est prohibitif... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 13:38 | |
| @Klaus Oui, j’ai remarqué ce dysfonctionnement et je n’ai pas poussé les tests plus loin. Il doit y en avoir certainement des solutions @Tous A toute fin utile, voici un site qui propose pas moins de 10000 fichiers DLL en téléchargement gratuits pour corriger les erreurs ".dll not found" ou similaires. : http://www.telecharger-dll.fr/dll-cards.dll.html | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 13:50 | |
| @Klaus
J’ai déposé sur mon webdav un zip Demo_CARDS_DLL.zip qui contient une demo d’un jeu en DELPHI. Si tu y jettes un œil, tu pourrais en faire sortir une petite chose sympa en Panoramic. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 18:41 | |
| Merci. Je vais regarder cela. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 19:25 | |
| Belle réalisation, propre et séduisante.
Ma première analyse: 1. n'utilise pas du tout cards.dll 2. contient ses propres images de cartes, sous forme de deux objets bitmap (grandes et petites cartes) cotenant chacun les images de toutes les cartes, fond, dos, jokers etc 3. l'affichage n'a pas lieu dans un HDC (device context) comme avec cards.dll, mais dans un objet TPaintBox non disponible sous Panoramic 4. gère lui-même les évènements de souris (clic, glisser, ...) 5. gère lui-même l'affichage complet de la PaintBox à chaque modification 6. gère actuellement un seul jeu de 52 cartes, pas deux (cartes à dos rouge), un seul motif de dos
C'est assez performant, et le résultat est impeccable. Je vais voir ce que je peux en faire sous forme de fonctions DLL. Mais d'avance, je sais déjà que je vais me heurter à un problème de gestion des évènements. De toutes façons, il faudra la version que Jack est en train de préparer, car il y aura l'évènement ON_USER_EVENT qui sera indispensable. Mais ça ne suffira pas, en particulier pas pour le drag_and_drop des cartes d'un endroit à un autre. Il faudra que j'intercepte les messages Windows pour la gestion de souris pour filtrer ceux qui concernent la PaintBox... enfin, il y a du boulot.
Mais je pense que ça vaut le coup d'essayer au moins, car pouvoir gérer des cartes en Panoramic sera un sacré plus pour les créateurs de jeux ! Et d'ailleurs, pourquoi seulement des cartes ? Après tout, ce sont simplement des bitmaps... On pourrait imaginer n'importe quel type d'images, à la place... | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Démonstration de CARDS.DLL Mer 16 Nov 2016 - 20:08 | |
| ça cogite ça cogite je me frotte les mains d'avance!!! bon courage | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 0:10 | |
| Rapport d'étape: 1. je sais créer, afficher, dimensionner et supprimer un objet PaintBox dans Panoramic 2. je sais y charger une bitmap remplaçant la bitmap préexistante de la PaintBox 3. cela peut se faire sur un nombre quelconque de PaintBox existantes simultanément
Maintenant, je vais m'attaquer à la gestion des interceptions et identifications des actions de la souris... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 0:19 | |
| Bon courage Klaus, et bonne continuation. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 0:55 | |
| Merci !
Entretemps, je capte correctement les évènements OnMouseDown, OnMouseMove et OnMouseUp. Je vais utiliser ma vielle astuce avec un EDIT caché pour signaler cela à Panoramic, en attendant d'avoir la nouvelle version de Panoramic avec ON_USER_EVENT... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 2:48 | |
| Le nec plus ultra ! J’ai trouvé sur Internet o_Cards.dllo_Cards.dll est une dll permettant de programmer des jeux de cartes sans avoir à se soucier de la gestion graphique. o_Cards.dll prend en charge l'affichage des cartes, leur transfert entre piles, les opérations de drag and drop entre piles et bien plus encore... Elle contient 83 fonctions. Je les ai affichées à l’aide d’un petit utilitaire DllFunc.exe (écrit en Delphi) qui malheureusement n’indique que le nombre, le nom et l’index des fonctions sans plus. Heureusement, j’ai trouvé et téléchargé un fichier o_Cards.hlp qui fournit plein d’infos : comment, où et quand on utilise une telle ou telle fonction, sa syntaxe, des remarques, etc.. - Citation :
Le programmeur qui utilise o_Cards.dll va créer une série de cartes réparties en un ou plusieurs jeux (donnes). Pour utiliser ces cartes, le programmeur va devoir créer une série de piles entre lesquelles les cartes vont pouvoir être déplacées par programmation ou par l'utilisateur en utilisant le drag and drop. Le travail du programmeur consiste donc à créer un ensemble de cartes, des piles à disposer sur le plateau de jeu puis, à l'aide des différentes fonctions fournies par o_Cards.dll, à diriger et à contrôler le déplacement des cartes. o_Cards.dll se charge de l'affichage: cet affichage se fait directement sur le canvas de la feuille de l'application: tous les contrôles non fenêtrés (ne possédant pas de handle) disposés sur la feuille seront effacés: c'est au programmeur de prévoir leur réaffichage. L'emploi de contrôles non fenêtrés ou l'écriture directe sur le canvas sont à éviter pour ne pas provoquer des phénomènes de clignotement dans l'affichage.
J’ai déposé sur mon Webdav o_Cards.zip. ( quelques 800 KB) Le dossier contient : DllFunc.exe petit utilitaire pour afficher les noms des fonctions contenues dans une DLL. o_Cards.dll o_Cards.hlp | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 17 Nov 2016 - 13:40 | |
| Merci Papydall. Je viens la récupérer sur ton webdav et je regarderai cela de près. Cette dll me parait très intéressante. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 17:13 | |
| J'ai téléchargé également et je vais regarder cela... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 19:07 | |
| C'est effectivement très puissant. Je ne sais pas encore si, au final, c'est iintégrable dans KGF.dll, mais j'ai commencé.
En fait, techniquement, je peux facilement rendre accessible toutes les fonctions de cette DLL, j'ai les paramètres et formats d'appel et je connais les constantes à passer pour configurer le système. Pas de problème de ce côté-là. Donc, on aura assez facilement l'accès à l'ensemble de ces fonctions en Panoramic.
Maintenant, la logique des différents jeux founis en exemple a été codée directement dans les routines évènement (clic gauche/droit, glisser/tirer etc) de la fenêtre représentant le tapis de jeu. Evidemment, c'est très performat puisque c'est en Delphi. Cela risque fort d'être différent en passant ne niveau de la logique du jeu à Panoramic. On verra... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Démonstration de CARDS.DLL Jeu 17 Nov 2016 - 21:56 | |
| C’est à peu près ce que j’en pense. J’ai commencé par déclarer toutes les constantes que la dll o_Cards.dll utilise. C’est une SUB Constantes() à inclure dans un programme utilisant o_Caerds.ddl par - Code:
-
#include "Constantes.bas"
Je m’attaquerais ensuite au codage de toutes les fonctions fournies par la DLL. On aura ainsi tout le nécessaire pour faire des programmes de jeux de cartes en Panoramic. Ça ne sera, peut-être pas du beurre comme l’a laissé deviner Klaus, mais il y a de quoi s’occuper pour un temps. Voici le code des constantes. - Code:
-
rem ============================================================================ rem Constantes_o_Cards.bas rem A inclure dans un programme utilisant o_Cards.dll rem ============================================================================ SUB Constantes() ' ============================================================================== ' Version dim cMajVersion : cMajVersion = 0 dim cMinVersion : cMinVersion = 1 ' ============================================================================== ' Fond d'écran dim cBackgrndGradNull : cBackgrndGradNull = 1 : ' Fond uni dim cBackgrndGradHor : cBackgrndGradHor = 2 : ' Fond dégradé horizontal dim cBackgrndGradVer : cBackgrndGradVer = 3 : ' Fond dégradé vertical dim cBackgrndImageCenter : cBackgrndImageCenter = 1 : ' Image de fond centrée dim cBackgrndImageStretch : cBackgrndImageStretch = 2 : ' Image de fond adaptée dim cBackgrndImageMosaique : cBackgrndImageMosaique = 3 : ' Image de fond mosaïque ' ============================================================================== ' Caractéristiaques des cartes ' Carte : Color dim cCarteNoire : cCarteNoire = 1 dim cCarteRouge : cCarteRouge = 2 ' Carte : Suite dim cCarteTrefle : cCarteTrefle = 1 dim cCarteCarreau : cCarteCarreau = 2 dim cCartePique : cCartePique = 3 dim cCarteCoeur : cCarteCoeur = 4 ' Carte : Value dim cCarteAs : cCarteAs = 1 dim cCarteDeux : cCarteDeux = 2 dim cCarteTrois : cCarteTrois = 3 dim cCarteQuatre : cCarteQuatre = 4 dim cCarteCinq : cCarteCinq = 5 dim cCarteSix : cCarteSix = 6 dim cCarteSept : cCarteSept = 7 dim cCarteHuit : cCarteHuit = 8 dim cCarteNeuf : cCarteNeuf = 9 dim cCarteDix : cCarteDix = 10 dim cCarteValet : cCarteValet = 11 dim cCarteDame : cCarteDame = 12 dim cCarteRoi : cCarteRoi = 13 dim cCarteJoker : cCarteJoker = 14 ' Carte : Image dim cAsTrefle : cAsTrefle = 1 dim cDeuxTrefle : cDeuxTrefle = 2 dim cTroisTrefle : cTroisTrefle = 3 dim cQuatreTrefle : cQuatreTrefle = 4 dim cCinqTrefle : cCinqTrefle = 5 dim cSixTrefle : cSixTrefle = 6 dim cSeptTrefle : cSeptTrefle = 7 dim cHuitTrefle : cHuitTrefle = 8 dim cNeufTrefle : cNeufTrefle = 9 dim cDixTrefle : cDixTrefle = 10 dim cValetTrefle : cValetTrefle = 11 dim cDameTrefle : cDameTrefle = 12 dim cRoiTrefle : cRoiTrefle = 13 dim cAsCarreau : cAsCarreau = 14 dim cDeuxCarreau : cDeuxCarreau = 15 dim cTroisCarreau : cTroisCarreau = 16 dim cQuatreCarreau : cQuatreCarreau = 17 dim cCinqCarreau : cCinqCarreau = 18 dim cSixCarreau : cSixCarreau = 19 dim cSeptCarreau : cSeptCarreau = 20 dim cHuitCarreau : cHuitCarreau = 21 dim cNeufCarreau : cNeufCarreau = 22 dim cDixCarreau : cDixCarreau = 23 dim cValetCarreau : cValetCarreau = 24 dim cDameCarreau : cDameCarreau = 25 dim cRoiCarreau : cRoiCarreau = 26 dim cAsPique : cAsPique = 27 dim cDeuxPique : cDeuxPique = 28 dim cTroisPique : cTroisPique = 29 dim cQuatrePique : cQuatrePique = 30 dim cCinqPique : cCinqPique = 31 dim cSixPique : cSixPique = 32 dim cSeptPique : cSeptPique = 33 dim cHuitPique : cHuitPique = 34 dim cNeufPique : cNeufPique = 35 dim cDixPique : cDixPique = 36 dim cValetPique : cValetPique = 37 dim cDamePique : cDamePique = 38 dim cRoiPique : cRoiPique = 39 dim cAsCoeur : cAsCoeur = 40 dim cDeuxCoeur : cDeuxCoeur = 41 dim cTroisCoeur : cTroisCoeur = 42 dim cQuatreCoeur : cQuatreCoeur = 43 dim cCinqCoeur : cCinqCoeur = 44 dim cSixCoeur : cSixCoeur = 45 dim cSeptCoeur : cSeptCoeur = 46 dim cHuitCoeur : cHuitCoeur = 47 dim cNeufCoeur : cNeufCoeur = 48 dim cDixCoeur : cDixCoeur = 49 dim cValetCoeur : cValetCoeur = 50 dim cDameCoeur : cDameCoeur = 51 dim cRoiCoeur : cRoiCoeur = 52 dim cJokerNoir : cJokerNoir = 53 dim cJokerRouge : cJokerRouge = 54 ' Carte : Face dim cCardBack : cCardBack = 1 : ' Affichage de l'image dos dim cCardFace : cCardFace = 2 : ' Affichage de l'image carte ' Carte : Verrouillage dim cCardFree : cCardFree = 1 : ' La carte peut être utilisée dim cCardLocked : cCardLocked = 2 : ' La carte est bloquée ' Carte : Indentation dim cCardIndentOff : cCardIndentOff = 0 dim cCardIndentOn : cCardIndentOn = 1 ' ============================================================================== ' Images dos dim cCardBackBlue : cCardBackBlue = 174 : ' Dos look Win9x dim cCardBackGreen : cCardBackGreen = 175 dim cCardBackRobot : cCardBackRobot = 176 dim cCardBackRose : cCardBackRose = 177 dim cCardBackLeafGreen : cCardBackLeafGreen = 178 dim cCardBackLeafBlue : cCardBackLeafBlue = 179 dim cCardBackFishAqua : cCardBackFishAqua = 180 dim cCardBackFishBlue : cCardBackFishBlue = 181 dim cCardBackShell : cCardBackShell = 182 dim cCardBackCastel : cCardBackCastel = 183 dim cCardBackBeach : cCardBackBeach = 184 dim cCardBackGame : cCardBackGame = 185 ' ====== dim cCardBackCloud : cCardBackCloud = 154 : ' Dos look WinXP dim cCardBackBlurBlue : cCardBackBlurBlue = 155 dim cCardBackFish : cCardBackFish = 156 dim cCardBackFrog : cCardBackFrog = 157 dim cCardBackRoseXP : cCardBackRoseXP = 158 dim cCardBackBeachXP : cCardBackBeachXP = 159 dim cCardBackSquare : cCardBackSquare = 160 dim cCardBackBlurFuchsia : cCardBackBlurFuchsia = 161 dim cCardBackDune : cCardBackDune = 162 dim cCardBackSpace : cCardBackSpace = 163 dim cCardBackYellow : cCardBackYellow = 164 dim cCardBackCars : cCardBackCars = 165 ' ============================================================================== ' Sélection dos dim cCardBackAll : cCardBackAll = 0 dim cCardBackXP : cCardBackXP = 1 dim cCardBack9x : cCardBack9x = 2 ' ============================================================================== ' Piles ' Types de pile dim cStackFixed : cStackFixed = 1 : ' Pile d'empilement dim cStackFixedEffect : cStackFixedEffect = 2 : ' Pile d'empilement avec effet dim cStackDragVer : cStackDragVer = 3 : ' Pile verticale pour drag and drop en colonne dim cStackDragLR : cStackDragLR = 4 : ' Pile horizontale left-right pour drag and drop en ligne dim cStackDragRL : cStackDragRL = 5 : ' Pile horizontale right-left pour drag and drop en ligne dim cStackVerFixed : cStackVerFixed = 6 : ' Pile verticale sans réorganisation des cartes dim cStackHorFixed : cStackHorFixed = 7 : ' Pile horizontale sans réorganisation des cartes dim cStackVerDyn1 : cStackVerDyn1 = 8 : ' Pile verticale : l'élimination d'une carte fait remonter les suivantes dim cStackHorDyn1 : cStackHorDyn1 = 9 : ' Pile horizontale : l'élimination d'une carte fait glisser les suivantes dim cStackVerDynC : cStackVerDynC = 10 : ' Pile verticale : l'élimination ou l'ajout d'une carte redessine la pile ' et la centre à partir de la position initiale dim cStackHorDynC : cStackHorDynC = 11 : ' Pile horizontale : l'élimination ou l'ajout d'une carte redessine la pile ' et la centre à partir de la position initiale dim cStackVirtual : cStackVirtual = 99 : ' Pile virtuelle non dessinable ' ============================================================================== ' Images de pile dim cStackImageNo : cStackImageNo = 0 : ' Pile sans image dim cStackImageGrid : cStackImageGrid = 60 : ' Pile avec grille transparente dim cStackImageX : cStackImageX = 61 : ' Pile transparente avec symbole X rouge dim cStackImageO : cStackImageO = 62 : ' Pile transparente avec symbole O vert dim cStackImageTrefleTrans : cStackImageTrefleTrans = 71 : ' Pile avec symbole trèfle transparent dim cStackImageCarreauTrans : cStackImageCarreauTrans = 72 : ' Pile avec symbole carreau transparent dim cStackImagePiqueTrans : cStackImagePiqueTrans = 73 : ' Pile avec symbole pique transparent dim cStackImageCoeurTrans : cStackImageCoeurTrans = 74 : ' Pile avec symbole coeur transparent dim cStackImageTrefleWhite : cStackImageTrefleWhite = 81 : ' Pile avec symbole trèfle blanc dim cStackImageCarreauWhite : cStackImageCarreauWhite = 82 : ' Pile avec symbole carreau blanc dim cStackImagePiqueWhite : cStackImagePiqueWhite = 83 : ' Pile avec symbole pique blanc dim cStackImageCoeurWhite : cStackImageCoeurWhite = 84 : ' Pile avec symbole coeur blanc ' ============================================================================== ' Tri de piles dim cStackSortNo : cStackSortNo = 0 : ' Pas de tri dim cStackSortColor : cStackSortColor = 1 : ' Classement couleur TrefleKarreauPiqueCoeur : les cartes ne sont pas triées par valeur dim cStackSortAR : cStackSortAR = 2 : ' Classement par valeur AAAA, 2222, .... , RRRR : les cartes ne sont pas triées par couleur dim cStackSort2A : cStackSort2A = 3 : ' Classement par valeur 2222, .... , RRRR, AAAA : les cartes ne sont pas triées par couleur dim cStackSortColorAR : cStackSortColorAR = 4 : ' Classement couleur TKPC : les cartes sont triées par valeur A..R dim cStackSortColor2A : cStackSortColor2A = 5 : ' Classement couleur TKPC : les cartes sont triées par valeur 2..A dim cStackSortARColor : cStackSortARColor = 6 : ' Classement par valeur AAAA, 2222, .... , RRRR : les cartes sont triées par couleur TKPC dim cStackSort2AColor : cStackSort2AColor = 7 : ' Classement par valeur 2222, .... , RRRR, AAAA : les cartes sont triées par couleur TKPC dim cStackSortFIFO : cStackSortFIFO = 8 : ' First In First Out ' ============================================================================== ' Jeux tout fait dim cGameEmpty : cGameEmpty = 0 : ' Jeu sans cartes dim cGameNormal : cGameNormal = 1 : ' Jeu de 52 cartes dim cGameNormalJ : cGameNormalJ = 2 : ' Jeu de 52 cartes + 1 joker noir dim cGameNormalJJ : cGameNormalJJ = 3 : ' Jeu de 52 cartes + 2 jokers noir-rouge ' ============================================================================== ' Son dépôt d'une carte dim cCardClickOff : cCardClickOff = 0 dim cCardClickOn : cCardClickOn = 1 ' ============================================================================== ' Dragging ' Drag Horizontal dim cDragHorNo : cDragHorNo = 0 dim cDragHorRL : cDragHorRL = 1 dim cDragHorLR : cDragHorLR = 2 ' Restriction Drag dim cDragFull : cDragFull = 0 dim cDragNormal : cDragNormal = 1 END_SUB rem =================== FIN DES DECLARATIONS DES CONSTANTES ====================
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Ven 18 Nov 2016 - 0:30 | |
| C'est bien, ce codage, Papydall !
Pour ma part, je finalise la création d'un "wrapper" autour de o_cards.dll, dans KGF.dll, de sorte à pouvoir y accéder directement par KGF.dll. Et j'ai réalisé la création et la suppression du terrain de jeu - ça marche. On verra la suite... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Ven 18 Nov 2016 - 3:12 | |
| J'ai réalisé le wrapper complet - reste à tester toutes les fonctions. Ci-après une démo montrant: - création du terrain de jeu (position et dimensions fixes, pour le moment) - suppression du terrain de jeu - test de la fonction c_About - affiche une fenêtre "Apropos" - test de la fonction c_Cards_GetVersion - retourne la valeur 1 pour V1.0 Pour tester, il faut prendre KGF.dll dans mon WebDav, dossier DLLs. Ce n'est pas encore à jour sur le site, et il n'y a pas encore de doc. Voici le programme: - Code:
-
' test_OCards.bas
label creer, supprimer label fun01
dim PG%, res%
full_space 0 dll_on "KGF.dll"
button 1 : top 1,10 : left 1,500 : caption 1,"Créer" : on_click 1,creer button 2 : top 2,40 : left 2,500 : caption 2,"Supprimer" : on_click 2,supprimer
button 101 : top 101,10 : left 101,600 : caption 101,"o_AboutDll" : on_click 101,fun01
end
creer: PG% = dll_call2("Create0CardsPlayground",handle(0),0) message "Create0CardsPlayground="+str$(PG%) return supprimer: PG% = dll_call1("Delete0CardsPlayground",PG%) message "Delete0CardsPlayground="+str$(PG%) return
fun01: res% = dll_call1("o_Cards_GetVersion",0) message "o_Cards_GetVersion="+str$(res%) res% = dll_call0("o_AboutDll") message "o_AboutDll="+str$(res%) return Je continuerai les tests avant de publier davantage. D'ailleurs, pour ceux qui n'ont pas o_cards.dll, pas de problème: KGF.dll "embarque" o_cards.dll et la place dans le dossier par défaut si o_cards.dll ne s'y trouve pas ! | |
| | | Contenu sponsorisé
| Sujet: Re: Démonstration de CARDS.DLL | |
| |
| | | | Démonstration de CARDS.DLL | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |