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 |
|
|
| Cards.dll pour afficher un jeu de 52 cartes | |
| | 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: Cards.dll pour afficher un jeu de 52 cartes Jeu 21 Avr 2016 - 14:51 | |
| Tout est bien expliqué dans le code. Veuillez lire les infos dans les lignes REM. - Code:
-
rem ============================================================================ rem Utilisation de cards.dll rem Pour afficher un jeu de 52 cartes rem ============================================================================ rem Remarque : rem Depuis Windows 7, cette dll "Cards.dll" est remplacée par une autre dll : rem "cardgames.dll" qui est totalement différente. rem Personnellent je n ai aucune information pour son utilisation. rem Par contre je sais comment faire avec "Cards.dll" rem Dans ce code, j utilise donc "Cards.dll" rem Vérifiez que vous avez cette DLL. rem Les DLL se trouvent généralement dans le dossier :"C:\Windows\System32" rem Si vous ne l avez pas, vous pouvez la télécharger depuis Internet rem Sinon, vous pouvez la télécharger depuis mon Webdav : fichier "cards.dll" rem ============================================================================ rem Cette DLL contient des images de carte à jouer. rem Elle exporte cinq fonctions : rem 1) cdtAnimate : anime le dos des cartes : non utilsée dans cet exemple rem 2) cdtDraw : Dessine une carte à jouer rem 3) cdtDrawExt : identique à "cdtDraw". La seule différence est que cette rem fonction possède deux paramètres suplémentaires qui vous permetteront de rem indiquer la taille (largeur et hauteur) des cartes. rem Elle est non utilisée ici car elle nécessite 7 paramètres (PANORAMIC ne rem permet que 6 paramètres) rem 4) cdtInit : Initialise la DLL. Les deux paramètres permettent de récuperer rem la largeur et la hauteur des cartes à jouer qui sont par défaut 71 x 96 rem 5) cdtTerm : Libère les ressources allouées rem ============================================================================ rem Syntaxe de la fonction cdtDraw : rem ret% = dll_call6("cdtDraw",HDC%,X,Y,Card,Typ,Couleur) rem Avec HDC% : handle du contexte de périphérique dans lequel le tracé de la rem carte à jouer sera effectué rem X,Y : Position en pixel de la carte à jouer rem Card : Numéro de la carte à jouer. rem Typ : Type de la carte : Les valeurs possibles sont 0, 1, 2 (permet de inverser rem les couleurs rem Couleur : couleur du fond de la carte. Par défaut cette couleur est blanche. rem ============================================================================ rem Les numéros des cartes à jouer vont de 0 à 51 soit 52 cartes. rem les couleurs sont dans l ordre : trèfle, carreau, coeur, pique rem 0 <--- le As de trèfle rem 1 <--- le As de carreau rem 2 <--- le As de coeur rem 3 <--- le As de pique ' ------------------------ rem 4 <--- le 2 de trèfle rem 5 <--- le 2 de carreau rem 6 <--- le 2 de coeur rem 7 <--- le 2 de pique rem etc. rem 40 <--- le Valet (J) de trèfle rem 41 <--- le Valet (J) de carreau rem 42 <--- le Valet (J) de coeur rem 43 <--- le Valet (J) de pique ' ------------------------------- rem 44 <--- la Dame (Q) de trèfle rem 45 <--- la Dame (Q) de carreau rem 46 <--- la Dame (Q) de coeur rem 47 <--- la Dame (Q) de pique ' -------------------------------- rem 48 <--- le Roi (K) de trèfle rem 49 <--- le Roi (K) de carreau rem 50 <--- le Roi (K) de coeur rem 51 <--- le Roi (K) de pique
rem ============================================================================ rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ============================================================================ dim HDC%,w%,h%,ret%,i width 0,1250 : height 0,700 picture 10 : full_space 10 : ' On dessine les cartes à jouer sur un PICTURE HDC% = handle_canvas(10) : ' On détermine le Handle Device Control dll_on "cards.dll" : ' Ajuster le chemin d'accès à la DLL ' Initialiser la DLL. les deux paramètres permettent de récuperer la largeur ' et la hauteur des cartes ret% = dll_call2("cdtInit",adr(w%),adr(h%)) ' Dessiner les cartes à jouer 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
' Libèrer les ressources allouées ret% = dll_call0("cdtTerm")
dll_off
end rem ============================================================================ rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ============================================================================
- Voici le résultat:
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 21 Avr 2016 - 16:35 | |
| dll inconnue au bataillon dans mon ordi... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Cards.dll pour afficher un jeu de 52 cartes Jeu 21 Avr 2016 - 18:45 | |
| C’est normal ! Elle a disparu depuis W7. Tu peux la récupérer sur mon webdav.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 21 Avr 2016 - 19:18 | |
| C' est fait et mis en archive pour de futurs jeux peut être. C' est très intéressant tout ce que tu nous donnes. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Cards.dll pour afficher un jeu de 52 cartes Jeu 21 Avr 2016 - 19:54 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Cards.dll pour afficher un jeu de 52 cartes Jeu 21 Avr 2016 - 23:55 | |
| oui et j'espère que tu perceras les mystères de la nouvelle DLL également. Ca te fait un challenge à relever | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Cards.dll pour afficher un jeu de 52 cartes Ven 22 Avr 2016 - 14:17 | |
| - Code:
-
rem ============================================================================ rem Card_Demo rem Code original en VBA rem Adaptation en PANORAMIC par Papydall rem ============================================================================ ' Brad's Card Demo ' by: Brad B., Jr.
' This card demo covers most of the major things ' you might need when beginning a new card game. ' ' Each card in the deck(s) is stored in an array ' called TheDeck(416). The 416 allows for up to ' eight decks to be used. I don't use TheDeck(0) ' so that recalling the cards is easier to uderstand. ' ' I don't include more than what I have for a very ' specific reason. Each card game has it's own set ' of rules. If I give you too much, then my tutorial ' becomes useless because you will have to sift through ' too much information to get to the core of a card game ' ' That core is all I included in the demo... ' 1. How to call the Cards.dll/Cards32.dll ' 2. How to use the functions in the .dll file ' 3. How to initialize your deck(s) ' 4. How to shuffle cards ' 5. How to draw, flip, and invert cards on a form ' One major thing that I didn't include is ' 1. How to find out which card is clicked ' I didn't include this because it is totally ' dependant on the positioning and offset of ' the cards on the form. However, here is a brief ' description of how to do it: ' In the Form_MouseDown event you use the X and Y ' values to locate where the mouse is. You will use ' the location of your hand and your offset to find ' out if a card was clicked and which card that was. ' ' For some games, you might not even need to check ' which card was clicked. For example, I am currently ' working on a BlackJack game that I use command buttons ' to control Hit/Stand/Deal/Quit and I never once have to ' click a card. ' ' ------------------------------------------------------------------------------ rem ============================================================================
Demo()
end rem ============================================================================ SUB Demo() label clic dim DeckTot : DeckTot = 416 : ' keep track of number of cards in deck dim TheDeck(DeckTot) : ' allow for up to 8 decks dim BackStyle : ' value for back of card dim InitDeck, CardShuff dim hdc%,w%,h%,ret%
button 11 : top 11,20 : left 11,050 : width 11,120 : font_bold 11 caption 11,"Shuffle and Deal" : on_click 11,clic button 12 : top 12,20 : left 12,200 : width 12,120 : font_bold 12 caption 12,"No Shuffle and Deal" : on_click 12,clic button 13 : top 13,20 : left 13,350 : width 13,120 : font_bold 13 caption 13,"Show Card" : on_click 13,clic button 14 : top 14,20 : left 14,350 : width 14,120 : font_bold 14 caption 14,"Invert Card" : on_click 14,clic : hide 14 button 15 : top 15,20 : left 15,350 : width 15,120 : font_bold 15 caption 15,"Flip Card" : on_click 15,clic : hide 15 button 20 : top 20,350 : left 20,220 : font_bold 20 : caption 20,"Quitter" on_click 20,clic dll_on "cards.dll" caption 0,"Une simple demonstration de cards.dll"
END_SUB rem ============================================================================ Clic: select number_click case 11 : cmdShuffled_Click() case 12 : cmdNoShuff_Click() case 13 : cmdShowFlipInvert_Click(13) case 14 : cmdShowFlipInvert_Click(14) case 15 : cmdShowFlipInvert_Click(15) case 20 : Quitter() end_select return rem ============================================================================ SUB cmdShuffled_Click() Dim_local i, offset ' initialize, shuffle InitDeck() : TheDeck(DeckTot) = InitDeck CardShuff(DeckTot, 3) TheDeck(DeckTot) = CardShuff ' deal HDC% = handle_canvas(0) ret% = dll_call2("cdtInit",adr(w%),adr(h%)) : ' Initialize cards.dll For i = 1 To 8 ret% = dll_call6("cdtDraw",hdc%, 50, (100 + offset), TheDeck(i),0,0) offset = offset + 15 Next i
END_SUB rem ============================================================================ SUB cmdNoShuff_Click() Dim_local i, offset ' initialize, don't shuffle InitDeck() : TheDeck(DeckTot) = InitDeck ' deal HDC% = handle_canvas(0) ret% = dll_call2("cdtInit",adr(w%),adr(h%)) : ' Initialize cards.dll For i = 1 To 8 ret% = dll_call6("cdtDraw",hdc%, 220, (100 + offset), TheDeck(i),0,0) offset = offset + 15 Next i
END_SUB rem ============================================================================ SUB InitDeck() Dim_local i,j For i = 1 To DeckTot : TheDeck(i) = i - 1 : Next i For i = 1 To DeckTot For j = 1 To 8 If TheDeck(i) > 51 then TheDeck(i) = TheDeck(i) - 52 Next j Next i InitDeck = TheDeck(DeckTot) END_SUB rem ============================================================================ SUB CardShuff(intNumCardsDeck, intTimesToShuffle) Dim_local i, j, k, intHolder ' shuffle cards (intTimesToShuffle) times by picking a two random cards and ' having them trade places in the deck. ' loop it through each card in the deck. For k = 1 To intTimesToShuffle For i = 1 To intNumCardsDeck j = Int(Rnd(intNumCardsDeck) + 1) If (i = j) And (j = intNumCardsDeck) j = j - 1 Else If (i = j) Then j = j + 1 End_If intHolder = TheDeck(i) : TheDeck(i) = TheDeck(j) : TheDeck(j) = intHolder Next i Next k CardShuff = TheDeck(DeckTot) END_SUB rem ============================================================================ SUB cmdShowFlipInvert_Click(bouton) dim_local flip flip = int(rnd(16)+53) : ' les valeurs possibles sont 53 à 65 et 67 et 68 if flip = 66 then flip = 65 : ' la valeur 66 n'est pas définie HDC% = handle_canvas(0) select bouton case 13 : ' how to show the card ret% = dll_call2("cdtInit",adr(w%),adr(h%)) : ' Initialize cards.dll ret% = dll_call6("cdtDraw",hdc%,380,100,3,0,0) : hide 13 : show 14 case 14 : ' how to invert the card ret% = dll_call2("cdtInit",adr(w%),adr(h%)) : ' Initialize cards.dll ret% = dll_call6("cdtDraw",hdc%,380,100,3,1,0) : hide 14 : show 15 case 15 : ' how to flip the card; 53 - 65 are the values for card backs ret% = dll_call2("cdtInit",adr(w%),adr(h%)) : ' Initialiser cards.dll ret% = dll_call6("cdtDraw",hdc%,380,100,flip,1,0) : hide 15 : show 13 end_select END_SUB rem ============================================================================ SUB Quitter() ret% = dll_call0("cdtTerm") : ' Libèrer les ressources allouées dll_off : ' Libèrer la m'moire terminate END_SUB rem ============================================================================
- Résultat:
| |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Revue du sujet Sam 23 Avr 2016 - 10:37 | |
| Bonjour Papydall ! Grâce à ton programme, j'ai visionné l'étalage de cartes "cards.DLL". Je m'aperçois qu'elles se présentent uniquement sous un format vertical et, si je ne me trompe pas , il faut être programmeur acrobate pour les visionner sous format horizontal ! A titre de comparaison, ces cartes sont moins "spectaculaires" et moins colorées graphiquement parlant que les miennes que je t'avais proposées auparavant. Lequel parmi les membres, toi compris, serait capable de les remplacer dans cette fameuse "cards.DLL" ? Pas moi en tout cas, désolé. | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Revue du sujet Sam 23 Avr 2016 - 11:37 | |
| Voici un exemple de disposition des cartes sur une table de jeu pour n'importe quelle partie à deux, trois ou quatre joueurs. La ligne de cartes visibles de face au bas de la table est réservée à l'opérateur, vous même. Ces cartes peuvent être prélevées manuellement et effacées automatiquement par un artifice de programmation. Les autres cartes vues de dos sont celles des joueurs A, B et C simulés par l'ordinateur. Pour ces joueurs, toute logique de prélèvement automatique doit obéir aux règles du jeu. A titre d'exemple, les 4 * 13 cartes au centre de la table sont étalées comme pour une réussite. Toute la table vous est ainsi montrée avec suffisamment de place pour les autres piles de cartes , titres et noms de joueurs. Le jeu de cartes est disponible dans mon WEBDAV sous "Jeux/ACartes.zip" Tout message de votre part est le bienvenu ! | |
| | | Contenu sponsorisé
| Sujet: Re: Cards.dll pour afficher un jeu de 52 cartes | |
| |
| | | | Cards.dll pour afficher un jeu de 52 cartes | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |