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 |
---|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Démonstration de CARDS.DLL Ven 18 Nov 2016 - 8:48 | |
| Beau boulot les gars. PS: Vous ne voulez pas refaire une version de vos programmes de cartes (Belotte, etc...) avec ces fonctions ? Ca pourrait peut être donner un truc sympa et ça permettrait peut être de réactualiser ces bons jeux que certains nouveaux lecteurs pourraient ne pas connaître ? | |
| | | 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 - 9:36 | |
| Hou là... c'est beaucoup trop tôt ! Mais sur le fond, le but est bien d'offir un système graphique amélioré qui pourra également être appliqué à refondre ces jeux. On verra lorsque ce sera le moment ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Démonstration de CARDS.DLL Ven 18 Nov 2016 - 23:44 | |
| Bon et bien on attendra ! En tous cas ça semble sacrément intéressant, mais aussi assez ardu... Bon courage pour la suite. | |
| | | 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 Sam 19 Nov 2016 - 0:15 | |
| J'y travaille aussi, mais pas au rythme de "l'homme qui programme plus vite que son ombre" !
Salut Klaus! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Sam 19 Nov 2016 - 13:57 | |
| Voilà le constat: - o_cards est puissant, mais ja n'arrive pas à le faire marcher dans un contexte Panoramic. En Delphi pur, pas de problème. - certaines fonctions retournent des valeurs impossibles à gérer en Panoramic. Donc, toutes les fonctions de o_cards.dll ne peuvent pas être appelées directement par Panoramic. - j'ai demandé une assistance à l'auteur, mais pas de réponse pour le moment.
Alors, j'ai mis au point un autre système d'affichage de cartes. J'ai place une démo dans mon WebDav, dossier "Jeux". Le programme s'appelle Test_Cards.exe. Il s'exécute seul, sans DLL (ni même KGF.dll, pour le moment, car il est en Delphi pur). Et donc, lorsque j'airai intégré tout cela dans KGF.dll, il n'y aura pas de DLL supplémentaire, et tout sera maîtrisé à partir de Panoramic.
Mode d'emploi: - le bouton "Créer le jeu" affiche une enfilade des 52 cartes d'un jeu complet - le bouton "Ramasser" reprend toutes les cartes et fait une pile en haut à gauche - le bouton "Redistribuer" prend les cartes à partir du haut de la pile et les étale à nouveau dans un rang - un clic sur une carte donne la valeur de la carte (As=1, ... Roi=13) et de la couleur (0=coeur, 1=trèfle, 2=caro, 3=pique).
Je trouve l'affichage performant. | |
| | | 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 Sam 19 Nov 2016 - 14:27 | |
| Salut Klaus Je ne trouve pas sur ton webdav le dossier jeux | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Sam 19 Nov 2016 - 14:33 | |
| Ben, Papydall... on a besoin de lunettes ? C'est entre IO_access_COM et K8055d... quelques lignes plus loin que 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 Sam 19 Nov 2016 - 15:19 | |
| Certainement Klaus, j’ai beaucoup d’ennuis avec mes yeux : ce qui ne me facilite pas les choses ! J’étais dans Panoramic > DLLs et non dans Panoramic > jeux - Voici Panoramic > jeux:
En cliquant sur Test_Cards.exe pour le télécharger, ça me renvoie sur cette pageJ’ai du télécharger tout le dossier jeux avec ses sous-dossiers pour enfin récupérer Test_Cards.exe | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Sam 19 Nov 2016 - 15:22 | |
| Ah, le problème avec le téléchargement des EXE... Je l'ai mis dans un ZIP su même nom. | |
| | | 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 Sam 19 Nov 2016 - 15:31 | |
| Maintenant, c'est tout bon ! Le zip : le EXE : | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Sam 19 Nov 2016 - 16:48 | |
| Et qu'est-ce que tu penses de l'aspect et des performances ? Je ne l'affiche pas encore, mais j'ai le choix d'environ 10 dos de cartes. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 1:41 | |
| J'ai mis une version provisoire de KGF.dll dans mon WebDav, dossier DLLs. C'est identique à la version précédente, aux différences suivantes près: - retrait de toutes les fonctions ayant trait à o_cards.dll - retrait de o.cards.dll qui était embarquée dans KGF.dll - ajout du début des fonctions de ma propre gestioin des cartes Et voici une démo, similaire au programme Delphi que j'avais posté. Mais cette fois, c'est en Panoramic, et c'est ultra-rapide. Mode d'emploi: - cliquer sur "Créer" - cela va : -- créer, dimensionner et positionner un terrain de jeu -- créer 2 piles (invisibles): une horizontale avec les cartes étalées et les faces visibles, et une à droite avec toutes les cartes empilées les unes sur les autres, dos visible -- créer les 52 cartes d'un jeu complet et les affecter dans la première pile A partir de là, on a un bouton "Ramasser" qui est activé. Il va collectionner toutes les cartes étalées et les empiler, dos visible, en haut à droite. Ce bouton se désactive et active un bouton "Distribuer". Il va renvoyer toutes les cartes empilées à nouveau dans la pile horizontale. - Code:
-
' test_MyCards.bas
label creer, supprimer, ramasser, distribuer
dim PG%, ST1%, ST2%, CD%(13,3) dim ncd%(2) dim res%, i%, k%, n%
dim debug% : debug% = 0
dim sHearts% : sHearts% = 0 dim sClubs% : sClubs% = 1 dim sDiamonds% : sDiamonds% = 2 dim sSpades% : sSpades% = 3
dim sgStockTopBackUp% : sgStockTopBackUp% = 0 dim sgStockTopFaceUp% : sgStockTopFaceUp% = 1 dim sgTopDown% : sgTopDown% = 2 dim sgLeftRight% : sgLeftRight% = 3 dim sgDownTop% : sgDownTop% = 4 dim sgRightLeft% : sgRightLeft% = 5
dim soNone% : soNone% = 0 dim soAscendant% : soAscendant% = 1 dim soDescendant% : soDescendant% = 2 dim scAll% : scAll% = 0 dim scSpades% : scSpades% = 1 dim scDiamonds% : scDiamonds% = 2 dim scClubs% : scClubs% = 3 dim scHearts% : scHearts% = 4 dim scBlack% : scBlack% = 5 dim scRed% : scRed% = 6 dim scAlternateBackRed% : scAlternateBackRed% = 7
full_space 0 dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer button 2 : top 2,10 : left 2,90 : caption 2,"Supprimer" : on_click 2,supprimer : inactive 2 button 6 : top 6,10 : left 6,410 : caption 6,"Ramasser" : on_click 6,ramasser : inactive 6 button 7 : top 7,10 : left 7,490 : caption 7,"Distribuer" : on_click 7,distribuer : inactive 7
end
creer: ' créer le terrain de jeu PG% = dll_call3("CreateMyCardsPlayground",handle(0),10,40) if debug%=1 then message "CreateMyCardsPlayground="+hex$(PG%)
' dimensionner le terrain de jeu res% = dll_call5("MyCardsPlaygroundGeometry",PG%,0,40,1200,650) if debug%=1 then message "MyCardsPlaygroundGeometry="+str$(res%)
' créer les 2 piles - u e de gauche à droite et une empilée les unes sur les autres ST1% = dll_call4("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%) if debug%=1 then message "CreateMyCardsStack="+str$(ST1%) res% = dll_call3("LocateMyCardsStack",ST1%,10,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST2% = dll_call4("CreateMyCardsStack",PG%,sgStockTopBackUp%,soNone%,scAll%) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST2%,1100,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%)
' créer les 52 cartes et les envoyer dans la pile horizontale ncd%(1)= 0 for i%=0 to 3 for k%=1 to 13 CD%(k%,i%) = dll_call3("CreateMyCardsCard",PG%,i%,k%) if CD%(k%,i%)=0 then message "oups "+str$(k%)+","+str$(i%) if CD%(k%,i%)<>0 then ncd%(1) = ncd%(1) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CD%(k%,i%)) res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST1%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(1))+" cartes ont été créées." inactive 1 active 2 active 6 return supprimer: PG% = dll_call1("DeleteMyCardsPlayground",PG%) if debug%=1 then message "DeleteMyCardsPlayground="+str$(PG%) active 1 inactive 2 inactive 6 inactive 7 return ramasser: for i%=3 to 0 step -1 for k%=13 to 1 step -1 res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST2%) if res%<0 then message "oups "+str$(k%)+","+str$(i%)+"="+str$(CD%(k%,i%)) if res%=0 then n% = n% + 1 ncd%(1) = ncd%(1) - 1 ncd%(2) = ncd%(2) + 1 if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(2))+" cartes ont été ramassées." inactive 6 active 7 return distribuer: for i%=0 to 3 for k%=1 to 13 res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST1%) if res%=0 then n% = n% + 1 ncd%(2) = ncd%(2) - 1 ncd%(1) = ncd%(1) + 1 if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(1))+" cartes ont été distribuées." inactive 7 active 6 return
Qu'est-ce que vous pensez de la présentation graphique et de la vitesse ? Ce qui marche déjà (sans être accessible dans cette démo), ce sont 12 images différentes pour le dos des cartes. Ce qui viendra dans les jours qui viennent: - suppression des cartes - afficher/cacher des cartes - reconnaissance de la carte par un clic - annulation illimitée des movements Tout ça est déjà en cours de réalisation. A échéance un peu plus lointaine, il y aura le drag_and_drop (glisser/coller) d'une carte, et, plus tard, d'une partie d'une pile, à partir d'une carte cliquée. | |
| | | 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 Dim 20 Nov 2016 - 2:51 | |
| C’est du beau travail, ça !
Merci Klaus.
Tu dis que tu abandonnes o_Cards.dll ? J’ai codé toutes les constantes utilisées dans o_Cards.ddl J’ai aussi codé toutes les fonctions exportées par o_Cards.dll. J’en ai testé quelques unes : Cards_init, Cards_GetVersion, c_About, ... Je ne suis pas allé plus loin : des ennuis de connexion sur internet. J’ai fais une bêtise sur mon PC et il me faut de la patience pour la réparer, et comme l’état de mes yeux s’empire de plus en plus, ça me dé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 Dim 20 Nov 2016 - 3:05 | |
| Oui, j'en étais là aussi, avec o_cards.dll. et j'avais fait le wrapper complet en Delphi,, intégré dans KGF.dll, pour pouvoir appeler ces fonctions par Panoramic. Car certaines fonctions sont impossibles à appeler par Panoramic. Plusieurs problèmes: certains types de paramètres de passent pas, certaines ne sont pas des fonctions, mais des procédures etc. D'où la nécessité de faire un wrapper en Panoramic. Jusque là, rien de bien méchant je sais faire.
Mais le problème, c'est que les piles et les cartes ne veulent absolument pas s'afficher si c'est appelé par Panoramic. Et je ne sais pas pourquoi. J'ai même demandé de l'aide au créateur, mais depuis le temps, il a dû changer d'activité - toujours est-il qu'il n'a pas répondu à ce jour.
Je que je viens de poster, c'est fait à partir d'un freeware open-source très léger que j'ai étendu en fonctionnalités et intégré dans KGF.sll. Aucun problème d'appel par Panoramic. Et je trouve les performances bluffantes. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 10:19 | |
| Bonjour Klaus, Je viens de faire le test et effectivement comme tu le dit c'est bluffant ! Bravo et bon courage pour 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 Dim 20 Nov 2016 - 11:18 | |
| Ca progresse... J'ai ajouté les nouveautés suivantes; - on peut maintenant paramétrer l'écartement des cartes sur une pile, en pixels - j'ai rendu accessible la possibilité de choisir le dos de page - je retourne les évènements dans un EDIT (à terme, ce sera un ON_USER_EVENT...) - plusieurs terrains de jeu peuvent être créés simultanément, et fonctionner de façon ndépendante ! Cela est montré dans la nouvelle version du programme de démo. Il crée une troisième pile, horizontale elle aussi, en-dessous de la première. Mais cette troisième pile a un écartement de 85 pixels ce qui dessine automatiquement les cartes détachées les unes des autres, sans recouvrement. Et je charge cette pile par douze cartes identiques (As de Pique en occurrence), mais je montre leur dos qui est différent pour chaque carte. Les évènements de clics dans le terrain de jeu sont reconnus et signalés, ainsi que les clics sur une carte. Là, on signale également le nom de la carte. Et en cliquant sur n'importe quelle carte de Trèfle, celle-ci se retourne à chaque clic. Voici la démo (en 162 lignes !): - Code:
-
' test_MyCards.bas
label creer, supprimer, ramasser, distribuer, event, test
dim PG%, ST1%, ST2%, ST3%, CD%(13,3), CDdos%(11) dim ncd%(3) dim res%, i%, k%, n%, s$, xcd%
dim debug% : debug% = 0
dim sHearts% : sHearts% = 0 dim sClubs% : sClubs% = 1 dim sDiamonds% : sDiamonds% = 2 dim sSpades% : sSpades% = 3
dim sgStockTopBackUp% : sgStockTopBackUp% = 0 dim sgStockTopFaceUp% : sgStockTopFaceUp% = 1 dim sgTopDown% : sgTopDown% = 2 dim sgLeftRight% : sgLeftRight% = 3 dim sgDownTop% : sgDownTop% = 4 dim sgRightLeft% : sgRightLeft% = 5
dim soNone% : soNone% = 0 dim soAscendant% : soAscendant% = 1 dim soDescendant% : soDescendant% = 2 dim scAll% : scAll% = 0 dim scSpades% : scSpades% = 1 dim scDiamonds% : scDiamonds% = 2 dim scClubs% : scClubs% = 3 dim scHearts% : scHearts% = 4 dim scBlack% : scBlack% = 5 dim scRed% : scRed% = 6 dim scAlternateBackRed% : scAlternateBackRed% = 7
full_space 0 dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer button 2 : top 2,10 : left 2,90 : caption 2,"Supprimer" : on_click 2,supprimer : inactive 2 button 6 : top 6,10 : left 6,410 : caption 6,"Ramasser" : on_click 6,ramasser : inactive 6 button 7 : top 7,10 : left 7,490 : caption 7,"Distribuer" : on_click 7,distribuer : inactive 7
button 8 : top 8,10 : left 8,570 : caption 8,"Test" : on_click 8,test : hide 8
edit 99 : left 99,700 : on_change 99,event : hide 99
end
creer: ' créer le terrain de jeu PG% = dll_call4("CreateMyCardsPlayground",handle(0),handle(99),10,40) if debug%=1 then message "CreateMyCardsPlayground="+hex$(PG%)
' dimensionner le terrain de jeu res% = dll_call5("MyCardsPlaygroundGeometry",PG%,0,40,1200,650) if debug%=1 then message "MyCardsPlaygroundGeometry="+str$(res%)
' créer les 3 piles - une de gauche à droite ' - une empilée les unes sur les autres ' - une à gauche avec cartes détachées ST1% = dll_call5("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%,15) if debug%=1 then message "CreateMyCardsStack="+str$(ST1%) res% = dll_call3("LocateMyCardsStack",ST1%,10,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST2% = dll_call5("CreateMyCardsStack",PG%,sgStockTopBackUp%,soNone%,scAll%,0) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST2%,1100,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST3% = dll_call5("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%,85) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST3%,10,200) if debug%=1 then message "LocateMyCardsStack="+str$(res%)
' créer les 52 cartes et les envoyer dans la pile horizontale ncd%(1)= 0 for i%=0 to 3 for k%=1 to 13 CD%(k%,i%) = dll_call4("CreateMyCardsCard",PG%,i%,k%,4) if CD%(k%,i%)=0 then message "oups - carte "+str$(k%)+","+str$(i%) if CD%(k%,i%)<>0 then ncd%(1) = ncd%(1) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CD%(k%,i%)) res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST1%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(1))+" cartes ont été créées." ' créer les 12 dos de cartes et les envoyer dans l'autre pile horizontale ncd%(3)= 0 for i%=0 to 11 CDdos%(i%) = dll_call4("CreateMyCardsCard",PG%,0,1,i%) if CDdos%(i%)=0 then message "oups - dos "+str$(i%) if CDdos%(i%)<>0 then ncd%(3) = ncd%(3) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CDdos%(i%)) res% = dll_call2("MoveMyCardsCardToStack",CDdos%(i%),ST3%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) res% = dll_call2("ManageMyCardsCard",CDdos%(i%),3) : ' retourner la carte ! next i% message str$(ncd%(3))+" dos de cartes ont été créées." inactive 1 active 2 active 6 return supprimer: PG% = dll_call1("DeleteMyCardsPlayground",PG%) if debug%=1 then message "DeleteMyCardsPlayground="+str$(PG%) active 1 inactive 2 inactive 6 inactive 7 return ramasser: for i%=3 to 0 step -1 for k%=13 to 1 step -1 res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST2%) if res%<0 then message "oups "+str$(k%)+","+str$(i%)+"="+str$(CD%(k%,i%)) if res%=0 then n% = n% + 1 ncd%(1) = ncd%(1) - 1 ncd%(2) = ncd%(2) + 1 if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(2))+" cartes ont été ramassées." inactive 6 active 7 return distribuer: for i%=0 to 3 for k%=1 to 13 res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST1%) if res%=0 then n% = n% + 1 ncd%(2) = ncd%(2) - 1 ncd%(1) = ncd%(1) + 1 if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(1))+" cartes ont été distribuées." inactive 7 active 6 return event: message "Evènement: "+text$(99) s$ = trim$(text$(99)) if left$(s$,2)="CC" if instr(s$,"Trèfle")>0 : ' carte de trèfle ? xcd% = hex(mid$(s$,3,8)) res% = dll_call2("ManageMyCardsCard",xcd%,3) : ' retourner la carte ! end_if end_if return
test: res% = dll_call2("ManageMyCardsCard",cd%(2,3),1) res% = dll_call2("ManageMyCardsCard",ST2%,1) return
et voici une capture: | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 15:35 | |
| J'ai ajouté le mélange des cartes. Ainsi, à chaque lancement, les cartes de la première ligne apparaissent mélangées de faon aléatoire. Voici le programme de démo adapté: - Code:
-
' test_MyCards.bas
label creer, supprimer, ramasser, distribuer, event, test
dim PG%, ST1%, ST2%, ST3%, CD%(13,3), CDdos%(11) dim ncd%(3) dim res%, i%, k%, n%, s$, xcd%
dim debug% : debug% = 0
dim sHearts% : sHearts% = 0 dim sClubs% : sClubs% = 1 dim sDiamonds% : sDiamonds% = 2 dim sSpades% : sSpades% = 3
dim sgStockTopBackUp% : sgStockTopBackUp% = 0 dim sgStockTopFaceUp% : sgStockTopFaceUp% = 1 dim sgTopDown% : sgTopDown% = 2 dim sgLeftRight% : sgLeftRight% = 3 dim sgDownTop% : sgDownTop% = 4 dim sgRightLeft% : sgRightLeft% = 5
dim soNone% : soNone% = 0 dim soAscendant% : soAscendant% = 1 dim soDescendant% : soDescendant% = 2 dim scAll% : scAll% = 0 dim scSpades% : scSpades% = 1 dim scDiamonds% : scDiamonds% = 2 dim scClubs% : scClubs% = 3 dim scHearts% : scHearts% = 4 dim scBlack% : scBlack% = 5 dim scRed% : scRed% = 6 dim scAlternateBackRed% : scAlternateBackRed% = 7
full_space 0 dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer button 2 : top 2,10 : left 2,90 : caption 2,"Supprimer" : on_click 2,supprimer : inactive 2 button 6 : top 6,10 : left 6,410 : caption 6,"Ramasser" : on_click 6,ramasser : inactive 6 button 7 : top 7,10 : left 7,490 : caption 7,"Distribuer" : on_click 7,distribuer : inactive 7
button 8 : top 8,10 : left 8,570 : caption 8,"Test" : on_click 8,test : hide 8
memo 98 : hide 98 : bar_both 98 edit 99 : left 99,700 : on_change 99,event : hide 99
end
creer: ' créer le terrain de jeu PG% = dll_call4("CreateMyCardsPlayground",handle(0),handle(99),10,40) if debug%=1 then message "CreateMyCardsPlayground="+hex$(PG%)
' dimensionner le terrain de jeu res% = dll_call5("MyCardsPlaygroundGeometry",PG%,0,40,1200,650) if debug%=1 then message "MyCardsPlaygroundGeometry="+str$(res%)
' créer les 3 piles - une de gauche à droite ' - une empilée les unes sur les autres ' - une à gauche avec cartes détachées ST1% = dll_call5("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%,15) if debug%=1 then message "CreateMyCardsStack="+str$(ST1%) res% = dll_call3("LocateMyCardsStack",ST1%,10,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST2% = dll_call5("CreateMyCardsStack",PG%,sgStockTopBackUp%,soNone%,scAll%,0) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST2%,1100,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST3% = dll_call5("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%,85) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST3%,10,200) if debug%=1 then message "LocateMyCardsStack="+str$(res%)
' créer les 52 cartes et les envoyer dans la pile horizontale ncd%(1)= 0 for i%=0 to 3 for k%=1 to 13 CD%(k%,i%) = dll_call4("CreateMyCardsCard",PG%,i%,k%,4) if CD%(k%,i%)=0 then message "oups - carte "+str$(k%)+","+str$(i%) if CD%(k%,i%)<>0 then ncd%(1) = ncd%(1) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CD%(k%,i%)) res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST1%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(1))+" cartes ont été créées." ' mélanger les 52 cartes res% = dll_call1("ShuffleMyCardsStack",ST1%) if debug%=1 then message "ShuffleMyCardsStack="+str$(res%) ' créer les 12 dos de cartes et les envoyer dans l'autre pile horizontale ncd%(3)= 0 for i%=0 to 11 CDdos%(i%) = dll_call4("CreateMyCardsCard",PG%,0,1,i%) if CDdos%(i%)=0 then message "oups - dos "+str$(i%) if CDdos%(i%)<>0 then ncd%(3) = ncd%(3) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CDdos%(i%)) res% = dll_call2("MoveMyCardsCardToStack",CDdos%(i%),ST3%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) res% = dll_call2("ManageMyCardsCard",CDdos%(i%),3) : ' retourner la carte ! next i% message str$(ncd%(3))+" dos de cartes ont été créées." inactive 1 active 2 active 6 return supprimer: PG% = dll_call1("DeleteMyCardsPlayground",PG%) if debug%=1 then message "DeleteMyCardsPlayground="+str$(PG%) active 1 inactive 2 inactive 6 inactive 7 return ramasser: res% = dll_call2("MoveMyCardsStackToStack",ST1%,ST2%) ncd%(1) = ncd%(1) - res% ncd%(2) = res% if debug%=1 then message "MoveMyCardsStackToStack="+str$(res%) message str$(ncd%(2))+" cartes ont été ramassées." inactive 6 active 7 return distribuer: res% = dll_call2("MoveMyCardsStackToStack",ST2%,ST1%) ncd%(2) = ncd%(2) - res% ncd%(1) = res% if debug%=1 then message "MoveMyCardsStackToStack="+str$(res%) message str$(ncd%(1))+" cartes ont été distribuées." inactive 7 active 6 return event: message "Evènement: "+text$(99) s$ = trim$(text$(99)) if left$(s$,2)="CC" if instr(s$,"Trèfle")>0 : ' carte de trèfle ? xcd% = hex(mid$(s$,3,8)) res% = dll_call2("ManageMyCardsCard",xcd%,3) : ' retourner la carte ! end_if end_if return
test: res% = dll_call3("GetMyCardsInfo",ST1%,3,handle(98)) s$ = chr$(13)+chr$(10) if res%>0 for i%=1 to res% s$ = s$ + item_read$(98,i%) + chr$(13) + chr$(10) next i% end_if message str$(res%)+" cartes définies"+s$ return
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 Dim 20 Nov 2016 - 18:02 | |
| Lors du lancement, par le bouton "Créer", le programme demande maintenant un fichier BMP qui servira d'image de fond pour le terrain de jeu. Ceci se fait via un OPEN_DIALOG. Si l'on annule ce dialogue par le bouton "Annuler", ça fonctionne comme avant, avec un tapis vert. Mais si l'on choisit un fichier BMP et si ce fichier existe, alors il est utilisé comme image de fond par un système équivalent STRETCH_ON, et toutes les cartes se placent sur cette image. Voici le programme: - Code:
-
' test_MyCards.bas
label creer, supprimer, ramasser, distribuer, event, test
dim PG%, ST1%, ST2%, ST3%, CD%(13,3), CDdos%(11) dim ncd%(3), fond$ dim res%, i%, k%, n%, s$, xcd%
dim debug% : debug% = 0
dim sHearts% : sHearts% = 0 dim sClubs% : sClubs% = 1 dim sDiamonds% : sDiamonds% = 2 dim sSpades% : sSpades% = 3
dim sgStockTopBackUp% : sgStockTopBackUp% = 0 dim sgStockTopFaceUp% : sgStockTopFaceUp% = 1 dim sgTopDown% : sgTopDown% = 2 dim sgLeftRight% : sgLeftRight% = 3 dim sgDownTop% : sgDownTop% = 4 dim sgRightLeft% : sgRightLeft% = 5
dim soNone% : soNone% = 0 dim soAscendant% : soAscendant% = 1 dim soDescendant% : soDescendant% = 2 dim scAll% : scAll% = 0 dim scSpades% : scSpades% = 1 dim scDiamonds% : scDiamonds% = 2 dim scClubs% : scClubs% = 3 dim scHearts% : scHearts% = 4 dim scBlack% : scBlack% = 5 dim scRed% : scRed% = 6 dim scAlternateBackRed% : scAlternateBackRed% = 7
full_space 0 dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"Créer" : on_click 1,creer button 2 : top 2,10 : left 2,90 : caption 2,"Supprimer" : on_click 2,supprimer : inactive 2 button 6 : top 6,10 : left 6,410 : caption 6,"Ramasser" : on_click 6,ramasser : inactive 6 button 7 : top 7,10 : left 7,490 : caption 7,"Distribuer" : on_click 7,distribuer : inactive 7
button 8 : top 8,10 : left 8,570 : caption 8,"Test" : on_click 8,test : ' hide 8
open_dialog 97 memo 98 : hide 98 : bar_both 98 edit 99 : left 99,700 : on_change 99,event : hide 99
end
creer: ' créer le terrain de jeu filter 97,"Fchiers *.BMP |*.bmp" fond$ = file_name$(97) if fond$="_" fond$ = "" else if file_exists(fond$)=0 then fond$ = "" end_if PG% = dll_call5("CreateMyCardsPlayground",handle(0),handle(99),10,40,adr(fond$)) if debug%=1 then message "CreateMyCardsPlayground="+hex$(PG%)
' dimensionner le terrain de jeu res% = dll_call5("MyCardsPlaygroundGeometry",PG%,0,40,1200,650) if debug%=1 then message "MyCardsPlaygroundGeometry="+str$(res%)
' créer les 3 piles - une de gauche à droite ' - une empilée les unes sur les autres ' - une à gauche avec cartes détachées ST1% = dll_call5("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%,15) if debug%=1 then message "CreateMyCardsStack="+str$(ST1%) res% = dll_call3("LocateMyCardsStack",ST1%,10,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST2% = dll_call5("CreateMyCardsStack",PG%,sgStockTopBackUp%,soNone%,scAll%,0) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST2%,1100,40) if debug%=1 then message "LocateMyCardsStack="+str$(res%) ST3% = dll_call5("CreateMyCardsStack",PG%,sgLeftRight%,soNone%,scAll%,85) if debug%=1 then message "CreateMyCardsStack="+str$(ST2%) res% = dll_call3("LocateMyCardsStack",ST3%,10,200) if debug%=1 then message "LocateMyCardsStack="+str$(res%)
' créer les 52 cartes et les envoyer dans la pile horizontale ncd%(1)= 0 for i%=0 to 3 for k%=1 to 13 CD%(k%,i%) = dll_call4("CreateMyCardsCard",PG%,i%,k%,4) if CD%(k%,i%)=0 then message "oups - carte "+str$(k%)+","+str$(i%) if CD%(k%,i%)<>0 then ncd%(1) = ncd%(1) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CD%(k%,i%)) res% = dll_call2("MoveMyCardsCardToStack",CD%(k%,i%),ST1%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) next k% next i% message str$(ncd%(1))+" cartes ont été créées." ' mélanger les 52 cartes res% = dll_call1("ShuffleMyCardsStack",ST1%) if debug%=1 then message "ShuffleMyCardsStack="+str$(res%) ' créer les 12 dos de cartes et les envoyer dans l'autre pile horizontale ncd%(3)= 0 for i%=0 to 11 CDdos%(i%) = dll_call4("CreateMyCardsCard",PG%,0,1,i%) if CDdos%(i%)=0 then message "oups - dos "+str$(i%) if CDdos%(i%)<>0 then ncd%(3) = ncd%(3) + 1 if debug%=1 then message "CreateMyCardsCard="+str$(CDdos%(i%)) res% = dll_call2("MoveMyCardsCardToStack",CDdos%(i%),ST3%) if debug%=1 then message "MoveMyCardsCardToStack="+str$(res%) res% = dll_call2("ManageMyCardsCard",CDdos%(i%),3) : ' retourner la carte ! next i% message str$(ncd%(3))+" dos de cartes ont été créées." inactive 1 active 2 active 6 return supprimer: PG% = dll_call1("DeleteMyCardsPlayground",PG%) if debug%=1 then message "DeleteMyCardsPlayground="+str$(PG%) active 1 inactive 2 inactive 6 inactive 7 return ramasser: res% = dll_call2("MoveMyCardsStackToStack",ST1%,ST2%) ncd%(1) = ncd%(1) - res% ncd%(2) = res% if debug%=1 then message "MoveMyCardsStackToStack="+str$(res%) message str$(ncd%(2))+" cartes ont été ramassées." inactive 6 active 7 return distribuer: res% = dll_call2("MoveMyCardsStackToStack",ST2%,ST1%) ncd%(2) = ncd%(2) - res% ncd%(1) = res% if debug%=1 then message "MoveMyCardsStackToStack="+str$(res%) message str$(ncd%(1))+" cartes ont été distribuées." inactive 7 active 6 return event: message "Evènement: "+text$(99) s$ = trim$(text$(99)) if left$(s$,2)="CC" if instr(s$,"Trèfle")>0 : ' carte de trèfle ? xcd% = hex(mid$(s$,3,8)) res% = dll_call2("ManageMyCardsCard",xcd%,3) : ' retourner la carte ! end_if end_if return
test:
return
Dernière édition par Klaus le Dim 20 Nov 2016 - 19:07, édité 1 fois | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 18:34 | |
| SOS Klaus !
J'ai un message d'erreur après la sélection de l'image de fond :
Not correct arithmetic expression ligne 62 !
J'ai téléchargé la DLL sur le lien de ton message. Mais j'avais déjà le même message à la précédente version de cet après midi... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 19:08 | |
| La ligne 62 doit être: - Code:
-
PG% = dll_call5("CreateMyCardsPlayground",handle(0),handle(99),10,40,adr(fond$)) Par rapport à la version précédente, la fonction est passée de 4 à 5 paramètres, en ajoutant l'image de fond. J'ai remis la DLL dans mon WebDav, des fois que j'aurais mélangé des versions... Et j'ai remis le code du programme de démo dans mon précédent post, à tout hasard. Je travaille actuellement sur le glisser/coller d'une carte... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 19:48 | |
| Désolé Klaus ! On se perd sur ton Webdav. En plus la version ne semble pas être la bonne ! Franchement je suis perdu... Généralement, je prend le lien KGF.DLL identifié dans ta signature. Donc là je ne doit pas être au bon endroit. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 19:51 | |
| Ben non ! Le lien dans ma signature pointe vers mon site internet. Or, cette version d'évaluation de KGF.dll n'est que sur le WebDav, dont lien est également dans ma signature, avec le code utilisateur et le mot de passe. C'est dans le dossier DLLs. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 20:02 | |
| J'ai bien pris le fichier KGF.DLL dans le dossier DLLs du WEBDAV et j'ai toujours la même erreur. J'abandonne... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Démonstration de CARDS.DLL Dim 20 Nov 2016 - 20:24 | |
| Bon j'ai tout repris a zero et j'ai eu droit a un nouveau message me demandant d'installer card.dll Chose que j'ai fait sans attendre !
J'ai ensuite réussi a lancer le programme. Ce qui est bizarre c'est lorsque je clique sur certaines cartes elle sont cachés avec le dos visible et d'autres où rien ne se passe. la carte ne se cache pas. De plus lorsque je clique sur les dos des cartes au milieu de l'écran elles indiques des as !? Est ce normal ?
Sinon le ramassage et la distribution sont ultra rapide. En attendant 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 Dim 20 Nov 2016 - 23:36 | |
| - Citation :
- Bon j'ai tout repris a zero et j'ai eu droit a un nouveau message me demandant d'installer card.dll
Tiens ? C'est curieux... Mon programme ne l'utilise pas. J'avais fait des essais avec ça il y a quelques temps, mais j'ai abandonné. Il doit y avoir une vielle référence qui traine, et je vais traquer cela - ce n'est pas normal. Merci de l'avoir signalé. - Citation :
- Ce qui est bizarre c'est lorsque je clique sur certaines cartes elle sont cachés avec le dos visible et d'autres où rien ne se passe. la carte ne se cache pas.
Oui, c'est normal. Si tu regardes dans un de mes posts précédents, tu verras que j'avais ajouté la possiblité de retourner une carte, et que j'en avais fait la démonstration sur toutes les cartes de Trèfle, pas les autres. - Citation :
- De plus lorsque je clique sur les dos des cartes au milieu de l'écran elles indiques des as !?
Est ce normal ? Là encore, c'est normal: je ne voulais donner que l'image de tous les dos de cartes possibles, et j'ai simplement choisi l'as de pique comme carte - seul le dos comptait. - Citation :
- Sinon le ramassage et la distribution sont ultra rapide.
Merci ! Je pense que c'est le grand avantage de cette implémentation. J'ai expérimenté plusieurs systèmes d'affichage de cartes, et au-delà de la plus ou moins grande difficulté technique de la mise en oeuvre des différentes méthodes, celle-ci est de loin la plus performante, avec finalement un code Delphi minuscule par rapport aux autres, et qui surtout préserve sa vitesse à travers l'interface Panoramic. - Citation :
- En attendant la suite...
J'ai commencé à travailer sur le glisser/déposer et sur la trace des opérations avec possibilité d'annulation, sans limitation de profondeur (sauf limitatiions techniques de l'ordinateur, bien sûr...). Je réalise aussi en ce momentune fonction puissante de génération d'un jeu de cartes par un seul appel, et non par une boucle en Panoramic comme dans ce programme de démo. Cela permettra de générer un jeu en une couleur quelconque ou dans les 4 couleurs mélangées, en indiquant la carte de début et la carte de fin. Ainsi, on pourra générer aisément un jeu de patience, un jeu de belote, un jeu de bonneteau etc, en une seule ligne. Tout ce qui va dans le sens de la somplification sera utile. Merci de tes essais et appréciations ! Si tu as des suggestions pour la suite, n'hésite 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
| |
| |
| |