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
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Aujourd'hui à 19:48

» KGF_dll - nouvelles versions
par pascal10000 Aujourd'hui à 17:27

» Mah-Jong européen new-look
par Minibug Hier à 22:31

» track_bar circulaire
par Klaus Hier à 13:54

» API Windows
par Klaus Hier à 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Démonstration de CARDS.DLL

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2, 3, 4, 5  Suivant
AuteurMessage
papydall

avatar

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

MessageSujet: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 3: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:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 3:39

Bel exemple instructif, Papydall !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 3: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:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 3:54

Super ! On a là la boite à outils pour la réalisation d'un jeu de cartes !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 4:27

Avis aux amateurs !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 6: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 - 12:36, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Ouf_ca_passe

avatar

Nombre de messages : 199
Age : 69
Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France
Date d'inscription : 21/12/2015

MessageSujet: Calimero   Mer 16 Nov 2016 - 12: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 12: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 15: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\
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 15: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 15: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 15: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 20:41

Merci. Je vais regarder cela.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 21: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
mindstorm

avatar

Nombre de messages : 542
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Démonstration de CARDS.DLL   Mer 16 Nov 2016 - 22:08

ça cogite ça cogite
je me frotte les mains d'avance!!!
bon courage
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 2: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 2:19

Bon courage Klaus, et bonne continuation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 2: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 4:48

Le nec plus ultra !
J’ai trouvé sur Internet o_Cards.dll

o_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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Jeu 17 Nov 2016 - 15: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.
Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 19:13

J'ai téléchargé également et je vais regarder cela...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 21: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Jeu 17 Nov 2016 - 23: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 ====================

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

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Ven 18 Nov 2016 - 2: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10257
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Démonstration de CARDS.DLL   Ven 18 Nov 2016 - 5: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Démonstration de CARDS.DLL   

Revenir en haut Aller en bas
 
Démonstration de CARDS.DLL
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 5Aller à la page : 1, 2, 3, 4, 5  Suivant
 Sujets similaires
-
» démonstration d'accordéon Roland sons bk7m
» Démonstration n°1 de TOONIC: un simple paysage
» Démos BK-7m
» ou d'ecouter les differents registres du fr18
» Explosif démo BK5 Roland

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: