Page 1 sur 1

Comment découper une planche ?

Publié : dim. 22/juin/2025 7:06
par Micoute
Bonjour à tous,

aujourd'hui, je n'ai pas de programme à vous proposer, mais un problème d'images JPEG que je veux transformer en sprites avec GrabSprite(), l'images est composée de 65 cases dont la plus grande partie est composée de 52 cartes à jouer plus 2 jokers et un dos de carte.

L'image à une résolution de 885x500 pixels, pouvez-vous me donner la solution pour récupérer chaque image, s'il vous plaît ?

Je vous en remercie par anticipation.

Re: Comment découper une planche ?

Publié : dim. 22/juin/2025 9:15
par case
assez compliqué de t'ecrire un code faisant ce travail sans plus d'infos 'taille des cartes", y a t'il un espace entre chacune d'elle et la taille de cet espace est il constant ou avoir l'image en question.
cependant la methode est d'afficher l'image, et d'utiliser grabsprite() pour recuperer chaque carte en utilisant les coordonées de chacune d'elle ou en utilisant des boucle next /for avec un multiplicateur x et y pour le faire automatiquement

exemple

Code : Tout sélectionner

spritenum =0 ; numero du sprite de depart
definir la hauteur et la largeur de chaque sprite
sprite_h=60 ; hauteur du sprite
sprite_l=40 ; largeur du sprite
;definir  l'ecart entre chaque sprite qui sera ajoute a chaque coordonees automatiquement 
ecart_sprite_h=0 ; ecart entre chaque sprite en pixels horizontalement
ecart_sprite_v=0 ; ecart entre chaque sprite en pixels verticalement
; boucle de decoupage
for y = 0 to 5 ; 6 sprites verticalement
   for x=0 to 4   ; 5 sprites horizontalement
       grabsprite(spritenum,x*sprite_l+(x*ecart_sprite_h),y*sprite_h+(y*ecart_sprite_v),sprite_l,sprite_h) 
       ; il est possible d'ajouter des options a grabsprite voir la notice pb suivant tes besoins.
      spritenum +1 ; on ajoute 1 au numero du sprite
   next
next

Re: Comment découper une planche ?

Publié : dim. 22/juin/2025 9:44
par venom
Salut Micoute et a tous.

Bon ça répond pas directement au problème mais j'avais fait un code qui récupère et affiche les carte de la dll windows (cards.dll) qui sert notamment pour le solitaire.

Le lien du post au cas où :wink: et le second exemple







@++

Re: Comment découper une planche ?

Publié : dim. 22/juin/2025 9:52
par Micoute
Merci pour vos réponses, moi j'ai commencé par un modules.

Code : Tout sélectionner

DeclareModule CartesStandards
  Declare.s NomCarte(position$)
  Declare.s PositionCarte(nomCarte$)
  Declare InitCartesStandards()
EndDeclareModule

Module CartesStandards

  Global NewMap PositionCartes.s()
  Global NewMap NomCartes.s()

  Global Dim Familles.s(4)
  Global Dim Valeurs.s(13)

  Procedure InitCartesStandards()
    Familles(0) = "T"  ; Trèfle
    Familles(1) = "K"  ; Karo (Carreau)
    Familles(2) = "C"  ; Cœur
    Familles(3) = "P"  ; Pique

    Valeurs(0) = "1"   ; As
    Valeurs(1) = "2"
    Valeurs(2) = "3"
    Valeurs(3) = "4"
    Valeurs(4) = "5"
    Valeurs(5) = "6"
    Valeurs(6) = "7"
    Valeurs(7) = "8"
    Valeurs(8) = "9"
    Valeurs(9) = "10"
    Valeurs(10) = "V"
    Valeurs(11) = "D"
    Valeurs(12) = "R"

    Protected f, v, nom$, pos$, ligne, colonne

    For f = 0 To 3
      ligne = f + 1
      For v = 0 To 12
        colonne = v + 1
        nom$ = Valeurs(v) + "_" + Familles(f)
        pos$ = Str(ligne) + "_" + Str(colonne)
        PositionCartes(nom$) = pos$
        NomCartes(pos$) = nom$
      Next
    Next
  EndProcedure

  Procedure.s NomCarte(position$)
    If FindMapElement(NomCartes(), position$)
      ProcedureReturn NomCartes()
    Else
      ProcedureReturn "Inconnue"
    EndIf
  EndProcedure

  Procedure.s PositionCarte(nomCarte$)
    If FindMapElement(PositionCartes(), nomCarte$)
      ProcedureReturn PositionCartes()
    Else
      ProcedureReturn "Inconnue"
    EndIf
  EndProcedure

EndModule