Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Un petit programme pour un usage très spécifique Sam 7 Mar 2015 - 14:31 | |
| Pour simplifier mon programme de Barbarian, j'avais besoin de redimensionner toute une série de sprites (62 pour un personnage) à une taille donnée en ajoutant une partie noire en haut variant selon la taille du sprite pour obtenir l'image souhaitée avec le sprite en bas et la partie noire au dessus. Plutôt que de passer de très longues minutes à le faire, j'ai fais un petit code qui pourra servir tel quel (en adaptant le chemin et la hauteur) ou avec quelques modifications à des personnes qui voudraient travailler avec des animations de sprites. C'est un code très simple entre autre grâce à l'utilisation de KGF - Code:
-
dim a$ , i$ , i , rep% : rem Variables provisoires dim nc : rem Numéro du du fichier courant dim image_w%, image_h% : ' Dimension du sprite chargé dim h : h=152 : ' Hauteur souhaitée dim hmax : ' Stocke la hauteur maximale trouvée
caption 0," Redimensionne les sprites à une hauteur précise" width 0,1000 : height 0,550
picture 1 : image 2 : picture 3
dlist 22 : ' Liste des fichiers contenant à traiter
dll_on "KGF.DLL" hmax = h
dir_change "F:\Perso\Panoramic\Barbarian-jc\SpritesA" a$=file_find_first$ while a$<>"_" if upper$(right$(a$,3)) = "BMP" then item_add 22,a$ a$=file_find_next$ end_while file_find_close
if count(22)>0 for i=1 to count(22) a$=item_read$(22,1) height 1,600 : width 1,600 : color 1,0,0,0 file_load 1,a$ clipboard_copy 1 pause 500 rep% = dll_call0("LoadPicture") image_w% = dll_call0("GetPictureWidth") image_h% = dll_call0("GetPictureHeight") if image_h% < h width 3,image_w% : height 3,h : color 3,0,0,0 2d_target_is 1 2d_image_copy 2,0,0,image_w%,image_h% 2d_target_is 3 2d_image_paste 2,0,h-image_h% file_save 3,a$ else if image_h% > h if image_h% > hmax then hmax = image_h% : caption 0, "Hauteur maximum trouvée: " + str$(hmax) end_if end_if item_delete 22,1 next i end_if
caption 0," Redimensionnement terminé, hauteur maximale trouvée: " + str$(hmax) end | |
|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit programme pour un usage très spécifique Dim 8 Mar 2015 - 1:10 | |
| Un autre petit outil à adapter selon ses besoin, un programme qui extrait des sprites en fonction des coordonnées du rectangle où ils se trouvent, ajuste leur taille et les sauvegarde - Code:
-
' Etraire des sprites de la feuille de sprites ' X1, Y1, X2, Y2 , Nom du sprite data 001, 001, 070, 123,Debout1 data 072, 001, 153, 126,Front1 data 155, 001, 240, 151,Front2 data 242, 001, 363, 122,Front3 data 365, 001, 430, 126,Retourne1 data 432, 001, 500, 123,Retourne2 data 504, 001, 568, 126,Retourne3 data 001, 128, 072, 251,Toile1 data 074, 154, 140, 275,Toile2 data 160, 154, 229, 278,Toile3 data 231, 154, 324, 278,Toile4 data 340, 128, 419, 245,ProtegeH data 421, 128, 503, 253,Cou2 data 505, 128, 627, 250,Cou3 data 001, 277, 083, 400,Couptete1 data 085, 277, 155, 403,Couptete2 data 157, 280, 226, 403,Devant1 data 229, 280, 307, 391,Devant2 data 309, 280, 412, 391,Devant3 data 414, 256, 497, 380,Pied1 data 499, 256, 591, 381,Pied2 data 001, 401, 067, 508,Assis1 data 140, 405, 216, 488,Assis2 data 068, 405, 139, 488,Genou1 data 140, 405, 216, 488,Genou2 data 218, 405, 332, 488,Genou3 data 334, 393, 355, 416,Tete1 data 357, 393, 378, 418,Tete2 data 379, 393, 409, 414,Tete3 data 333, 420, 359, 441,Tete4 data 361, 420, 384, 443,Tete5 data 386, 420, 411, 441,Tete6 data 413, 381, 463, 503,Marche1 data 464, 382, 514, 506,Marche2 data 515, 382, 570, 506,Marche3 data 001, 509, 071, 633,Attente1 data 072, 489, 156, 613,Attente2 data 157, 489, 241, 613,Attente3 data 242, 489, 320, 611,ProtegeD data 322, 489, 398, 613,Vainqueur1 data 399, 507, 470, 631,Vainqueur2 data 472, 507, 540, 645,Vainqueur3 data 001, 719, 069, 833,Touche1 data 070, 717, 136, 835,Touche2 data 137, 699, 212, 809,Saut1 data 213, 722, 293, 804,Saut2 data 213, 805, 335, 831,Mort4 data 001, 634, 067, 718,Roulade1 data 072, 614, 133, 647,Roulade2 data 135, 614, 175, 662,Roulade3 data 072, 649, 133, 682,Roulade4 data 176, 614, 242, 698,Roulade1i data 243, 612, 319, 720,Tombe1 data 320, 632, 432, 678,Tombe2 data 434, 646, 539, 721,Tombe3 data 320, 679, 370, 776,Decap1 data 371, 723, 446, 792,Decap2 data 448, 739, 563, 763,Decap4 data 448, 764, 543, 820,Mort2 data 546, 765, 628, 816,Mort3
dim nom$, i : ' Variables provisoires dim h : h=152 : ' Hauteur souhaitée dim nb_sprite : nb_sprite = 62 - 3 + 1 : ' Nb = Derniere ligne de data - première + 1 dim xd, yd, xa, ya : ' Coordonnées du rectangle à copier
caption 0," Extracteur de sprites" width 0,1000 : height 0,1000
picture 1 : image 2 : picture 3 height 1,1000 : width 1,1000 : color 1,0,0,0
dll_on "KGF.DLL"
dir_change "F:\Perso\Panoramic\Barbarian-jc\Réservoir" file_load 1,"sprites_rouge.bmp"
for i = 1 to nb_sprite read xd : read yd : ' Lit les coordonnées de départ read xa : read ya : ' Lit les coordonnées d'arrivée sur la feuille des sprites read nom$ width 3,xa - xd : height 3, h : color 3,0,0,0 2d_target_is 1 2d_image_copy 2,xd,yd,xa,ya 2d_target_is 3 2d_image_paste 2,0,h - (ya - yd) file_save 3,nom$+".BMP" wait 40 next i caption 0," Extraction des sprites efectuée" end | |
|