FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» bouton dans autre form que 0
Extracteur de sprites Emptypar leclode Aujourd'hui à 13:59

» KGF_dll - nouvelles versions
Extracteur de sprites Emptypar Klaus Aujourd'hui à 11:41

» Gestion d'un système client-serveur.
Extracteur de sprites Emptypar Klaus Aujourd'hui à 10:23

» PANORAMIC V 1
Extracteur de sprites Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Extracteur de sprites Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Extracteur de sprites Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Extracteur de sprites Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Extracteur de sprites Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Extracteur de sprites Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Extracteur de sprites Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Extracteur de sprites Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Extracteur de sprites Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Extracteur de sprites Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Extracteur de sprites Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Extracteur de sprites Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

 

 Extracteur de sprites

Aller en bas 
2 participants
AuteurMessage
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Extracteur de sprites Empty
MessageSujet: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 9:05

Programme pour extraire les sprites d'une feuille de sprites


Code:




' hide 0
Label enter_key ,Dess_rect,sauve_sprite
Label Charge_fichier

Dim  Fenetre_01%,Fenetre_02%,Image_01% ,picture01%
Dim i%  ,J%

Dim  B_Charge
Dim  Dir_Dial
Dim  File_nom$

Dim tbl_red(256,256)
Dim tbl_green(256,256)
Dim tbl_blue(256,256)

Dim Spr_X ,X_Spr
Dim Spr_Y,Y_Spr
dim fine_X
dim fine_y

Dim X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5

Spr_X        =  32
Spr_Y        =  32

Dim File_Num
File_Num=1000

Dim Inc_X,Inc_Y
Inc_X        =    0
Inc_Y        =    0

fine_X=0
fine_y=0

Fenetre_01%  =  01
Fenetre_02%  =  02
picture01%    =  13
Image_01%    =  101
B_Charge      =  201
Dir_Dial      =  301

Form Fenetre_01%
    width  Fenetre_01%,800
    Height Fenetre_01%,600
    top    Fenetre_01%,0
    left  Fenetre_01%,0

Form Fenetre_02%
    width  Fenetre_02%,400
    Height Fenetre_02%,600
    top    Fenetre_02%,0
    left  Fenetre_02%,820
   
command_target_is Fenetre_02%
  open_dialog Dir_Dial
button B_Charge
 
    top    B_Charge,50
    left  B_Charge,50
 Caption  B_Charge ,"Ouvrir"
   
command_target_is Fenetre_01%

picture picture01%
      width  picture01%,800
      height picture01%,600
      Top    picture01%,0
      left  picture01%,0

  2d_target_is picture01%
 
'    file_load picture01%,"ostrich.bmp"


' GoSub Dess_rect

on_key_down Fenetre_01%,enter_key
on_click B_Charge,Charge_fichier


end


' ----------------------------------
enter_key:

            if key_down_code=37 :'                        Touche fleche Gauche

                  Inc_X=Inc_X-1

                  GoSub Dess_rect

            end_if

            if key_down_code=38 :'                        Touche fleche Gauche

                  Inc_Y=Inc_Y-1

                  GoSub Dess_rect

            end_if

            if key_down_code=39 :'                        Touche fleche Droite

                  Inc_X=Inc_X+1

                  GoSub Dess_rect

            End_If

            if key_down_code=40 :'                        Touche fleche Gauche

                  Inc_Y=Inc_Y+1

                  GoSub Dess_rect

            end_if

            if key_down_code=68 :'                        Touche D deplacement
                                :'                        fin en X+
            fine_X=fine_X+1

           
                  GoSub Dess_rect
                 

            end_if
           
            if key_down_code=71 :'                        Touche G deplacement
                                :'                        fin en X-
            fine_X=fine_X-1

                  GoSub Dess_rect

            end_if

            if key_down_code=66 :'                        Touche B deplacement
                                :'                        fin en Y+
      fine_Y=fine_Y+1


                  GoSub Dess_rect


            end_if

            if key_down_code=72 :'                        Touche H deplacement
                                :'                        fin en Y-
      fine_Y=fine_Y-1
     
                  GoSub Dess_rect

            end_if



            if key_down_code=83 :'                        Touche S sauvegarde
                                :'                        sprite
              File_Num=File_Num+1

                  Gosub sauve_sprite

            end_if
           
            if key_down_code=107 :'                      Touche + agrandi
                                  :'                      rectangle
              Spr_X        =  Spr_X+16
              Spr_y        =  Spr_y+16
              X_spr        = Spr_X
              Y_Spr        = Spr_Y
print X_spr             
                  GoSub Dess_rect

            end_if

            if key_down_code=109 :'                      Touche + agrandi
                                  :'                      rectangle
              Spr_X        =  Spr_X-16
              Spr_y        =  Spr_y-16
              X_spr        = Spr_X
              Y_Spr        = Spr_Y
print X_spr
                  GoSub Dess_rect

            end_if

return

' ----------------------------------

Dess_rect:

' gosub Effa_Rect

2d_pen_color 255,255,255

    file_load picture01%,File_nom$

X1=(Spr_X*Inc_X)
Y1=Spr_y*Inc_Y
X2=(Spr_X*(Inc_X+1))
Y2=Spr_y*Inc_Y
X3=(Spr_X*(Inc_X+1))
Y3=Spr_y*(Inc_Y+1)
X4=(Spr_X*Inc_X)
Y4=Spr_y*(Inc_Y+1)
X5=(Spr_X*Inc_X)
Y5=Spr_y*Inc_Y

X1=X1+fine_X
Y1=Y1+Fine_Y
X2=X2+fine_X
Y2=Y2+Fine_Y
X3=X3+fine_X
Y3=Y3+Fine_Y
X4=X4+fine_X
Y4=Y4+Fine_Y
X5=X5+fine_X
Y5=Y5+Fine_Y
 print X1




            2d_poly_from  X1,Y1
            2d_poly_to    X2,Y2
            2d_poly_to    X3,Y3
            2d_poly_to    X4,Y4
            2d_poly_to    X5,Y5









Spr_X=X_Spr
Spr_Y=Y_Spr
return
' ----------------------------------





' ----------------------------------
sauve_sprite:
 file_load picture01%,File_nom$
for i%=1 to Spr_X-1
  for j%=1 to Spr_X-1
 
      tbl_red(i%,j%)=Color_pixel_red(picture01%,x1+j%,y1+i%)
      tbl_green(i%,j%)=Color_pixel_Green(picture01%,x1+j%,y1+i%)
      tbl_blue(i%,j%)=Color_pixel_blue(picture01%,x1+j%,y1+i%)
 
 
'      tbl_red(i%,j%)=Color_pixel_red(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
'      tbl_green(i%,j%)=Color_pixel_Green(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
 '      tbl_blue(i%,j%)=Color_pixel_blue(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
      next J%
  next i%
 
image File_Num
for i%=0 to Spr_X
  for j%=0 to Spr_X
 
  2d_pen_color tbl_red(i%,j%),tbl_green(i%,j%),tbl_blue(i%,j%)
 '  2D_point 400+j%,60+i%
  2D_point j%,i%
        next j%
  next i%
  2d_image_copy File_Num,0,0,Spr_X,Spr_X
  file_save File_Num,File_nom$+str$(File_Num)+".bmp"
Gosub Dess_rect

Return

Charge_fichier:


    filter Dir_Dial,"SpriteSheet | *.Bmp"
rem puis l'utiliser
File_nom$=file_name$(Dir_Dial)

      2d_target_is picture01%

    file_load picture01%,File_nom$
  ' stretch_on picture01%
Return
 



<les touches

fleche a gauche deplace rectangle a gauche
" " Droite " " " droite
" Haut " " vers le haut
" Bas vers le bas

+ agrandit le rectangle par pas de 16
- reduit le rectangle " " "

D deplace le rectangle de 1 pixel a droite
G " " " a gauche
H " " " vers le haut
B " " " Vers le bas

S sauvegarde la selection du pixel choisi sous la forme 0001.bmp 0002.bmp etc...

si le fond est noir et curseur noir modifier la couleur dans dessine_rec.
C'est un programme qui est très facile a modifier pour ceux qu'ils veulent.
A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 11:36

Cool, merci Smile

J'ai juste fait une petite modif pour pouvoir changer directement la couleur du rectangle sans avoir à modifier le programme (+ quelques petites corrections par ce que tu avais était trop vite dans les commentaires Smile
Code:
' Programme pour extraire les sprites d'une feuille de sprites
' V1.0 du 10/08/11 créé par 659_minifly
'
' <les touches
'
' "flèche gauche" deplace rectangle à gauche
' "flèche droite" deplace rectangle à droite
' "flèche  haut" deplace rectangle vers le haut
' "flèche  bas"  deplace rectangle vers le bas
'
' "+" agrandit le rectangle par pas de 16
' "-" reduit le rectangle par pas de 16
'
' "D" déplace le rectangle de 1 pixel à droite
' "G" déplace le rectangle de 1 pixel à gauche
' "H" déplace le rectangle de 1 pixel vers le haut
' "B" déplace le rectangle de 1 pixel aB " " " Vers le bas
'
' "S" sauvegarde la selection du pixel choisi sous la forme 0001.bmp 0002.bmp etc...
' "F" bascule la couleur du rectangle de Blanc à Noir puis Bleu avant de revenir à Blanc
'
'

' Déclaration des étiquettes
Label enter_key ,Dess_rect,sauve_sprite, Charge_fichier

' Déclaration des variables et constantes
Dim Fenetre_01%,Fenetre_02%,Image_01% ,picture01% , File_Num
Dim i%,J%, B_Charge, Dir_Dial, File_nom$, X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5
Dim tbl_red(256,256), tbl_green(256,256), tbl_blue(256,256)
Dim Spr_X ,X_Spr, Spr_Y,Y_Spr, fine_X, fine_y, Inc_X,Inc_Y
Dim R_rect%, V_rect%, B_rect%

' Initialisation des variables
Spr_X = 32 : Spr_Y = 32 :  Inc_X = 0 : Inc_Y = 0 : fine_X=0 : fine_y=0
R_rect% = 255: V_rect% = 255 : B_rect% = 255

' Initialisation des constantes
File_Num=1000
Fenetre_01%  =  01 : Fenetre_02%  =  02  : picture01%    =  13
Image_01%    =  101: B_Charge      =  201: Dir_Dial      =  301

' Création des fenêtres de travail et initialisation
Hide 0
Form Fenetre_01%  : width Fenetre_01%,800 : Height Fenetre_01%,600
top  Fenetre_01%,0 : left  Fenetre_01%,0

Form Fenetre_02%  : width Fenetre_02%,130 : Height Fenetre_02%,600
top  Fenetre_02%,0 : left  Fenetre_02%,820

command_target_is Fenetre_02%

open_dialog Dir_Dial

button B_Charge :    top    B_Charge,50 : left  B_Charge,25 : Caption  B_Charge ,"Ouvrir"

command_target_is Fenetre_01%

picture picture01% : width picture01%,800: height picture01%,600:  Top picture01%,0: left picture01%,0

2d_target_is picture01%

on_key_down Fenetre_01%,enter_key
on_click B_Charge,Charge_fichier

end


' ----------------------------------
enter_key:

            if key_down_code=37 :'                        Touche fleche Gauche
                  Inc_X=Inc_X-1
                  GoSub Dess_rect
            end_if

            if key_down_code=38 :'                        Touche fleche Bas
                  Inc_Y=Inc_Y-1
                  GoSub Dess_rect
            end_if

            if key_down_code=39 :'                        Touche fleche Droite
                  Inc_X=Inc_X+1
                  GoSub Dess_rect
            End_If

            if key_down_code=40 :'                        Touche fleche Haut
                  Inc_Y=Inc_Y+1
                  GoSub Dess_rect
            end_if

            if key_down_code=68 :'            Touche D deplacement fin en X+
                  fine_X=fine_X+1
                  GoSub Dess_rect
            end_if

            if key_down_code=71 :'            Touche G deplacement  fin en X-
                  fine_X=fine_X-1
                  GoSub Dess_rect
            end_if

            if key_down_code=66 :'            Touche B deplacement fin en Y+
                  fine_Y=fine_Y+1
                  GoSub Dess_rect
            end_if

            if key_down_code=72 :'            Touche H deplacement fin en Y-
                  fine_Y=fine_Y-1
                  GoSub Dess_rect
            end_if

            if key_down_code=83 :'            Touche S sauvegarde sprite
                  File_Num=File_Num+1
                  Gosub sauve_sprite
            end_if
           
            if key_down_code=70 :'            Touche F bascule la couleur du rectangle
                                '            Blanc / Noir / Bleu
                if B_rect% = 255
                  if R_rect% = 0
                      R_rect% = 255: V_rect% = 255 : B_rect% = 255
                  else
                      R_rect% = 0  : V_rect% = 0  : B_rect% = 0
                  end_if
                else
                      R_rect% = 0  : V_rect% = 0  : B_rect% = 255
                end_if
                GoSub Dess_rect
            end_if

            if key_down_code=107 :'          Touche + agrandi rectangle
              if Spr_X < 257
                Spr_X        =  Spr_X+16
                Spr_y        =  Spr_y+16
                X_spr        = Spr_X
                Y_Spr        = Spr_Y
                print X_spr
                GoSub Dess_rect
              end_if
            end_if

            if key_down_code=109 :'          Touche - rétréci rectangle
              if Spr_X > 0
                Spr_X        =  Spr_X-16
                Spr_y        =  Spr_y-16
                X_spr        = Spr_X
                Y_Spr        = Spr_Y
                print X_spr
                GoSub Dess_rect
              end_if
            end_if
return

' ----------------------------------
Dess_rect:

2d_pen_color R_rect%,V_rect%,B_rect%

    file_load picture01%,File_nom$

X1=(Spr_X*Inc_X)    : Y1=Spr_y*Inc_Y    : X2=(Spr_X*(Inc_X+1)) : Y2=Spr_y*Inc_Y
X3=(Spr_X*(Inc_X+1)): Y3=Spr_y*(Inc_Y+1) : X4=(Spr_X*Inc_X)      :Y4=Spr_y*(Inc_Y+1)
X5=(Spr_X*Inc_X)    : Y5=Spr_y*Inc_Y
X1=X1+fine_X : Y1=Y1+Fine_Y : X2=X2+fine_X : Y2=Y2+Fine_Y : X3=X3+fine_X : Y3=Y3+Fine_Y
X4=X4+fine_X : Y4=Y4+Fine_Y : X5=X5+fine_X : Y5=Y5+Fine_Y
print X1
2d_poly_from  X1,Y1 : 2d_poly_to X2,Y2 : 2d_poly_to X3,Y3 : 2d_poly_to X4,Y4 : 2d_poly_to X5,Y5
fine_X=0: fine_Y=0

return
' ----------------------------------



' ----------------------------------
sauve_sprite:
file_load picture01%,File_nom$
for i%=1 to Spr_X-1
  for j%=1 to Spr_X-1
      tbl_red(i%,j%)=Color_pixel_red(picture01%,x1+j%,y1+i%)
      tbl_green(i%,j%)=Color_pixel_Green(picture01%,x1+j%,y1+i%)
      tbl_blue(i%,j%)=Color_pixel_blue(picture01%,x1+j%,y1+i%)

'      tbl_red(i%,j%)=Color_pixel_red(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
'      tbl_green(i%,j%)=Color_pixel_Green(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
'      tbl_blue(i%,j%)=Color_pixel_blue(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
      next J%
  next i%

image File_Num
for i%=0 to Spr_X
  for j%=0 to Spr_X

  2d_pen_color tbl_red(i%,j%),tbl_green(i%,j%),tbl_blue(i%,j%)
 '  2D_point 400+j%,60+i%
  2D_point j%,i%
        next j%
  next i%
  2d_image_copy File_Num,0,0,Spr_X,Spr_X
  file_save File_Num,File_nom$+str$(File_Num)+".bmp"
