FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Pourquoi le compilateur stagne
par papydall Hier à 23:23

» Immortaliser les photos de famille
par jjn4 Hier à 18:29

» Concours de Morpions
par jjn4 Hier à 18:11

» Compilateur FBPano
par jean_debord Hier à 10:12

» Tout est tranquille
par Jean Claude Ven 22 Sep 2017 - 21:41

» Texte en gif animé
par JL35 Ven 22 Sep 2017 - 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Cards.dll pour afficher un jeu de 52 cartes

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5533
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Cards.dll pour afficher un jeu de 52 cartes   Jeu 21 Avr 2016 - 15: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:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7992
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 21 Avr 2016 - 17:35

dll inconnue au bataillon dans mon ordi... Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5533
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Cards.dll pour afficher un jeu de 52 cartes   Jeu 21 Avr 2016 - 19:45

C’est normal !
Elle a disparu depuis W7.
Tu peux la récupérer sur mon webdav.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7992
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 21 Avr 2016 - 20:18

C' est fait et mis en archive pour de futurs jeux peut être.
Laughing 

C' est très intéressant tout ce que tu nous donnes.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5533
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Cards.dll pour afficher un jeu de 52 cartes   Jeu 21 Avr 2016 - 20:54

Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5855
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Cards.dll pour afficher un jeu de 52 cartes   Ven 22 Avr 2016 - 0:55

oui et j'espère que tu perceras les mystères de la nouvelle DLL également. Ca te fait un challenge à relever Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5533
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Cards.dll pour afficher un jeu de 52 cartes   Ven 22 Avr 2016 - 15: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:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Parpaiun

avatar

Nombre de messages : 192
Age : 78
Localisation : HERAULT
Date d'inscription : 15/04/2015

MessageSujet: Revue du sujet   Sam 23 Avr 2016 - 11: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é. pale
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Parpaiun

avatar

Nombre de messages : 192
Age : 78
Localisation : HERAULT
Date d'inscription : 15/04/2015

MessageSujet: Revue du sujet   Sam 23 Avr 2016 - 12: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 !    lol!     lol!     lol!     lol!     lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Cards.dll pour afficher un jeu de 52 cartes   

Revenir en haut Aller en bas
 
Cards.dll pour afficher un jeu de 52 cartes
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pour afficher dans la colonne des derniers sujets quel sujet a reçu un dernier message
» petit probleme pour afficher un image sur mon forum...
» Probleme pour afficher une image
» Forum qui rame pour afficher chaque page
» Code pour afficher le nombre de message et de sujets !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: