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
» Synedit Parameters
par Yannick Aujourd'hui à 0:27

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Hier à 21:16

» Compilateur FBPano
par jean_debord Hier à 9:56

» Bienvenue à Virtualalan !
par UltraVox Hier à 9:18

» Concours de Morpions
par jjn4 Hier à 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

» >199
par maelilou Mar 20 Juin 2017 - 14:13

» NUMBER_FOCUS
par Yannick Lun 19 Juin 2017 - 15:25

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Démonstration de CARDS.DLL

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

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 4:00

Le glisser/Déposer est implémenté. Le fait de "sortir" une carte de sa pile la "détache" de la pile en question. Ceci est visible dans la pile horizontale du haut. On peut en retirer des cartes et les placer ailleurs. Ensuite, lors du "ramassage", elles ne seront plus prises en compte, même si graphiquement elles sont replacées dans cette pile. On le voit par le compteur des cartes ramassées - elles sont décomptées, et laissées en place là où on les a placées. Mais elles continueront à réagir au clic et envoyer leur identification, et les trèfles se retournent à chaque clique, même déplacées. Et le clic sur le terrain de jeu reste reconnu en tant que tel.

Il faut reprendre KGF.dll dans le WebDav, dossier DLLs.

Voici le code du programme de démo:
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 : width 99,300 : 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:
  s$ = trim$(text$(99))
  if left$(s$,2)="CC"      : ' clic sur carte
    message "clic - "+text$(99)
    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
  if left$(s$,2)="CP"      : ' clic sur terrain de jeu
    message "clic - "+text$(99)
  end_if
  return


test:


  return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 4:47




Merci Klaus pour cette belle avancée.
J’ai testé : c’est fluide et sans clignotement.


Tu éprouves un sacré plaisir pour faire ça !
Bonne continuation !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 5:24

Je résume :
Jusqu’à présent, sont crées les fonctions suivantes :
1 )   CreateMyCardsPlayground  < --- créer le terrain de jeu
2 )   MyCardsPlaygroundGeometry < --- dimensionner le terrain de jeu
3 )   CreateMyCardsStack < --- créer une pile
4 )   LocateMyCardsStack < --- localiser une carte dans une pile
5 )   MoveMyCardsCardToStack < ---- déplacer une carte vers une pile
6 )   ShuffleMyCardsStack < --- Mélanger les cartes d’une pile
7 )   ManageMyCardsCard < --- Retourner une carte
8 )   DeleteMyCardsPlayground < ---Supprimer le terrain de jeu


Tout ça est BOOO !  king
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Laurent (Minibug)

avatar

Nombre de messages : 2340
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 9:51

Bonjour Klaus

j'ai testé aussi et c'est très sympa ! cheers

Je te signale juste que dans les cartes que je retire et qui ne sont pas des trèfles, lorsque je fait un ramassage, parmi les carte déplacés il y en a une qui se met 'coté dos' (face caché).
Et si je continu a redistribuer et ramasser de nouveau, au moment de ramasser une nouvelle carte se retourne face caché. Et ainsi de suite a chaque ramassage...

Sinon le glisser déplacer fonctionne très bien. Bravo ! drunken  

Pour les nouvelles idée, tu devrais penser pour la suite (mais tu y a sûrement pensé) à faire en sorte que les cartes déplacées se 'bloquent' les une à coté des autres et s'alignent une à une horizontalement ou verticalement. Wink

Voila pour le moment. Bon courage !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 13:44

Merci à tous deux pour vos remarques et votre intérêt !

Citation :
Je te signale juste que dans les cartes que je retire et qui ne sont pas des trèfles, lorsque je fait un ramassage, parmi les carte déplacés il y en a une qui se met 'coté dos' (face caché).
Et si je continu a redistribuer et ramasser de nouveau, au moment de ramasser une nouvelle carte se retourne face caché. Et ainsi de suite a chaque ramassage...
Ok - je vois d'où ça vient et je vais le corriger.

Citation :
Pour les nouvelles idée, tu devrais penser pour la suite (mais tu y a sûrement pensé) à faire en sorte que les cartes déplacées se 'bloquent' les une à coté des autres et s'alignent une à une horizontalement ou verticalement.
Oui, c'est prévu. La suite du glisser/déposer sera:
- déterminer la cible de la dépose (jusqu'ici, on peut déposer n'importe où...)
- paramétrer les autorisations de dépose, pour chaque pile et pour le terrain de jeu
- paramétrer les autorisation d'enlèvement d'une carte, par pile et pour le terrain de jeu
- paramétrer le nombre maxi de cartes par pile
- paramétrer le nombre de cartes cachées par pile
etc.

C'est loin d'être fini. Mon souhait, c'est de faire une "boite à outils" pour la création de jeux de cartes, et non simplement une base pour faire des patiences. Poker, Belote, Memory, Bonneteau - pour ne citer que quelques-uns. Sans parler des jeux qu'on pourrait inventer ?

PS:

Avez-vous essayé l'image de fond ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 15:37

Klaus a écrit:
Avez-vous essayé l'image de fond ?

ça donne ceci : Sympa, non ?:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 16:40

Ouiiiiiiiiii c'était l'idée !

Nouvelle version:
- paramétrage des autorisations pour l'accrochage d'une carte pour la faire glisser, tant à partir du terrain de jeu qu'à partir d'une pile
- paramétrage des autorisations pour la dépose d'une carteaprès l'avoir fait glisser, tant dans le terrain de jeu que dans une pile

Dans le programme de démo ci-après, me terrain de jeu a les autorisations suivantes:
Code:
  ' on ne peut "accrocher" que les cartes ouvertes dans le terrain de jeu
  ' on peut déposer n'importe où
  res% = dll_call3("MyCardsPlaygroundOptions",PG%,dragFaceUp%,DropAny%)

La première pile horizontale a les autorisations suivantes:
Code:
  ' on ne peut "accrocher" que la dernière carte de stack 1
  ' on peut déposer des cartes - elles se mettront automatiquement en dernière position
  res% = dll_call3("MyCardsCardStackOptions",ST1%,dragLast%,DropLast%) : ' dropNone%)

La deuxième pile (celle recevant le ramassage) a les autorisations suivantes:
Code:
  ' par défaut, on ne peut pas "accrocher" une carte
  ' par défaut, on ne peut déposer aucune carte

La troisième pile horizontale (celle montrant les dos des cartes) a les autorisations suivantes:
Code:
  ' on peut tirer toutes les cartes de stack 3
  ' on ne peut déposer aucune carte
  res% = dll_call3("MyCardsCardStackOptions",ST3%,dragAll%,dropNone%)

Et voici le code:
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

dim dragNone%          : dragNone%          = 0
dim dragAll%            : dragAll%            = 1
dim dragFaceUp%        : dragFaceUp%        = 2
dim dragFaceDown%      : dragFaceDown%      = 3
dim dragLast%          : dragLast%          = 4

dim dropNone%          : dropNone%          = 0
dim DropAny%            : DropAny%            = 1
dim DropLast%          : DropLast%          = 2


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 : width 99,300 : 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%)
  ' on ne peut "accrocher" que les cartes ouvertes dans le terrain de jeu
  ' on peut déposer n'importe où
  res% = dll_call3("MyCardsPlaygroundOptions",PG%,dragFaceUp%,DropAny%)

  ' 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%)
  ' on ne peut "accrocher" que la dernière carte de stack 1
  ' on peut déposer des cartes - elles se mettront automatiquement en dernière position
  res% = dll_call3("MyCardsCardStackOptions",ST1%,dragLast%,DropLast%) : ' dropNone%)

  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%)
  ' par défaut, on ne peut pas "accrocher" une carte
  ' par défaut, on ne peut déposer aucune carte

  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%)
  ' on peut tirer toutes les cartes de stack 3
  ' on ne peut déposer aucune carte
  res% = dll_call3("MyCardsCardStackOptions",ST3%,dragAll%,dropNone%)

  ' 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:
  s$ = trim$(text$(99))
  if left$(s$,2)="CC"      : ' clic sur carte
    message "clic - "+text$(99)
    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
  if left$(s$,2)="CP"      : ' clic sur terrain de jeu
    message "clic - "+text$(99)
  end_if
  return


test:


  return

Faites glisser une des cartes montrant leur dos, n'importe où dans la ligne des cartes découvertes en haut. elle se mettra à la fin en se découvrant automatiquement.

ATTENTION !

Je n'ai momentanément pas accès à mon WebDav ! Donc, j'ai mis KGF.dll sur mon site - les liens dans la signature donnent la bonne version, tant pour le site normal que pour le site miroir !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 19:26

Nouvelle version:
J'ai rendu actif les contrôles selon le tri des valeurs (ascendants, ...) et les couleurs (Pique, Coeur, ...) des piles, pour la fonction MoveMyCardsCardToStack. Si, dans la création de la pile ST1%, on remplace scAll% par scHeart%, par exemple, seules les 13 cartes Coeur apparaîtront, et la pile ne contiendra effectivement que 13 cartes. En plus, il n'est plus possible d'y glisser une des cartes à dos visible, car elles sont toutes des As de Pique ! C'est la preuve que le contrôle par couleur marche. Il en est de même pour le classement par valeur.

Voici le programme de démo adapté avec les nouvelles constantes:
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 scAlternateBlackRed% : scAlternateBlackRed% = 7

dim dragNone%            : dragNone%            = 0
dim dragAll%            : dragAll%            = 1
dim dragFaceUp%          : dragFaceUp%          = 2
dim dragFaceDown%        : dragFaceDown%        = 3
dim dragLast%            : dragLast%            = 4

dim dropNone%            : dropNone%            = 0
dim DropAny%            : DropAny%            = 1
dim DropLast%            : DropLast%            = 2


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 : width 99,300 : 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%)
  ' on ne peut "accrocher" que les cartes ouvertes dans le terrain de jeu
  ' on peut déposer n'importe où
  res% = dll_call3("MyCardsPlaygroundOptions",PG%,dragFaceUp%,DropAny%)

  ' 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)
  ' <========== dans la ligne précédente, essayez scHearts% à la place de scAll% !!!!!
  if debug%=1 then message "CreateMyCardsStack="+str$(ST1%)
  res% = dll_call3("LocateMyCardsStack",ST1%,10,40)
  if debug%=1 then message "LocateMyCardsStack="+str$(res%)
  ' on ne peut "accrocher" que la dernière carte de stack 1
  ' on peut déposer des cartes - elles se mettront automatiquement en dernière position
  res% = dll_call3("MyCardsCardStackOptions",ST1%,dragLast%,DropLast%) : ' dropNone%)

  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%)
  ' par défaut, on ne peut pas "accrocher" une carte
  ' par défaut, on ne peut déposer aucune carte

  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%)
  ' on peut tirer toutes les cartes de stack 3
  ' on ne peut déposer aucune carte
  res% = dll_call3("MyCardsCardStackOptions",ST3%,dragAll%,dropNone%)

  ' 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:
  s$ = trim$(text$(99))
  if left$(s$,2)="CC"      : ' clic sur carte
    message "clic - "+text$(99)
    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
  if left$(s$,2)="CP"      : ' clic sur terrain de jeu
    message "clic - "+text$(99)
  end_if
  return


test:


  return

Note:

Le WebDav et les deux sites sont à jour !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 20:23

Voici un début de programme utilisant au fur et à mesure les avancées de KGF.DLL.
Je me suis inspiré d’un code en Delphi pour commencer mon code Panoramic.
Je ne suis pas sûr d’en venir à bout, mais tu veux bien, Klaus (ou quelqu’un d’autre) le reprendre pour illustrer les nouvelles fonctions de KGF.DLL ?


Voici mon code qui ne fait presque rien … à part le choix du fonds, l’affichage des Règles du jeu et celui de l’à-propos !

Code:

rem ============================================================================
rem           Duel
rem ============================================================================
rem  Sur le tapis de jeu, les cartes sont réparties en piles pouvant contenir
rem  52 cartes.
rem  Piles 1 à 4 : les familles
rem  Piles 5 et 6 : jeu du programme
rem  Piles 7 et 8 : votre jeu
rem  Les piles des joueurs se composent de :
rem    - un talon couvert, les cartes distribuées
rem    - un talon découvert, les cartes retournées et non placées
rem ============================================================================

Constantes()
Variables()
GUI()
Menu()

end
rem ============================================================================
' Les constantes pour KGF.DLL
SUB Constantes()
    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
END_SUB
rem ============================================================================
SUB Variables()
    label choix
' Les constantes pour le jeu
    dim kx(8), ky(8) : ' positions des piles sur le tapis
    kx(1) = 010 : kx(2) = 090 : kx(3) = 170 : kx(4) = 250
    kx(5) = 090 : kx(6) = 170 : kx(7) = 090 : kx(8) = 170
    ky(1) = 112 : ky(2) = 112 : ky(3) = 112 : ky(4) = 112
    ky(5) = 010 : ky(6) = 010 : ky(7) = 214 : ky(8) = 214
' Les piles
    dim pile1(52), pile2(52), pile3(52), pile4(52) : ' les familes
    dim pile5(52), pile6(52)                       : ' jeu du programme
    dim pile7(52), pile8(52)                       : ' votre jeu
    dim ctr1(52) , ctr2(52), ctr3(52), ctr4(52)    : ' compteur des nombres ...
    dim ctr5(52) , ctr6(52), ctr7(52), ctr8(52)    : ' ... de cartes dans les piles
' Les variables globales
    dim debok,posok,movok : ' boolean
    dim sx,sy,px,py,dx,dy : ' integer
    dim nc,jr,nb1,nb2,pdeb,pfin :' byte
' ==============================================================================
    dim fond$ : fond$ = ""
    dim res%, PG%
    dim ST1%, ST2%, ST3%, ST4%, ST5%, ST6%, ST7%, ST8%
    dim CD%(13,3), CDdos%(11), ncd%(3)
END_SUB
rem ============================================================================
SUB GUI()
    width 0,700 : height 0,550
    color 0,150,100,50

    open_dialog 97
    edit 99 : left 99,700 : width 99,300 : hide 99

    application_title "Jeu de cartes : Le DUEL"
    caption 0,"Jeu de cartes : DUEL"
    dll_on "KGF.dll"
END_SUB
rem ============================================================================
SUB Menu()
    main_menu 10
    sub_menu  11 : parent 11,10 : caption 11,"Jeu"
    sub_menu  12 : parent 12,11 : caption 12,"Nouvelle partie" : on_click 12,choix
    sub_menu  13 : parent 13,11 : caption 13,"Quitter"         : on_click 13,choix

    sub_menu  20 : parent 20,10 : caption 20,"Options"
    sub_menu  21 : parent 21,20 : caption 21,"Choisir un fonds ..." : on_click 21, choix

    sub_menu  30 : parent 30,10 : caption 30,"Règles du jeu"   : on_click 30,choix
    sub_menu  40 : parent 40,10 : caption 40,"A propos"        : on_click 40,choix
END_SUB
rem ============================================================================
Choix:
    select number_click
        case 12 : Nouvelle_Partie()
        case 13 : Quitter()
        case 21 : Fond()
        case 30 : Regles_Jeu()
        case 40 : A_Propos()
    end_select
return
rem ============================================================================
SUB Fond()
    filter 97,"Fchiers *.BMP |*.bmp"
    fond$ = file_name$(97)
    if fond$ = "_"
       fond$ = ""
    else
       if file_exists(fond$) = 0 then fond$ = ""
    end_if
    Afficher_Tapis()
END_SUB
rem ============================================================================
SUB Nouvelle_Partie()
    Afficher_Tapis()
    Melanger_Cartes()
    Creer_Les_8_Piles()
END_SUB
rem ============================================================================
' Afficher le tapis du jeu
SUB Afficher_Tapis()
     PG% = dll_call5("CreateMyCardsPlayground",handle(0),handle(99),50,40,adr(fond$))
END_SUB
rem ============================================================================
' mélanger les 52 cartes
SUB Melanger_Cartes()
    res% = dll_call1("ShuffleMyCardsStack",ST1%)
END_SUB
rem ============================================================================
SUB Creer_Les_8_Piles()
   message "Paydall est entrain d'y réflechir !"
END_SUB
rem ============================================================================
SUB Regles_Jeu()
    dim_local t$
    t$ = ""
    t$ = t$ + "Ce jeu est une réussite qui oppose deux joueurs, l'un des deux étant" + chr$(13)
    t$ = t$ + "vous-même. Le rôle du second étant tenu avec brio par le programme." + chr$(13)
    t$ = t$ + "Le jeu se joue avec 52 cartes." + chr$(13) + chr$(13)
    t$ = t$ + "-----------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Le but" + chr$(13)
    t$ = t$ + "-----------------------------------------------------------------" + chr$(13) + chr$(13)
    t$ = t$ + "Epuiser son propre jeu avant son adversaire, en formant des familes" + chr$(13)
    t$ = t$ + "ascendantes : As, 2, 3, ..., Roi" + chr$(13) + chr$(13)
    t$ = t$ + "-----------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Les moyens" + chr$(13)
    t$ = t$ + "-----------------------------------------------------------------" + chr$(13)+ chr$(13)
    t$ = t$ + "A tour de rôle, les joueurs retournent une carte :" + chr$(13)
    t$ = t$ + "  - S'il s'agit d'un AS, il est déposé sur le tapis où il servira de base à" + chr$(13)
    t$ = t$ + "    la constitution d'une famille" + chr$(13)
    t$ = t$ + "  - Si la carte retournée ne trouve pas sa place dans l'une des familles" + chr$(13)
    t$ = t$ + "    elle rejoint le talon découvert." + chr$(13)
    t$ = t$ + "  - Si elle a une valeur directement voisine de la carte supérieure du" + chr$(13)
    t$ = t$ + "    talon découvert adverse, elle peut s'y installer, sans tenir compte" + chr$(13)
    t$ = t$ + "    de la famille." + chr$(13)
    t$ = t$ + "    De même, un joueur peut se décharger d'une ou plusieurs cartes de" + chr$(13)
    t$ = t$ + "    son talon découvert vers celui de son adversaire. Cette opération" + chr$(13)
    t$ = t$ + "    doit être réalisée avant d'avoir retourné la carte du talon muet"+ chr$(13) + chr$(13)
    t$ = t$ + "Quand un joueur a épuisé son talon muet, il retourne le talon découvert" + chr$(13)
    t$ = t$ + "et le dépouille à nouveau, carte par carte" + chr$(13)
    t$ = t$ + "Le gagnant est celui qui, le premier, à épuisé toutes ses cartes"+ chr$(13) + chr$(13)
    t$ = t$ + " Le jeu du programe est en haut" + chr$(13)
    t$ = t$ + " Le talon muet est à droite: le talon découvert est à gauche" + chr$(13)
    t$ = t$ + " Le votre est en bas " + chr$(13)
    t$ = t$ + " Le talon muet est à gauche: le talon découvert est à droite" + chr$(13)
    t$ = t$ + " Les familles sont au milieu " + chr$(13)+chr$(13)
    t$ = t$ + "-----------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Comment jouer ?" + chr$(13)
    t$ = t$ + "-----------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour retourner une carte du talon muet, il suffit de cliquer dessus." + chr$(13)
    t$ = t$ + "Pour retourner le talon découvert, quand le talon muet est épuisé," + chr$(13)
    t$ = t$ + "cliquer sur l'emplacement du talon muet." + chr$(13)
    t$ = t$ + "Pour déplacer une carte, cliquer dessus, garder le bouton enfoncé" + chr$(13)
    t$ = t$ + "en déplaçant la carte jusqu'à la position voulue, pui lâcher tout." + chr$(13)
    t$ = t$ + "deux compteurs indiquent le nombre de cartes restant à chaque joueur." + chr$(13) + chr$(13)
    t$ = t$ + "B O N N E    C H A N C E   . . ."

    message t$
END_SUB
rem ============================================================================
SUB A_Propos()
    dim_local t$
    t$ = ""
    t$ = t$ + "Jeu     : Duel" + chr$(13)
    t$ = t$ + "Version : V 1.0" + chr$(13)
    t$ = t$ + "Date de création : 21/11/2016" + chr$(13)
    t$ = t$ + "Dernière modif   : 21/11/2016" + chr$(13)
    t$ = t$ + "Auteur  : papydall" + chr$(13) + chr$(13)
    t$ = t$ + "==================================" + chr$(13)
    t$ = t$ + "Je tiens à remercier Klaus pour sa KGF.DLL" + chr$(13)
    t$ = t$ + "=================================="
    message t$

END_SUB
rem ============================================================================
SUB Quitter()
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
       terminate
    end_if
END_SUB
rem ============================================================================


Vous trouverez de quoi vous rassasiez (question jeux de cartes) sur cette page


Dernière édition par papydall le Lun 21 Nov 2016 - 20:44, édité 1 fois (Raison : Correction : Afficher_Tapis() et non Afficher_Papts())
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 20:34

Belle idée, Papydall ! Tu as la base de la structure. Bon courage !

Mes remarques:

Code:
Afficher_Papis()
C'est marrant d'afficher des papis ! Je pense que tu voulaus parler de tapis ?

Code:
   Melanger_Cartes()
    Creer_Les_8_Piles()
Tu ne peux mélanger les cartes sur une pile que lorsque tu as créé la pile, pas avant...

Code:
  message "Paydall est entrain d'y réflechir !"
Excellent !

EDIT

D'après ce que je vois dans les règles, cela devrait déjà être réalisable dans l'état actuel de KGF.dll !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 20:42

Klaus a écrit:


Code:
Afficher_Papis()
C'est marrant d'afficher des papis ! Je pense que tu voulaus parler de tapis ?


Marrant pour marrant :
C’est  Juste :  je voulaus écrire Tapis , pas Papis !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 20:47

Very Happy Very Happy Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2340
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 20:51

Eh ben moi j'aime bien les Papis voulaus, heuuu... je voulais dire les tapis volants !

Laughing Laughing Laughing Laughing

Bon je regarde vos codes à tous les deux et je comment ensuite...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 20:58

Puisque tu n'as pas encore de documentation pour ces fonctions, en voilà une qui mérite d'être connue:
Code:
res% = dll_call3("GetMyCardsInfo",ob%,act%,hmemo%)
act% = code action
1 = liste des stacks dans le playground  obj%=identifiant du PlayGround
2 = liste des cartes dans le playground  obj%=identification du PlayGround
3 = iste des cartes dans le stack  obj%=identification du Stack
Dans tous les cas, hmemo% est le handle d'un memo Panoramic qui peut être caché, mais qui doit avoir l'option BAR_BOTH. Tu récupères les identifiants du contenu ciblé, sous forme de 8 caractères hexa, à convertir en variable integer par la fonction HEX().
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 21:00

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

avatar

Nombre de messages : 2340
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 21:09

Je viens de tester ton programme Papydall, c'est alléchant, maintenant j'attends la suite... Wink
Je viens aussi de tester les dernières fonctions glisser-déplacer sur les dos des cartes dans la pile. c'est pas mal. sunny

Bon ! Après ce moment de distraction, je dois me remettre dans GPP... drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Lun 21 Nov 2016 - 21:47

Il y a une nouvelle version, avec une nouvelle fonction de "confort". C'est:
Code:
  res% = dll_call6("CreateMyCardsDeckOnStack",ST%,couleur%,mini%,maxi%,as%,dos%)
  message "CreateMyCardsDeckOnStack="+str$(res%)
Elle crée une suite de cartes sur une pile. Toutes les cartes sont de la couleur couleur%, les valeurs vont de mini% à maxi% et elles ont le dos dos%. Si le paramètre as% est <>0, l'As est généré également. Ainsi, la séquence
Code:
  res% = dll_call6("CreateMyCardsDeckOnStack",ST1%,sClubs%,7,13,1,7)
  message "CreateMyCardsDeckOnStack="+str$(res%)
génère le jeu de belote en Trèfle. Et la séquence
Code:
  res% = dll_call6("CreateMyCardsDeckOnStack",ST1%,sClubs%,1,13,0,7)
  message "CreateMyCardsDeckOnStack="+str$(res%)
génère le jeu de patience en Trèfle.

Attention:
Dans le programme de démo, il y une erreur concernant le codage des couleurs des cartes. Il faut y remplacer les lignes 11 à 14 par
Code:
dim sSpades%            : sSpades%            = 0
dim sDiamonds%          : sDiamonds%          = 1
dim sClubs%              : sClubs%              = 2
dim sHearts%            : sHearts%            = 3
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 0:12

Comme je vois l'intérêt pour ce travail en cours de création, j'ai fait une petite doc préliminaire des fonctions existantes. Elle se trouve sur le WebDav, dossier DLLs, et s'appelle MyCards.rtf.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 3:28

Merci Klaus.

Je viens de télécharger.
Je regarderai quand j'aurais réglé quelques problèmes sur mon PC qui commencent à me taper sur les nerfs ! Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 3:42

Petit aperçu sur les travaux en cours et ce qui va arriver prochainement:
- j'ai écrit la routine qui permet d'insérer une carte dans une pile "triée" (ascendante ou descendante), en décalant ce qu'il faut. Insertion provoquée par une nouvelle fonction spécifique ou par un glisser/déposer. Elle reste à tester.
- retassement de la pile d'origine en retirant une carte, soit par la fonction par programme soit par glisser/déposer.
- à une échéance un peu plus longue: création d'une notion de liste de piles recevant une donne" et réalisation d'une fonction de distribuer une donne à partir d'une liste servant de "talon", en cartes cachées ou ouvertes.

Tu vois, c'est loin d'être fini. Et c'est passionnant. J'aime beaucoup les jeux de cartes, et, jusqu'à maintenant, je n'avais pas les outils en Panoramic pour le faire correctement. Et je te suis reconnaissant, Papydall, d'avoir relancé ce sujet avec des suggestions pertinentes. Cela m'a permis de refaire un tout d'horizon de ces outils et d'en faire une évaluation, avant de faire un choix technique qui, à l'usage, me parait pertinent.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 3:55

@Minibug:
Tu as dit:
Citation :
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 retiré toute référence à Cards.dll dans KGF.dll. Cette DLL externe n'est plus nécessaire pour utiliser KGF.dll. Tu peux tranquillement supprimer Cards.dll de ta machine - je ne l'utiliserai plus. En effet, je sous à fond sur le système MyCards qui se passe de DLLs externes et est entièrement embarqué dans KGF.dll.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2340
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 9:47

Ok Klaus, c'est noté !

Je regarderai dès que possible. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 18:31

J'ai fait quelques tests et essais avec ces nouvelles fonctions.
C'est plus clair après la lecture de MyCards.rtf
Merci Klaus !

Pour la nouvelle édition de cette doc, tu veux bien corriger les 2 erreurs suivantes dans : MyCards.rtf.

Citation :


Créer une pile de cartes dans un terrain de jeu
ST% = dll_call6("CreateMyCardsStack",(PG%, group%, ordering%, colors%, delta%)


Correction :

Citation :


Créer une pile de cartes dans un terrain de jeu
ST% = dll_call5("CreateMyCardsStack",PG%, group%, ordering%, colors%, delta%)


Citation :


Créer un lot de cartes sur une pile
res% = dll_call6("CreateMyCardsDeckOnStack",ST%, suit%,mini%,maxi%,as%,deck:%)


Correction :

Citation :


Créer un lot de cartes sur une pile
res% = dll_call6("CreateMyCardsDeckOnStack",ST%, suit%,mini%,maxi%,as%,deck%)


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

avatar

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

MessageSujet: Re: Démonstration de CARDS.DLL   Mar 22 Nov 2016 - 23:45

Merci, Papydall ! C'est corrigé.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Mer 23 Nov 2016 - 14:52

Vu les avancées, je vais m' y mettre avant d' être dépassé.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
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 3 sur 5Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
 Sujets similaires
-
» démonstration d'accordéon Roland sons bk7m
» Démonstration de force
» Démonstration n°1 de TOONIC: un simple paysage
» Démos BK-7m
» ou d'ecouter les differents registres du fr18

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