Gosub Dess_rect

Return

Charge_fichier:
filter Dir_Dial,"SpriteSheet | *.Bmp"
rem puis l'utiliser
File_nom$=file_name$(Dir_Dial)

    2d_target_is picture01%
    file_load picture01%,File_nom$
  ' stretch_on picture01%
Return
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 14:06

Merci voila une nouvelle avec une correction car les déplacments fin ne fonctionnaient plus

Code:

' Programme pour extraire les sprites d'une feuille de sprites
' V1.0 du 10/08/11 créé par 659_minifly
'
' <les touches
'
' "flèche gauche" deplace rectangle à gauche
' "flèche droite" deplace rectangle à droite
' "flèche  haut" deplace rectangle vers le haut
' "flèche  bas"  deplace rectangle vers le bas
'
' "+" agrandit le rectangle par pas de 16
' "-" reduit le rectangle par pas de 16
'
' "D" déplace le rectangle de 1 pixel à droite
' "G" déplace le rectangle de 1 pixel à gauche
' "H" déplace le rectangle de 1 pixel vers le haut
' "B" déplace le rectangle de 1 pixel aB " " " Vers le bas
'
' "S" sauvegarde la selection du pixel choisi sous la forme 0001.bmp 0002.bmp etc...
' "F" bascule la couleur du rectangle de Blanc à Noir puis Bleu avant de revenir à Blanc
'
'

' Déclaration des étiquettes
Label enter_key ,Dess_rect,sauve_sprite, Charge_fichier

' Déclaration des variables et constantes
Dim Fenetre_01%,Fenetre_02%,Image_01% ,picture01% , File_Num
Dim i%,J%, B_Charge, Dir_Dial, File_nom$, X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5
Dim tbl_red(256,256), tbl_green(256,256), tbl_blue(256,256)
Dim Spr_X ,X_Spr, Spr_Y,Y_Spr, fine_X, fine_y, Inc_X,Inc_Y
Dim R_rect%, V_rect%, B_rect%

' Initialisation des variables
Spr_X = 32 : Spr_Y = 32 :  Inc_X = 0 : Inc_Y = 0 : fine_X=0 : fine_y=0
R_rect% = 255: V_rect% = 255 : B_rect% = 255

' Initialisation des constantes
File_Num=1000
Fenetre_01%  =  01 : Fenetre_02%  =  02  : picture01%    =  13
Image_01%    =  101: B_Charge      =  201: Dir_Dial      =  301

' Création des fenêtres de travail et initialisation
Hide 0
Form Fenetre_01%  : width Fenetre_01%,800 : Height Fenetre_01%,600
top  Fenetre_01%,0 : left  Fenetre_01%,0

Form Fenetre_02%  : width Fenetre_02%,130 : Height Fenetre_02%,600
top  Fenetre_02%,0 : left  Fenetre_02%,820

command_target_is Fenetre_02%

open_dialog Dir_Dial

button B_Charge :    top    B_Charge,50 : left  B_Charge,25 : Caption  B_Charge ,"Ouvrir"

command_target_is Fenetre_01%

picture picture01% : width picture01%,800: height picture01%,600:  Top picture01%,0: left picture01%,0

2d_target_is picture01%

on_key_down Fenetre_01%,enter_key
on_click B_Charge,Charge_fichier

end


' ----------------------------------
enter_key:

            if key_down_code=37 :'                        Touche fleche Gauche
                  Inc_X=Inc_X-1
                  GoSub Dess_rect
            end_if

            if key_down_code=38 :'                        Touche fleche Bas
                  Inc_Y=Inc_Y-1
                  GoSub Dess_rect
            end_if

            if key_down_code=39 :'                        Touche fleche Droite
                  Inc_X=Inc_X+1
                  GoSub Dess_rect
            End_If

            if key_down_code=40 :'                        Touche fleche Haut
                  Inc_Y=Inc_Y+1
                  GoSub Dess_rect
            end_if

            if key_down_code=68 :'            Touche D deplacement fin en X+
                  fine_X=fine_X+1
                  GoSub Dess_rect
            end_if

            if key_down_code=71 :'            Touche G deplacement  fin en X-
                  fine_X=fine_X-1
                  GoSub Dess_rect
            end_if

            if key_down_code=66 :'            Touche B deplacement fin en Y+
                  fine_Y=fine_Y+1
                  GoSub Dess_rect
            end_if

            if key_down_code=72 :'            Touche H deplacement fin en Y-
                  fine_Y=fine_Y-1
                  GoSub Dess_rect
            end_if

            if key_down_code=83 :'            Touche S sauvegarde sprite
                  File_Num=File_Num+1
                  Gosub sauve_sprite
            end_if

            if key_down_code=70 :'            Touche F bascule la couleur du rectangle
                                '            Blanc / Noir / Bleu
                if B_rect% = 255
                  if R_rect% = 0
                      R_rect% = 255: V_rect% = 255 : B_rect% = 255
                  else
                      R_rect% = 0  : V_rect% = 0  : B_rect% = 0
                  end_if
                else
                      R_rect% = 0  : V_rect% = 0  : B_rect% = 255
                end_if
                GoSub Dess_rect
            end_if

            if key_down_code=107 :'          Touche + agrandi rectangle
              if Spr_X < 257
                Spr_X        =  Spr_X+16
                Spr_y        =  Spr_y+16
                X_spr        = Spr_X
                Y_Spr        = Spr_Y
                print X_spr
                GoSub Dess_rect
              end_if
            end_if

            if key_down_code=109 :'          Touche - rétréci rectangle
              if Spr_X > 0
                Spr_X        =  Spr_X-16
                Spr_y        =  Spr_y-16
                X_spr        = Spr_X
                Y_Spr        = Spr_Y
                print X_spr
                GoSub Dess_rect
              end_if
            end_if
return

' ----------------------------------
Dess_rect:

2d_pen_color R_rect%,V_rect%,B_rect%

    file_load picture01%,File_nom$

X1=(Spr_X*Inc_X)    : Y1=Spr_y*Inc_Y    : X2=(Spr_X*(Inc_X+1)) : Y2=Spr_y*Inc_Y
X3=(Spr_X*(Inc_X+1)): Y3=Spr_y*(Inc_Y+1) : X4=(Spr_X*Inc_X)      :Y4=Spr_y*(Inc_Y+1)
X5=(Spr_X*Inc_X)    : Y5=Spr_y*Inc_Y
X1=X1+fine_X : Y1=Y1+Fine_Y : X2=X2+fine_X : Y2=Y2+Fine_Y : X3=X3+fine_X : Y3=Y3+Fine_Y
X4=X4+fine_X : Y4=Y4+Fine_Y : X5=X5+fine_X : Y5=Y5+Fine_Y
print X1
2d_poly_from  X1,Y1 : 2d_poly_to X2,Y2 : 2d_poly_to X3,Y3 : 2d_poly_to X4,Y4 : 2d_poly_to X5,Y5

Spr_X=X_Spr
Spr_Y=Y_Spr

return
' ----------------------------------



' ----------------------------------
sauve_sprite:
file_load picture01%,File_nom$
for i%=1 to Spr_X-1
  for j%=1 to Spr_X-1
      tbl_red(i%,j%)=Color_pixel_red(picture01%,x1+j%,y1+i%)
      tbl_green(i%,j%)=Color_pixel_Green(picture01%,x1+j%,y1+i%)
      tbl_blue(i%,j%)=Color_pixel_blue(picture01%,x1+j%,y1+i%)

'      tbl_red(i%,j%)=Color_pixel_red(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
'      tbl_green(i%,j%)=Color_pixel_Green(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
'      tbl_blue(i%,j%)=Color_pixel_blue(picture01%,Spr_X*Inc_X+j%,Spr_y*Inc_y+i%)
      next J%
  next i%

image File_Num
for i%=0 to Spr_X
  for j%=0 to Spr_X

  2d_pen_color tbl_red(i%,j%),tbl_green(i%,j%),tbl_blue(i%,j%)
 '  2D_point 400+j%,60+i%
  2D_point j%,i%
        next j%
  next i%
  2d_image_copy File_Num,0,0,Spr_X,Spr_X
  file_save File_Num,File_nom$+str$(File_Num)+".bmp"
Gosub Dess_rect

Return

Charge_fichier:
filter Dir_Dial,"SpriteSheet | *.Bmp"
rem puis l'utiliser
File_nom$=file_name$(Dir_Dial)

    2d_target_is picture01%
    file_load picture01%,File_nom$
  ' stretch_on picture01%
Return

Je recommande a chacun d'apporter les modifications qu'ils jugent nécessaires.
Une des modifications a apporter est de
Pouvoir mettre en noir le fond du sprite
Faire un rotation de sprite a un angle...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 14:18

^^ bien vu, j'avais modifié "temporairement" pour comprendre au départ mais j'avais oublié de remettre bien ... Pour les rotations gauche / droite / 180° / Miroir, tu verrais quoi comme touches ?
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 14:30

La lettre R pour rotation de 90
Mais il y a la symétrie qui est importante pourquoi pas y.
Mais je suis entrain de chercher pour pouvoir faire une rotation de n'importe quel angle 10,20...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 15:40

OK, je te laisse faire alors. La rotation "simple" (symétrie, rotation à 90 dans un sens ou dans l'autre), c'est facile avec ton programme en jouant avec les boucle for..next mais la rotation libre, c'est une autre paire de manches ... surtout que dans ce cas, on peut être amené à devoir redimenssionner le sprite


Dernière édition par Jicehel le Mer 10 Aoû 2011 - 18:29, édité 1 fois
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 17:21

Pas besoin de redimensionner les sprites
Le sprites est inscrit dans un carré extérieur au sprite
tu peut faire pivoter le sprite de 360 degré il sera toujour dans le carré de départ.
Pour cela il faut prendre le centre du sprite.
Tu t'occupe de l'autre alors Merci.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 18:40

Heu, 360° tu ne bouges pas ... !! Moi, je m'occupe de la rotation a 360 ° !! Smile
Le problème n'ai pas dans la rotation à 90, mais dans la rotation libre, car si tu tourne le carré, tu à l'angle qui sort du carré initial et un triangle non rempli dans l'angle du carré d'origine (mais ça on s'en fout puisqu'on peut le remplir par la couleur de fond dans notre cas).
Pour la rotation libre, il y a donc 2 solution, soit agrandir la taille du carré initial avec de la couleur de fond pour que l'angle du carré "tourné" par exemple de 45° tienne dedans, soit couper le carré à la dimension du sprite d'origine (ce qui peut ne pas avoir d'importance s'il n'y a rien dans les angles).

Bon, ce soir je m'occupe des rotations -90,90,180 et des miroirs aussi.

J'ai pensais aussi à une fonction avec ton programme, pour mon monopoly starwars, comme j'avais pris des bout d'images pour faire les "cartes" j'avais parfois un problème de transparence involontaire. Je vais me servir de ton programme pour faire une fonction qui remplace les couleures noires à 0,0,0 par 0,0,1 (donc non transparent). Il faudrait que je fasse la même aussi pour quand on a des sprites sombre et que pour mieux les voir, on remplit le fond de rose, de bleu ou de rouge (une couleur précise) qui serait remplacée par 0,0,0 pour remettre la transparence dans les sprites.
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites EmptyMer 10 Aoû 2011 - 18:55

Le carré autour du sprite ne tourne pas seuleument le sprite a l'intérieur.
Revenir en haut Aller en bas
Contenu sponsorisé





Extracteur de sprites Empty
MessageSujet: Re: Extracteur de sprites   Extracteur de sprites Empty

Revenir en haut Aller en bas
 
Extracteur de sprites
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» extracteur de sprites amélioré
» Un extracteur de procédures
» un peu sur les sprites
» Sprites
» défilement des sprites

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: