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 |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2016 - 19:05 | |
| @Klaus, J'ai trouvé pourquoi l'animation de mon Shtroumf ne s'arrêtait pas. Le bout de code ci-dessous devait être placé obligatoirement dans le sous-programme event: - Code:
-
if s$ = "bordure droite" and SC2D_Panoramic%(2)=3 res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,0):' exit_while :' stop l'animation end_if
Un truc bizarre, Dans le code ci-dessus, si j'écris: if s$ = "bordure droite" and SC2D_Panoramic%(2)=Shtroumf%Not correct expression, alors que Shtroumf% a bien la valeur 3. Pour que ça fonctionne je suis obligé de mettre 3 à la place de Shtroumf% A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2016 - 19:51 | |
| @Klaus, Action automatique et position d'un sprite au départ. Dans le code ci_dessous (qui est ta dernière démo), j'ai positionné le bonhomme à -20 dans l'axe X (ligne 145). Je lui ai ajouté une AutomaticSpriteActionInScene2D en ligne 172. Pour que l'action automatique puisse fonctionner je dois modifier x% à la ligne 145 au mieux a x%=-1 C'est ennuyeux car on ne peut pas placer un sprite hors cadre et lui affecté une action automatique. Le code: - Code:
-
' test_2_Scene2D.bas
label arriere1, avant1, cacher1, cachertout1, montrertout1 label arriere2, avant2, cacher2, cachertout2, montrertout2 label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2 label zoomplus1, zoommoins1, zoomplus2, zoommoins2 label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2 label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1 label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2 label affcontact1, pascontact1, affcontact2, pascontact2 label sdown1, sup2, stext1, stext2, stopanim1, stopanim2
dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$ dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bord$(4) : bord$(0) = " " : bord$(1) = "gauche" : bord$(2) = "haut" : bord$(3) = "droite" : bord$(4) = "bas"
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp" dim marcheur$ : marcheur$ = "shokunin.ilb"
full_space 0
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere1 button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant1 button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher1 button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout1 button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout1 button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe1 button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile1 button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout1
button 201 : top 201,370 : left 201,10 : caption 201,"En arrière" : on_click 201,arriere2 button 202 : top 202,370 : left 202,100 : caption 202,"En avant" : on_click 202,avant2 button 203 : top 203,370 : left 203,190 : caption 203,"Cacher" : on_click 203,cacher2 button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout" : on_click 204,cachertout2 button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout" : on_click 205,montrertout2 button 206 : top 206,370 : left 206,460 : caption 206,"Fixe" : on_click 206,fixe2 button 207 : top 207,370 : left 207,550 : caption 207,"Mobile" : on_click 207,mobile2 button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout" : on_click 208,mobiletout2
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer1 button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus1 button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins1 button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg1 button 13 : top 13,160 : left 13,640 : caption 13,"ImageList" : on_click 13,imagelist1 button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb" : on_click 14,changerilb1 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info11 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info21 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit1 button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1 button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond1 button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21 button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1 button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1 button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1 button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv" : on_click 24,sdown1 button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte" : on_click 25,stext1 button 26 : top 26,550 : left 26,640 : caption 26,"Stop animat." : on_click 26,stopanim1
button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer" : on_click 209,deplacer2 button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +" : on_click 210,zoomplus2 button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -" : on_click 211,zoommoins2 button 212 : top 212,130 : left 212,740 : caption 212,"Changer img" : on_click 212,changerimg2 button 213 : top 213,160 : left 213,740 : caption 213,"ImageList" : on_click 213,imagelist2 button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb" : on_click 214,changerilb2 button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D" : on_click 215,info12 button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite" : on_click 216,info22 button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond" : on_click 217,panit2 button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2 button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond" : on_click 219,enrfond2 button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22 button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2 button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2 button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2 button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^" : on_click 224,sup2 button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte" : on_click 225,stext2 button 226 : top 226,550 : left 226,740 : caption 226,"Stop animat." : on_click 226,stopanim2
open_dialog 97
memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300 font_name 96,"Courier" : font_size 96,8 edit 98 : hide 98 : on_change 98,event1 alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"
memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300 font_name 296,"Courier" : font_size 296,8 edit 298 : hide 298 : on_change 298,event2 alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$)) trans% = int(res%/8) if trans%=0 then trans% = 1
SC2D1% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0) end_if
SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0) dim SC2D_Panoramic1%(SC2D1_PS%) SC2D_Panoramic1%(0) = SC2D1_PS% SC2D_Panoramic1%(1) = handle(98) res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%)) res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)
SC2D2% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0) end_if
SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0) dim SC2D_Panoramic2%(SC2D2_PS%) SC2D_Panoramic2%(0) = SC2D2_PS% SC2D_Panoramic2%(1) = handle(298) res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%)) res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)
res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$)) res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))
res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,230,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,230,0,100,adr(sprite1$)) dim x% : x%=-20 :' valeur -1 = AutomaticSpriteActionInScene2D pourra fonctionner res% = dll_call6("CreateSpriteInScene2D",SC2D1%,x%,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,230,0,200,adr(sprite3$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,100,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D1%,1,0)
res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D2%,1,0)
IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(marcheur$))
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)
res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,3,2,1,0,1)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event1: if text$(98)="status" s$ = "" if SC2D_Panoramic1%(16)=1 then s$ = "collision" if SC2D_Panoramic1%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic1%(17)) caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+" à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+" dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+" collision: "+str$(SC2D_Panoramic1%(7))+" contact: "+str$(SC2D_Panoramic1%(8))+" "+s$ if SC2D_Panoramic1%(16)=3 then message "Téléporté !" end_if
return
event2: if text$(298)="status" s$ = "" if SC2D_Panoramic2%(16)=1 then s$ = "collision" if SC2D_Panoramic2%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic2%(17)) caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+" à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+" dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+" collision: "+str$(SC2D_Panoramic2%(7))+" contact: "+str$(SC2D_Panoramic2%(8))+" "+s$ if SC2D_Panoramic2%(16)=3 then message "Téléporté !" end_if
return
arriere1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%) return
avant1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1) return
cacher1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0) return
cachertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0) return
montrertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
fixe1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0) return
mobile1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0) return
mobiletout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
arriere2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%) return
avant2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1) return
cacher2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0) return
cachertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0) return
montrertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
fixe2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0) return
mobile2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0) return
mobiletout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
deplacer1: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220) return
zoomplus1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*3)/2 h% = (SC2D_Panoramic1%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
zoommoins1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*2)/3 h% = (SC2D_Panoramic1%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
changerimg1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$)) return
imagelist1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%) return
changerilb1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190) return
info11: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info21: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%)) item_add 96,"Sprite:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit1: if SC2D_Panoramic1%(9)=0 then return if SC2D_Panoramic1%(10)=0 res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic1: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$)) return
enrfond1: f$ = "SC2D1_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp21: f$ = "SC2D1_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl1: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200) return
affcontact1: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1) return
pascontact1: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0) return
sdown1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1) return
stext1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) return
deplacer2: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220) return
zoomplus2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*3)/2 h% = (SC2D_Panoramic2%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
zoommoins2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*2)/3 h% = (SC2D_Panoramic2%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
changerimg2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$)) return
imagelist2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%) return
changerilb2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190) return
info12: clear 296 sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%)) item_add 296,"Scene2D:" item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info22: clear 296 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%)) item_add 296,"Sprite:" item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit2: if SC2D_Panoramic2%(9)=0 then return if SC2D_Panoramic2%(10)=0 res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic2: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$)) return
enrfond2: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp22: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl2: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200) return
affcontact2: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1) return
pascontact2: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0) return
sup2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1) return
stext2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) return
stopanim1: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,0) return
stopanim2: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,0) return A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2016 - 21:48 | |
| - Citation :
- if s$ = "bordure droite" and SC2D_Panoramic%(2)=Shtroumf%
Moi, j'écrirais: - Code:
-
if (s$ = "bordure droite") and (SC2D_Panoramic%(2)=Shtroumf%) Je suis certain que la syntaxe sera mieux reconnue ainsi. - Citation :
- C'est ennuyeux car on ne peut pas placer un sprite hors cadre et lui affecté une action automatique.
Effectivement. J'ai choisi de tester s'il y a un contact avec une bordure, en testant si la position après le prochain mouvement dépasse u n des bords. Si oui, je détecte un contact avecla bordure concernée, et je prends l'action qui s'impose: soit la bordure n'a pas de voisin et je stoppe l'automatisme, soit la bordure a un voisin et je procède à la téléportatioN Or, si tu places un sprite hors cadre, le premier déplacement après le lancement de l'automatisme a de fortes chances d'être encore hors cadre, et je stioppe l'affaire. Si tu as une idée sur une autre façon de traiter cela, je suis preneur... EDITLe gros problème avec un mouvement automatique d'un sprite hors cadre, c'est que si jamais le mouvement est mal paramétré, il continuera perpétuellement sans que le sprite apparaisse dans de Scene2D à un moment ou un autre. Et dont, cela va mouliner sans interruption, sans contrôle, jusqu'au dépassement d'une des valeurs servant au positionnement, ou même une violation d'accès lors d'une tentative de dessiner le sprite n'importe où en mémoire. Je sais, il y a un mécanisme de clipping automatique. Mais quand-même: les coordonnées sont mémorisées dans des variables représentant des entiers sur 32 bits, et ce n'est pas infini. A un moment ou un autre, il y aura dépassement. EDIT bisEt si je ne faisais le test de dépassement des bordures que si, initialement, le sprite est dans les bordures ? Est-ce que ça pourrait correspondre à ce que tu cherches ? Techniquement, ce n'est pas bien compliqué. Faut juste s'assurer, pour des raisons décrites ci-dessus, que le mouvement automatique n'est pas dirigé dans le mauvais sens... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2016 - 23:07 | |
| KGF.dll V6.65 du 08/05/2016
Nouveautés: Scene2D: - en déplacement automatique, le contact avec les bords n'est testé que si le sprite est à l'intérieur des limites du Scene2D . Si le sprite est "hors cadre", le mouvement n'est pas limité. Sous "hors cadre", on entend "en-dehors des limites du fond, sans tenir compte du VewPort".
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sources sont à jour.
Ceci permet de placer un sprite en-dehors, et il n'interagira avec les bordures que lorsqu'il aura pénétré dans le terrain de jeu, pour un mouvement automatique.
Mais attention: Si un mouvement automatique le conduit ailleurs que dans le terrain de jeu, alors ce mouvement continuera sans rencontrer d'obstacle. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 1:27 | |
| Voici une toute petite démo. Elle n'utilise pas de ViewPort, et il y a un seul sprite qui est créé dans le programme via un picture caché, et l'image est transmis au sprite via le presse-papier. Pas de fichier externe, donc. Le sprite représente une petite bille rouge qui se déplace dans le Scene2D à la manière d'une boule de billard sur une table de billard. Chaque fois qu'elle rencontre une bande, elle change sa direction en continu. C'est une petite démo facile à analyser. Elle met pourtant en oeuvre le mécanisme des évènements et la réaction (programmée en Panoramic) au contact avec les 4 bandes. Le tout en 72 lignes. - Code:
-
' test_Scene2D_balle_rebondissante_Klaus.bas
label event
dim res%, SC2D%, SC2D_PS%, dx%, dy%, trans%, sinfo% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bl$ : bl$ = string$(5," ")
width 0,700 : height 0,550
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
picture 1 : hide 1 : width 1,40 : height 1,40 color 1,255,255,255 2d_target_is 1 2d_pen_color 255,0,0 2d_fill_color 255,0,0 2d_circle 20,20,20 clipboard_copy 1
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" trans% = 1
SC2D% = dll_call2("CreateScene2D",handle(0),0) res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,255,255,255) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
res% = dll_call6("CreateSpriteInScene2D",SC2D%,100,130,0,10,0) dx% = 10 dy% = 0 - 10 res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,1,2,dx%,dy%,20)
end
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8)) if SC2D_Panoramic%(16)=2 select SC2D_Panoramic%(17) case 1: ' left dx% = 10 case 2: ' top dy% = 10 case 3: ' right dx% = 0 - 10 case 4: ' bottom dy% = 0 - 10 end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,SC2D_Panoramic%(2),2,dx%,dy%,20) end_if end_if
return
Dernière édition par Klaus le Lun 9 Mai 2016 - 10:03, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 8:09 | |
| Bonjour, j'ai essayé: if (s$ = "bordure droite") and (SC2D_Panoramic%(2)=Shtroumf%), ça bloque aussi. Bof, ce n'est pas important. J'ai testé le placement hors cadre d'un sprite, puis de lancer une automatisation, ça marche impeccable. J'ai pris bonne note qu'il faut le faire rentrer dans le cadre, sinon il part chez le voisin A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 9:26 | |
| - Citation :
- j'ai essayé: if (s$ = "bordure droite") and (SC2D_Panoramic%(2)=Shtroumf%), ça bloque aussi.
Qu'est-ce que tu entends par "bloque" ? Le code suivant marche parfaitement: - Code:
-
dim s$, SC2D_Panoramic%(10), Shtroumf% Shtroumf% = 3 SC2D_Panoramic%(2) = Shtroumf%
s$ = "faux" if (s$ = "bordure droite") and (SC2D_Panoramic%(2)=Shtroumf%) message "vrai" else message "faux" end_if
s$ = "bordure droite" if (s$ = "bordure droite") and (SC2D_Panoramic%(2)=Shtroumf%) message "vrai" else message "faux" end_if | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 10:46 | |
| Merci Klaus pour ton exemple simple (c'est sympa les exemple simple aussi pour illustrer les fonction même si le programme complet est très pratique pour tester également). Perso, je n'ai pas avancé non par ce que c'est compliqué mais faute de temps (on été 17 de mercredi soir à dimanche midi ...) mais je vais m'y remettre bientôt et tes exemples m'aideront à coup sûr. (En plus ça tombe bien, moi aussi pour mes tests, c'est une balle qui rebondit).
Les premier essai que j'ai fais sont assez sympa et plus fluide qu'en Panoramic pur.
Je ferais une version du casse brique avec ce système et je pense que ce sera très sympa.
Je pense même que ça pourrait être combiné avec ton moteur de jeu pour les tests ce qui donnerait un programme très épuré avec des équations déclenchant les actions. En modifiant un peu le moteur pour le rendre graphique, on pourrait facilement faire une réelle interface pour débutant (on ajoute les sprites, on met son fond, on mets les conditions graphiquement à la souris) Je dis ça car les fonctions que tu viens d'ajouter peuvent grandement faciliter l'écriture d'une interface graphique (on peut dupliquer les sprites, les déplacer à la souris, vérifier leur position pour modifier leur enchainement ...) Je pense que tu vois où je veux en venir. On a les briques maintenant pour faire quelque chose (une interface) de réellement simple pour une programmation par blocs qui est plus visuelle pour un débutant que des instructions. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 11:44 | |
| La même démo simple, mais avec deux billes: une rouge et une bleue. Vitesses et angles différents. Lorsqu'elles se touchent, elles changent de direction et se téléportent sur une petite distance, afin de ne plus être en situation de contact: - Code:
-
' test_Scene2D_balle_rebondissante_Klaus.bas
label event
dim res%, SC2D%, SC2D_PS%, dx1%, dy1%, dx2%, dy2%, dim trans%, sinfo%, sp1%, sp2%, x1%, y1%, x2%, y2% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bl$ : bl$ = string$(5," ")
width 0,700 : height 0,550
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
picture 1 : hide 1 : width 1,40 : height 1,40 color 1,255,255,255 2d_target_is 1
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" trans% = 1
SC2D% = dll_call2("CreateScene2D",handle(0),0) res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,255,255,255) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
2d_pen_color 255,0,0 2d_fill_color 255,0,0 2d_circle 20,20,20 clipboard_copy 1 sp1% = dll_call6("CreateSpriteInScene2D",SC2D%,100,130,0,10,0) dx1% = 10 dy1% = 0 - 10 res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp1%,2,dx1%,dy1%,80)
2d_pen_color 0,0,255 2d_fill_color 0,0,255 2d_circle 20,20,20 clipboard_copy 1 sp2% = dll_call6("CreateSpriteInScene2D",SC2D%,200,230,0,10,0) dx2% = 10 dy2% = 0 - 5 res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp2%,2,dx2%,dy2%,50) end
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8))
if SC2D_Panoramic%(2)=sp1% if SC2D_Panoramic%(16)=1 dx1% = 0 - dx1% dy1% = 0 - dy1% x1% = SC2D_Panoramic%(3) - 50 if x1%<0 then x1% = 600 - 50 y1% = SC2D_Panoramic%(4) - 50 if y1%<0 then y1% = 400 - 50 res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,sp1%,x1%,y1%) res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp1%,2,dx1%,dy1%,80) end_if if SC2D_Panoramic%(16)=2 select SC2D_Panoramic%(17) case 1: ' left dx1% = 10 case 2: ' top dy1% = 10 case 3: ' right dx1% = 0 - 10 case 4: ' bottom dy1% = 0 - 10 end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp1%,2,dx1%,dy1%,80) end_if end_if if SC2D_Panoramic%(2)=sp2% if SC2D_Panoramic%(16)=1 dx2% = 0 - dx2% dy2% = 0 - dy2% x2% = SC2D_Panoramic%(3) - 50 if x2%<0 then x2% = 600 - 50 y2% = SC2D_Panoramic%(4) - 50 if y2%<0 then y2% = 400 - 50 res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,sp2%,x2%,y2%) res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp2%,2,dx2%,dy2%,50) end_if if SC2D_Panoramic%(16)=2 select SC2D_Panoramic%(17) case 1: ' left dx2% = 10 case 2: ' top dy2% = 5 case 3: ' right dx2% = 0 - 10 case 4: ' bottom dy2% = 0 - 5 end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp2%,2,dx2%,dy2%,50) end_if end_if end_if return
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 16:34 | |
| J'ai trouvé le problème pour if (s$ = "bordure droite") and (SC2D_Panoramic%(2)=Shtroumf%) Ce n'était pas un problème de syntaxe.
C'est la variable Shtroumf% qui était déclarée trop loin dans le code. Or il y a un passage dans le sous-programme event: dès que l'on modifie ou le scene2d, ou un sprite. Il faut donc penser a créer les variables au tout début du programme. Ce qui m'a fait chercher longtemps, c'est le message d'erreur "Not correct expression" alors que j'aurai dû avoir "Shtroumf% is not floating point value". J'ignore si c'est le fait d'utiliser une dll qui fait que les messages d'erreur ne sont pas exacts.
De mon coté, je continue mes test. Je publierai une première mouture bientôt.
A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 19:20 | |
| Bonsoir, J'ai déposé sur mon webdev Essai2D_PK.zip. Il ne s'agit pas d'un jeu, mais d'essais de déplacements automatiques et d'animations. Faite tourner le code, de temps en temps ça bug, ça vient surement d'entre la chaise et le clavier. Mais c'est prometteur. @Klaus, J'aimerai que tu regarde le sous-programme Event: , car je crois que je m'y suit mal pris. A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2016 - 19:54 | |
| Ca commence à prendre forme ! Pour la routine event, je ferais comme ceci: - Code:
-
event: ... (éventuellement charger la variable s$...) if SC2D_Panoramic%(2)=GloutonBleu% ... end_if if SC2D_Panoramic%(2)=Shtroumf% SC2D_Panoramic%(16)=1 res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,GloutonBleu%,410,410) else if SC2D_Panoramic%(16)<>0 ' pa%=0 : while pa%<5 : pa%=rnd(15) : end_While pa%=6 select SC2D_Panoramic%(17) case 1: ' left dx% = pa% : dy%=dy%+(pa%+2) case 2: ' top dy% = pa% case 3: ' right dx% = 0 - pa% case 4: ' bottom dy% = 0 - pa% end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,GloutonBleu%,2,dx%,dy%,50) end_if end_if end_if
Tu vois le principe ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 10 Mai 2016 - 12:06 | |
| J'ai remis de l'ordre dans le code, il est plus lisible. J'ai créé des procédures là ou c'était nécessaire. J'ai également revu le sous-programme event:. Maintenant chaque sprite est indépendant. J'ai modifié le "KSCENE2D": il déborde de l'écran de 100 pixels, ce qui permet de ne pas voir le retournement du Stroumf ! C'est maintenant en plein écran, (Echap pour sortir) J'ai remplacé le zip sur mon webdev, mais pour ceux qui ont déjà les images, voici le code. - Code:
-
' essai Klaus_2d error_french dim rep$ : rep$=dir_current$ : dir_change rep$
' Variables générales dim x%,y%,a$,dx%,dy%,pa%
' Variables, label et objet pour fonctionnement K2d dim res%, SC2D%, SC2D_PS%, VP%, IL%, w%, h%, f$, sInfo%, i% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim M1% : M1% = 0 - 1 dim bl$,s$,fic$ : bl$ = string$(5," ") dim bord$(4) : bord$(0) = " " : bord$(1) = "gauche" : bord$(2) = "haut" : bord$(3) = "droite" : bord$(4) = "bas"
' Variables pour les sprites et affectation des images dim bar1%,Sprite2$ : Sprite2$="barierre.bmp" dim GloutonBleu%,Sprite1$ : Sprite1$="bleu.bmp" dim Shtroumf%,Sprite3$ : Sprite3$="shtroumf1.bmp" dim ShtroumfG%,Sprite4$ : Sprite4$="shtroumf1g.bmp"
' gestion des évènements label event,Touches : dim edit2d% : edit2d%=98 : edit edit2d% : hide edit2d% : on_change edit2d%,event
' variables pour les procédures Panoramic dim top_sc2d%,left_sc2d%,width_sc2d%,height_sc2d%,visibilite%,back$ : ' pour le Kscene2d
' variable de règlages dim Dep_X_Shtroumf%, Dep_Y_Shtroumf% :' Aplitudes en x et y des dépacements du Shtroumf%
' FORM 0 full_space 0 : on_key_down 0,Touches border_hide 0 : caption 0,"Le glouton poltron" font_bold 0 : font_size 0,16 : color 0,0,0,0 : font_color 0,255,255,255 Print_locate (screen_x/2)-150,(screen_y/2)-100 : PRINT "VEUILLEZ PATIENTEZ... SVP." Print_locate (screen_x/2)-200,(screen_y/2) : PRINT "En cours de partie : sortie par ESC (Echap)."
' Mise en place des objets K2D dll_on "KGF.dll"
' Création du "KSCENE2D" top_sc2d%=-120 : left_sc2d%=-120 : width_sc2d%=screen_x+240 : height_sc2d%=screen_y+240 :' position et dimensions du Kscene2D visibilite%=1 :' visibilité du fond back$="fond.jpg" :' Image_Fond (jpg requis) VP%=0 :' ViewPort (1=mobile , 0=fixe) Create_SC2D()
' définir la couleur de transparence des sprites res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,0,0,0)
' Création du premier sprite (le glouton) x%=0 : y%=0 : res% = dll_call6("CreateSpriteInScene2D",SC2D%,x%,y%,0,10,adr(Sprite1$)) GloutonBleu%=res% : res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,GloutonBleu%,1,1,0,1) res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,GloutonBleu%,0,45,5,5): ' BG res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,GloutonBleu%,45,45,5,5):' BD res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,GloutonBleu%,0,0,5,5):' HG res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,GloutonBleu%,45,0,5,5):' HD res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,GloutonBleu%,0)
' Création du deuxième sprite (la barrière) res% = dll_call6("CreateSpriteInScene2D",SC2D%,400,400,0,10,adr(Sprite2$)) bar1%=res% res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,bar1%,1,0,0,0) res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,bar1%,60,60,5,5) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,bar1%,1)
' Création du troisième sprite (Shtroumf) x%=-100 res% = dll_call6("CreateSpriteInScene2D",SC2D%,x%,600,0,10,adr(Sprite3$)) Shtroumf%=res% res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,Shtroumf%,1,1,0,1) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,Shtroumf%,1) ' création de l'animation du troisième sprite (démarrage d'une ImageList déjà crée) IL% = dll_call2("CreateImageList",128,128)
' démarrage du GloutonBleu (pa% = "vitesse" de déplacement) pa%=4 : res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,GloutonBleu%,2,pa%,pa%,1) ' démarrage du Shtroumf% Dep_X_Shtroumf%=5 : Dep_Y_Shtroumf%=0 : MoveStroumfGD() rem ============================================================================ END rem ====================================== Traitement des appuis sur le clavier: Touches: if key_down_code = 27 then Border_normal 0 : font_name 0,"Arial" : Print_locate screen_x-435,10 : PRINT "Sortie par la croix rouge de la fenêtre "+chr$(94) ' Autres touches ' -------- RETURN rem ====================================== Capture et traitement des évènements: event: IF text$(edit2d%)="status" LoadInfo_S_Dollar() ' GloutonBleu% if SC2D_Panoramic%(2)=GloutonBleu% LoadInfo_S_Dollar() if SC2D_Panoramic%(16)=1 pause 1000 : ' le glouton a percuté le shtroumf res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,GloutonBleu%,410,410) else if SC2D_Panoramic%(16)=0 x%=-3 : y%=-2 res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,GloutonBleu%,2,x%,y%,50) else if SC2D_Panoramic%(16)<>0 pa%=0 : while pa%<5 : pa%=rnd(15) : end_While ' pa%=6 select SC2D_Panoramic%(17) case 1: ' left dx% = pa% : dy%=dy%+(pa%+2) case 2: ' top dy% = pa% case 3: ' right dx% = 0 - pa% case 4: ' bottom dy% = 0 - pa% end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,GloutonBleu%,2,dx%,dy%,50) end_if end_if end_if end_if
' Shtroumf% if SC2D_Panoramic%(2)=Shtroumf% LoadInfo_S_Dollar() if s$ = "bordure droite" MoveStroumfDG() end_if if s$ = "bordure gauche" MoveStroumfGD() end_if end_if END_IF RETURN rem ===================================== Déplacement et animations du Stroumph: SUB MoveStroumfGD() res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,0):' stop l'animation fic$="shtroumf.bmp" : res% = dll_call2("LoadImageList",IL%,adr(fic$)) : pause 200 res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,1,IL%):' code action 1: définit une ImageList pour le sprite . par% = IL% (identifiant d'un objet ImageList) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,2,16):' code action 2: charger une image de la ImageList dans le sprite : par% = indice le l'image (0,1,2,...) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,20):' code action 3: gestion de l'animation par ImageList : par%=0 - pas d'animation x%=Dep_X_Shtroumf% : y%=Dep_Y_Shtroumf% res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,Shtroumf%,2,x%,y%,1) END_SUB SUB MoveStroumfDG() res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,0):' stop l'animation fic$="shtroumfG.bmp" : res% = dll_call2("LoadImageList",IL%,adr(fic$)) : pause 200 res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,1,IL%):' code action 1: définit une ImageList pour le sprite . par% = IL% (identifiant d'un objet ImageList) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,2,16):' code action 2: charger une image de la ImageList dans le sprite : par% = indice le l'image (0,1,2,...) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,Shtroumf%,3,20):' code action 3: gestion de l'animation par ImageList : par%=0 - pas d'animation x%=0 - Dep_X_Shtroumf% : y%=0 - Dep_Y_Shtroumf% res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,Shtroumf%,2,x%,y%,1) END_SUB rem =========================================== Informations sur les évènements: SUB LoadInfo_S_Dollar() s$ = "" if SC2D_Panoramic%(16)=1 then s$ = "collision" if SC2D_Panoramic%(16)=2 then s$ = "bordure" if SC2D_Panoramic%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic%(17)) ' caption 0,"NumSprite="+str$(SC2D_Panoramic%(2))+" . event="+s$ ' caption 0,"sprite="+str$(SC2D_Panoramic%(2))+" . top="+str$(SC2D_Panoramic%(3))+" . left="+str$(SC2D_Panoramic%(4))+" . Width="+str$(SC2D_Panoramic%(5))+" . Height="+str$(SC2D_Panoramic%(6))+" . collision="+str$(SC2D_Panoramic%(7))+" . zone de contact="+str$(SC2D_Panoramic%(8)) ' caption 0,"Code action du sprite causant l'évènement="+str$(SC2D_Panoramic%(14))+" / Code fréquence d'action du sprite="+str$(SC2D_Panoramic%(15))+" / Code de collision="+str$(SC2D_Panoramic%(16)) END_SUB rem =================================== Création du SCENE2D et de son Interface: SUB Create_SC2D() ' Création SCENE2D et son Interface Create_SC2D_and_Interface() ' taille et position du SCENE2D res% = dll_call6("ResizeScene2D",SC2D%,top_sc2d%,left_sc2d%,width_sc2d%,height_sc2d%,visibilite%) ' Image de fond res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$)) END_SUB SUB Create_SC2D_and_Interface() SC2D% = dll_call2("CreateScene2D",handle(0),VP%) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(edit2d%) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) ' structure du tableau d'interface: ' 0 = taille du tableau (doit être chargé avant d'établir le lien) ' 1 = handle d'un EDIT (doit être chargé pour recevoir les évènements) ' 2 = ID du sprite sélectionné ' 3 = x (position horizontale du coin en haut à gauche du sprite) ' 4 = y (position verticale du coin en haut à gauche du sprite) ' 5 = w (largeur du sprite) ' 6 = h (hauteur du sprite) ' 7 ID du sprite collisionné ' 8 = numéro de la zone de contact collisionné dans le sprite collisionné ' 9 = flag "utilisation du viewport" ' 10 = flag "déplacement du viewport par la souris est autorisé" ' 11 = coordonnée x du viewport ' 12 = coordonnée y du viewport ' 13 = indice de l'image dans l'ImageList (-1 = ImageList non utilisée) END_SUB rem ============================================================================ ' AUTRES INFOS pour les Sprites:
' res% = dll_call6("CreateSpriteInScene2D",SC2D%, x%,y%,niv%,resist%,img%) ' niv%= pas en service : resist%=resistance à la pénétration : img%=adr(ImageSprite$)
' res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,ind%,vis%,sel%,mov%,ord%) ' sel%=cliquable, mov%=déplaçable souris, ord%=profondeur
' res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,ind%,0) ' 0 = une collision avec ce sprite ou une de ses zones de contact ne bloque pas le sprite arrivant ' 1 = une collision avec ce sprite ou une de ses zones de contact bloque le sprite arrivant qui reste bloqué dans sa position précédente
' Exemple de création d'une ImageList pour l'animation d'un sprite (à supprimer une fois que l'ImageList est crée) ' IL% = dll_call2("CreateImageList",128,128) ' res% = dll_call4("AddImageToImageList",IL%,adr(Sprite4$),1,0) ' a$="shtroumf2g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf3g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf4g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf5g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf6g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf7g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf8g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf9g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf10g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf11g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf12g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf13g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf14g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf15g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' a$="shtroumf16g.bmp" : res% = dll_call4("AddImageToImageList",IL%,adr(a$),1,0) ' res% = dll_call2("SaveImageList",IL%,adr(fic$))
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 10 Mai 2016 - 19:19 | |
| KGF.dll V6.66 du 10/05/2016Nouveautés: - ChangeSpritePositionInScene2D: correction d'un bugModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Et voici une version améliorée du programme de démo avec deux boules de billard: - Code:
-
' test_Scene2D_balle_rebondissante_Klaus.bas
label event
dim res%, SC2D%, SC2D_PS%, dx1%, dy1%, dx2%, dy2%, dim trans%, sinfo%, sp1%, sp2%, x1%, y1%, x2%, y2% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bl$ : bl$ = string$(5," ")
width 0,700 : height 0,550
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
picture 1 : hide 1 : width 1,40 : height 1,40 color 1,255,255,255 2d_target_is 1
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" trans% = 1
SC2D% = dll_call2("CreateScene2D",handle(0),0) res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,255,255,255) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
2d_pen_color 255,0,0 2d_fill_color 255,0,0 2d_circle 20,20,20 clipboard_copy 1 sp1% = dll_call6("CreateSpriteInScene2D",SC2D%,100,130,0,10,0) dx1% = 10 dy1% = 0 - 10 res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp1%,2,dx1%,dy1%,80)
2d_pen_color 0,0,255 2d_fill_color 0,0,255 2d_circle 20,20,20 clipboard_copy 1 sp2% = dll_call6("CreateSpriteInScene2D",SC2D%,200,230,0,10,0) dx2% = 10 dy2% = 0 - 5 res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp2%,2,dx2%,dy2%,50) end
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8))
if SC2D_Panoramic%(2)=sp1% if SC2D_Panoramic%(16)=1 dx1% = 0 - dx1% dy1% = 0 - dy1% x1% = SC2D_Panoramic%(3) + 2*dx1% if x1%<0 then x1% = 600 - 50 if x1%>350 then x1% = 50 y1% = SC2D_Panoramic%(4) + 2*dy1% if y1%<0 then y1% = 400 - 50 if y1%>350 then y1% = 50 res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,sp1%,x1%,y1%) ' message "sp1 position="+str$(x1%)+","+str$(y1%)+" "+str$(dx1%)+","+str$(dy1%) res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp1%,2,dx1%,dy1%,80) end_if if SC2D_Panoramic%(16)=2 select SC2D_Panoramic%(17) case 1: ' left dx1% = 10 case 2: ' top dy1% = 10 case 3: ' right dx1% = 0 - 10 case 4: ' bottom dy1% = 0 - 10 end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp1%,2,dx1%,dy1%,80) end_if end_if if SC2D_Panoramic%(2)=sp2% if SC2D_Panoramic%(16)=1 dx2% = 0 - dx2% dy2% = 0 - dy2% x2% = SC2D_Panoramic%(3) + 2*dx1% if x2%<0 then x2% = 600 - 50 if x2%>550 then x2% = 50 y2% = SC2D_Panoramic%(4) + 2*dy1% if y2%<0 then y2% = 400 - 50 if y2%>350 then y2% = 50 res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,sp2%,x2%,y2%) ' message "sp2 position="+str$(x2%)+","+str$(y2%)+" "+str$(dx2%)+","+str$(dy2%) res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp2%,2,dx2%,dy2%,50) end_if if SC2D_Panoramic%(16)=2 select SC2D_Panoramic%(17) case 1: ' left dx2% = 10 case 2: ' top dy2% = 5 case 3: ' right dx2% = 0 - 10 case 4: ' bottom dy2% = 0 - 5 end_select res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sp2%,2,dx2%,dy2%,50) end_if end_if end_if return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Mai 2016 - 14:46 | |
| KGF.dll V6.67 du 11/05/2016Nouveautés: - Scene2D: gestion de la transparence des sprites - ChangeSpriteOptionsInScene2D: nouveau paramètre "transparence" - AutomaticSpriteActionInScene2D: nouveau code 3 pour l'action automatique: variation de la transparenceModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. On peut maintenant avoir des sprites qui sont translucides. On peut régler le degré de transparence de 0 (totalement transparent) à 255 (opaque). Par défaut, un sprite est opaque. On peut même définir une action automatique "variation de transparence" pour un sprite, avec arrêt automatique dès qu'une des limites (0 ou 255) est atteinte, ou bouclage infini. Ca sert à quoi ? Faire s'évanouir un sprite, faire apparaître doucement un sprite, avoir un sprite d'apparence fantomatique, avoir un sprite fixe représentant une vitre pour voir le décor à travers, ... imaginez vos application ! Le programme de démo ci-après a, pour chacun des deux Scene2D, un bouton "Semi-transp." et "Opaque". Il s'applique sur le sprite sélectionné. Sur le sprite en forme d'étoile, c'est particulièrement significatif, si on le déplace par-dessus des éléments du fond. Le programe a également un bouton "Var. transp." pour chacun des Scene2D. Là encore, il agit sur le sprite sélectionné. Clquez sur un sprite (l'étoile ou la tête de mort, par exemple), puis sur ce bouton "Var. transp." du Scene2D concerné. Vous verrez le sprite s'évanouir puis réapparapitre, et ainsi de suite. Cliquez maintenant sur le bouton "Dépl. (+5,+5)" dans la même colonne, et le sprite, tout en continuant ses variations de transparence, va se déplacer jusqu'en bas à droite. Suivez le mouvement en déplaçant le fond en le tirant avec la souris. Ce sprite montre l'effet de deux actions automatiques simultanées sur le même sprite ! Bien entendu, la vitesse de varation de la transparence est réglable de la même manière que pour les déplacements automatiques. - Code:
-
' test_2_Scene2D.bas
label arriere1, avant1, cacher1, cachertout1, montrertout1 label arriere2, avant2, cacher2, cachertout2, montrertout2 label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2 label zoomplus1, zoommoins1, zoomplus2, zoommoins2 label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2 label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1 label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2 label affcontact1, pascontact1, affcontact2, pascontact2 label sdown1, sup2, stext1, stext2, stopanim1, stopanim2 label semitransp1, opaque1, semitransp2, opaque2, vartransp1, vartransp2
dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$ dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bord$(4) : bord$(0) = " " : bord$(1) = "gauche" : bord$(2) = "haut" : bord$(3) = "droite" : bord$(4) = "bas"
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp" dim marcheur$ : marcheur$ = "shokunin.ilb"
full_space 0
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere1 button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant1 button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher1 button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout1 button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout1 button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe1 button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile1 button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout1
button 201 : top 201,370 : left 201,10 : caption 201,"En arrière" : on_click 201,arriere2 button 202 : top 202,370 : left 202,100 : caption 202,"En avant" : on_click 202,avant2 button 203 : top 203,370 : left 203,190 : caption 203,"Cacher" : on_click 203,cacher2 button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout" : on_click 204,cachertout2 button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout" : on_click 205,montrertout2 button 206 : top 206,370 : left 206,460 : caption 206,"Fixe" : on_click 206,fixe2 button 207 : top 207,370 : left 207,550 : caption 207,"Mobile" : on_click 207,mobile2 button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout" : on_click 208,mobiletout2
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer1 button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus1 button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins1 button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg1 button 13 : top 13,160 : left 13,640 : caption 13,"ImageList" : on_click 13,imagelist1 button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb" : on_click 14,changerilb1 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info11 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info21 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit1 button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1 button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond1 button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21 button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1 button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1 button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1 button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv" : on_click 24,sdown1 button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte" : on_click 25,stext1 button 26 : top 26,550 : left 26,640 : caption 26,"Stop animat." : on_click 26,stopanim1 button 27 : top 27,580 : left 27,640 : caption 27,"Semi-transp." : on_click 27,semitransp1 button 28 : top 28,610 : left 28,640 : caption 28,"Opaque" : on_click 28,opaque1 button 29 : top 29,640 : left 29,640 : caption 29,"Var. transp." : on_click 29,vartransp1
button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer" : on_click 209,deplacer2 button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +" : on_click 210,zoomplus2 button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -" : on_click 211,zoommoins2 button 212 : top 212,130 : left 212,740 : caption 212,"Changer img" : on_click 212,changerimg2 button 213 : top 213,160 : left 213,740 : caption 213,"ImageList" : on_click 213,imagelist2 button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb" : on_click 214,changerilb2 button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D" : on_click 215,info12 button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite" : on_click 216,info22 button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond" : on_click 217,panit2 button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2 button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond" : on_click 219,enrfond2 button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22 button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2 button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2 button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2 button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^" : on_click 224,sup2 button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte" : on_click 225,stext2 button 226 : top 226,550 : left 226,740 : caption 226,"Stop animat." : on_click 226,stopanim2 button 227 : top 227,580 : left 227,740 : caption 227,"Semi-transp." : on_click 227,semitransp2 button 228 : top 228,610 : left 228,740 : caption 228,"Opaque" : on_click 228,opaque2 button 229 : top 229,640 : left 229,740 : caption 229,"Var. transp." : on_click 229,vartransp2
open_dialog 97
memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300 font_name 96,"Courier" : font_size 96,8 edit 98 : hide 98 : on_change 98,event1 alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"
memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300 font_name 296,"Courier" : font_size 296,8 edit 298 : hide 298 : on_change 298,event2 alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$)) trans% = int(res%/8) if trans%=0 then trans% = 1
SC2D1% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0) end_if
SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0) dim SC2D_Panoramic1%(SC2D1_PS%) SC2D_Panoramic1%(0) = SC2D1_PS% SC2D_Panoramic1%(1) = handle(98) res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%)) res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)
SC2D2% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0) end_if
SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0) dim SC2D_Panoramic2%(SC2D2_PS%) SC2D_Panoramic2%(0) = SC2D2_PS% SC2D_Panoramic2%(1) = handle(298) res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%)) res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)
res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$)) res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))
res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4)
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70) res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,2,0,0-1)
res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70) res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,1,0,0-1)
IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(marcheur$))
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event1: if text$(98)="status" s$ = "" if SC2D_Panoramic1%(16)=1 then s$ = "collision" if SC2D_Panoramic1%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic1%(17)) caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+" à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+" dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+" collision: "+str$(SC2D_Panoramic1%(7))+" contact: "+str$(SC2D_Panoramic1%(8))+" "+s$ if SC2D_Panoramic1%(16)=3 then message "Téléporté !" end_if
return
event2: if text$(298)="status" s$ = "" if SC2D_Panoramic2%(16)=1 then s$ = "collision" if SC2D_Panoramic2%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic2%(17)) caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+" à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+" dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+" collision: "+str$(SC2D_Panoramic2%(7))+" contact: "+str$(SC2D_Panoramic2%(8))+" "+s$ if SC2D_Panoramic2%(16)=3 then message "Téléporté !" end_if
return
arriere1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%) return
avant1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1) return
cacher1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0) return
cachertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0) return
montrertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
fixe1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0) return
mobile1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0) return
mobiletout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
arriere2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%) return
avant2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1) return
cacher2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0) return
cachertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0) return
montrertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
fixe2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0) return
mobile2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0) return
mobiletout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
deplacer1: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220) return
zoomplus1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*3)/2 h% = (SC2D_Panoramic1%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
zoommoins1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*2)/3 h% = (SC2D_Panoramic1%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
changerimg1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$)) return
imagelist1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%) return
changerilb1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190) return
info11: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info21: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%)) item_add 96,"Sprite:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit1: if SC2D_Panoramic1%(9)=0 then return if SC2D_Panoramic1%(10)=0 res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic1: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$)) return
enrfond1: f$ = "SC2D1_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp21: f$ = "SC2D1_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl1: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200) return
affcontact1: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1) return
pascontact1: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0) return
sdown1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1) return
stext1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) return
deplacer2: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220) return
zoomplus2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*3)/2 h% = (SC2D_Panoramic2%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
zoommoins2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*2)/3 h% = (SC2D_Panoramic2%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
changerimg2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$)) return
imagelist2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%) return
changerilb2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190) return
info12: clear 296 sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%)) item_add 296,"Scene2D:" item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info22: clear 296 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%)) item_add 296,"Sprite:" item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit2: if SC2D_Panoramic2%(9)=0 then return if SC2D_Panoramic2%(10)=0 res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic2: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$)) return
enrfond2: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp22: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl2: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200) return
affcontact2: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1) return
pascontact2: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0) return
sup2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1) return stext2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) return
stopanim1: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,0) return stopanim2: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,0) return semitransp1: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,1,0,127) return opaque1: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,1,0,255) return
semitransp2: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,1,0,127) return
opaque2: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,1,0,255) return
vartransp1: res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,3,0-16,2,75) return vartransp2: res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,3,0-16,2,75) return
J'espère que ça donnera des idées à quelques-uns ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Mai 2016 - 18:26 | |
| Wouaou ! C'est particulièrement spectaculaire !
J'ai fait des essais sur mon shtroumf et mon glouton, c'est assez marrant.
A+
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Mai 2016 - 20:40 | |
| De quoi dissoudre un sprite, le téléporter ailleurs et le faire réapparaître doucement, pour la plus grande surprise de l'adversaire ! EDITVoici une petite correction du programme de démo, pour pouvoir rendre semi-transparent n'importe quel sprite sélectionné, pas seulement l'étoile. La DLL est inchangé - c'est une mini-modif dans le code Panoramic: - Code:
-
' test_2_Scene2D.bas
label arriere1, avant1, cacher1, cachertout1, montrertout1 label arriere2, avant2, cacher2, cachertout2, montrertout2 label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2 label zoomplus1, zoommoins1, zoomplus2, zoommoins2 label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2 label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1 label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2 label affcontact1, pascontact1, affcontact2, pascontact2 label sdown1, sup2, stext1, stext2, stopanim1, stopanim2 label semitransp1, opaque1, semitransp2, opaque2, vartransp1, vartransp2
dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$ dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bord$(4) : bord$(0) = " " : bord$(1) = "gauche" : bord$(2) = "haut" : bord$(3) = "droite" : bord$(4) = "bas"
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp" dim marcheur$ : marcheur$ = "shokunin.ilb"
full_space 0
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere1 button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant1 button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher1 button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout1 button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout1 button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe1 button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile1 button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout1
button 201 : top 201,370 : left 201,10 : caption 201,"En arrière" : on_click 201,arriere2 button 202 : top 202,370 : left 202,100 : caption 202,"En avant" : on_click 202,avant2 button 203 : top 203,370 : left 203,190 : caption 203,"Cacher" : on_click 203,cacher2 button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout" : on_click 204,cachertout2 button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout" : on_click 205,montrertout2 button 206 : top 206,370 : left 206,460 : caption 206,"Fixe" : on_click 206,fixe2 button 207 : top 207,370 : left 207,550 : caption 207,"Mobile" : on_click 207,mobile2 button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout" : on_click 208,mobiletout2
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer1 button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus1 button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins1 button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg1 button 13 : top 13,160 : left 13,640 : caption 13,"ImageList" : on_click 13,imagelist1 button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb" : on_click 14,changerilb1 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info11 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info21 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit1 button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1 button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond1 button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21 button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1 button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1 button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1 button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv" : on_click 24,sdown1 button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte" : on_click 25,stext1 button 26 : top 26,550 : left 26,640 : caption 26,"Stop animat." : on_click 26,stopanim1 button 27 : top 27,580 : left 27,640 : caption 27,"Semi-transp." : on_click 27,semitransp1 button 28 : top 28,610 : left 28,640 : caption 28,"Opaque" : on_click 28,opaque1 button 29 : top 29,640 : left 29,640 : caption 29,"Var. transp." : on_click 29,vartransp1
button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer" : on_click 209,deplacer2 button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +" : on_click 210,zoomplus2 button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -" : on_click 211,zoommoins2 button 212 : top 212,130 : left 212,740 : caption 212,"Changer img" : on_click 212,changerimg2 button 213 : top 213,160 : left 213,740 : caption 213,"ImageList" : on_click 213,imagelist2 button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb" : on_click 214,changerilb2 button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D" : on_click 215,info12 button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite" : on_click 216,info22 button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond" : on_click 217,panit2 button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2 button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond" : on_click 219,enrfond2 button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22 button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2 button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2 button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2 button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^" : on_click 224,sup2 button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte" : on_click 225,stext2 button 226 : top 226,550 : left 226,740 : caption 226,"Stop animat." : on_click 226,stopanim2 button 227 : top 227,580 : left 227,740 : caption 227,"Semi-transp." : on_click 227,semitransp2 button 228 : top 228,610 : left 228,740 : caption 228,"Opaque" : on_click 228,opaque2 button 229 : top 229,640 : left 229,740 : caption 229,"Var. transp." : on_click 229,vartransp2
open_dialog 97
memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300 font_name 96,"Courier" : font_size 96,8 edit 98 : hide 98 : on_change 98,event1 alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"
memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300 font_name 296,"Courier" : font_size 296,8 edit 298 : hide 298 : on_change 298,event2 alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$)) trans% = int(res%/8) if trans%=0 then trans% = 1
SC2D1% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0) end_if
SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0) dim SC2D_Panoramic1%(SC2D1_PS%) SC2D_Panoramic1%(0) = SC2D1_PS% SC2D_Panoramic1%(1) = handle(98) res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%)) res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)
SC2D2% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0) end_if
SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0) dim SC2D_Panoramic2%(SC2D2_PS%) SC2D_Panoramic2%(0) = SC2D2_PS% SC2D_Panoramic2%(1) = handle(298) res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%)) res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)
res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$)) res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))
res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4)
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70) res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,2,0,0-1)
res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70) res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,1,0,0-1)
IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(marcheur$))
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event1: if text$(98)="status" s$ = "" if SC2D_Panoramic1%(16)=1 then s$ = "collision" if SC2D_Panoramic1%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic1%(17)) caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+" à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+" dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+" collision: "+str$(SC2D_Panoramic1%(7))+" contact: "+str$(SC2D_Panoramic1%(8))+" "+s$ if SC2D_Panoramic1%(16)=3 then message "Téléporté !" end_if
return
event2: if text$(298)="status" s$ = "" if SC2D_Panoramic2%(16)=1 then s$ = "collision" if SC2D_Panoramic2%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic2%(17)) caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+" à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+" dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+" collision: "+str$(SC2D_Panoramic2%(7))+" contact: "+str$(SC2D_Panoramic2%(8))+" "+s$ if SC2D_Panoramic2%(16)=3 then message "Téléporté !" end_if
return
arriere1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%) return
avant1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1) return
cacher1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0) return
cachertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0) return
montrertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
fixe1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0) return
mobile1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0) return
mobiletout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
arriere2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%) return
avant2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1) return
cacher2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0) return
cachertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0) return
montrertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
fixe2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0) return
mobile2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0) return
mobiletout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
deplacer1: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220) return
zoomplus1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*3)/2 h% = (SC2D_Panoramic1%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
zoommoins1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*2)/3 h% = (SC2D_Panoramic1%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
changerimg1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$)) return
imagelist1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%) return
changerilb1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190) return
info11: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info21: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%)) item_add 96,"Sprite:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit1: if SC2D_Panoramic1%(9)=0 then return if SC2D_Panoramic1%(10)=0 res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic1: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$)) return
enrfond1: f$ = "SC2D1_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp21: f$ = "SC2D1_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl1: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200) return
affcontact1: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1) return
pascontact1: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0) return
sdown1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1) return
stext1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) return
deplacer2: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220) return
zoomplus2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*3)/2 h% = (SC2D_Panoramic2%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
zoommoins2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*2)/3 h% = (SC2D_Panoramic2%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
changerimg2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$)) return
imagelist2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%) return
changerilb2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190) return
info12: clear 296 sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%)) item_add 296,"Scene2D:" item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info22: clear 296 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%)) item_add 296,"Sprite:" item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit2: if SC2D_Panoramic2%(9)=0 then return if SC2D_Panoramic2%(10)=0 res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic2: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$)) return
enrfond2: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp22: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl2: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200) return
affcontact2: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1) return
pascontact2: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0) return
sup2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1) return stext2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) return
stopanim1: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,0) return stopanim2: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,0) return semitransp1: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,0,0,127) return opaque1: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,0,0,255) return
semitransp2: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,0,0,127) return
opaque2: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,0,0,255) return
vartransp1: res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,3,0-16,2,75) return vartransp2: res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,3,0-16,2,75) return
Particulièrement intéressant sur le bonhomme qui marche... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 12 Mai 2016 - 2:49 | |
| KGF.dll V6.68 du 12/05/2016Nouveautés: - Scene2D: un sprite téléporté dans un Scene2D voisin garde ses critères de transparenceModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Lors d'une téléportation, les critères de transparence étaient perdus, et le sprite réapparaissait opaque dans tous les cas. Ceci est corrigé. Qu'il s'agisse d'un taux de transparence fixe ou d'une variation automatique de transparence, ces critères sont maintenant maintenus après un téléport. Pour mémoire, voici la démo: - Code:
-
' test_2_Scene2D.bas
label arriere1, avant1, cacher1, cachertout1, montrertout1 label arriere2, avant2, cacher2, cachertout2, montrertout2 label event1, event2, fixe1, fixe2, mobile1, mobile2, mobiletout1, mobiletout2 label zoomplus1, zoommoins1, zoomplus2, zoommoins2 label changerimg1, imagelist1, changerilb1, changerimg2, imagelist2, changerilb2 label deplacer1, info11, info21, panit1, mosaic1, enrfond1, enrsp21, actdepl1 label deplacer2, info12, info22, panit2, mosaic2, enrfond2, enrsp22, actdepl2 label affcontact1, pascontact1, affcontact2, pascontact2 label sdown1, sup2, stext1, stext2, stopanim1, stopanim2 label semitransp1, opaque1, semitransp2, opaque2, vartransp1, vartransp2
dim res%, SC2D1%, SC2D2%, SC2D1_PS%, SC2D2_PS%, IL%, w%, h%, f$, sInfo%, i%, trans%, s$ dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ") dim bord$(4) : bord$(0) = " " : bord$(1) = "gauche" : bord$(2) = "haut" : bord$(3) = "droite" : bord$(4) = "bas"
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp" dim marcheur$ : marcheur$ = "shokunin.ilb"
full_space 0
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere1 button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant1 button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher1 button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout1 button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout1 button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe1 button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile1 button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout1
button 201 : top 201,370 : left 201,10 : caption 201,"En arrière" : on_click 201,arriere2 button 202 : top 202,370 : left 202,100 : caption 202,"En avant" : on_click 202,avant2 button 203 : top 203,370 : left 203,190 : caption 203,"Cacher" : on_click 203,cacher2 button 204 : top 204,370 : left 204,280 : caption 204,"Cacher tout" : on_click 204,cachertout2 button 205 : top 205,370 : left 205,370 : caption 205,"Montrer tout" : on_click 205,montrertout2 button 206 : top 206,370 : left 206,460 : caption 206,"Fixe" : on_click 206,fixe2 button 207 : top 207,370 : left 207,550 : caption 207,"Mobile" : on_click 207,mobile2 button 208 : top 208,10 : left 208,740 : caption 208,"Mobile tout" : on_click 208,mobiletout2
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer1 button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus1 button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins1 button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg1 button 13 : top 13,160 : left 13,640 : caption 13,"ImageList" : on_click 13,imagelist1 button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb" : on_click 14,changerilb1 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info11 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info21 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit1 button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic1 button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond1 button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp21 button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl1 button 22 : top 22,430 : left 22,640 : caption 22,"Aff. contacts" : on_click 22,affcontact1 button 23 : top 23,460 : left 23,640 : caption 23,"Hide contacts" : on_click 23,pascontact1 button 24 : top 24,490 : left 24,640 : caption 24,"Sprite vvv" : on_click 24,sdown1 button 25 : top 25,520 : left 25,640 : caption 25,"Sprite texte" : on_click 25,stext1 button 26 : top 26,550 : left 26,640 : caption 26,"Stop animat." : on_click 26,stopanim1 button 27 : top 27,580 : left 27,640 : caption 27,"Semi-transp." : on_click 27,semitransp1 button 28 : top 28,610 : left 28,640 : caption 28,"Opaque" : on_click 28,opaque1 button 29 : top 29,640 : left 29,640 : caption 29,"Var. transp." : on_click 29,vartransp1
button 209 : top 209, 40 : left 209,740 : caption 209,"Déplacer" : on_click 209,deplacer2 button 210 : top 210, 70 : left 210,740 : caption 210,"Zoom +" : on_click 210,zoomplus2 button 211 : top 211,100 : left 211,740 : caption 211,"Zoom -" : on_click 211,zoommoins2 button 212 : top 212,130 : left 212,740 : caption 212,"Changer img" : on_click 212,changerimg2 button 213 : top 213,160 : left 213,740 : caption 213,"ImageList" : on_click 213,imagelist2 button 214 : top 214,190 : left 214,740 : caption 214,"Changer ilb" : on_click 214,changerilb2 button 215 : top 215,220 : left 215,740 : caption 215,"Info Scene2D" : on_click 215,info12 button 216 : top 216,250 : left 216,740 : caption 216,"Info Sprite" : on_click 216,info22 button 217 : top 217,280 : left 217,740 : caption 217,"Bloquer fond" : on_click 217,panit2 button 218 : top 218,310 : left 218,740 : caption 218,"Fond mosaïque" : on_click 218,mosaic2 button 219 : top 219,340 : left 219,740 : caption 219,"Enr. fond" : on_click 219,enrfond2 button 220 : top 220,370 : left 220,740 : caption 220,"Enr. sprite 2" : on_click 220,enrsp22 button 221 : top 221,400 : left 221,740 : caption 221,"Dépl. (+5,+5)" : on_click 221,actdepl2 button 222 : top 222,430 : left 222,740 : caption 222,"Aff. contacts" : on_click 222,affcontact2 button 223 : top 223,460 : left 223,740 : caption 223,"Hide contacts" : on_click 223,pascontact2 button 224 : top 224,490 : left 224,740 : caption 224,"Sprite ^^^" : on_click 224,sup2 button 225 : top 225,520 : left 225,740 : caption 225,"Sprite texte" : on_click 225,stext2 button 226 : top 226,550 : left 226,740 : caption 226,"Stop animat." : on_click 226,stopanim2 button 227 : top 227,580 : left 227,740 : caption 227,"Semi-transp." : on_click 227,semitransp2 button 228 : top 228,610 : left 228,740 : caption 228,"Opaque" : on_click 228,opaque2 button 229 : top 229,640 : left 229,740 : caption 229,"Var. transp." : on_click 229,vartransp2
open_dialog 97
memo 96 : top 96,40 : left 96,830 : width 96,220 : height 96,300 font_name 96,"Courier" : font_size 96,8 edit 98 : hide 98 : on_change 98,event1 alpha 99 : top 99,350 : left 99,10 : caption 99,"en attente"
memo 296 : top 296,400 : left 296,830 : width 296,220 : height 296,300 font_name 296,"Courier" : font_size 296,8 edit 298 : hide 298 : on_change 298,event2 alpha 299 : top 299,710 : left 299,10 : caption 299,"en attente"
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$)) trans% = int(res%/8) if trans%=0 then trans% = 1
SC2D1% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D1%,0,0,0) end_if
SC2D1_PS% = dll_call2("SetInterfaceOfScene2D",SC2D1%,0) dim SC2D_Panoramic1%(SC2D1_PS%) SC2D_Panoramic1%(0) = SC2D1_PS% SC2D_Panoramic1%(1) = handle(98) res% = dll_call2("SetInterfaceOfScene2D",SC2D1%,adr(SC2D_Panoramic1%)) res% = dll_call6("ResizeScene2D",SC2D1%,10,40,600,300,1)
SC2D2% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D2%,0,0,0) end_if
SC2D2_PS% = dll_call2("SetInterfaceOfScene2D",SC2D2%,0) dim SC2D_Panoramic2%(SC2D2_PS%) SC2D_Panoramic2%(0) = SC2D2_PS% SC2D_Panoramic2%(1) = handle(298) res% = dll_call2("SetInterfaceOfScene2D",SC2D2%,adr(SC2D_Panoramic2%)) res% = dll_call6("ResizeScene2D",SC2D2%,10,400,600,300,1)
res% = dll_call2("LoadBackgroundToScene2D",SC2D1%,adr(back$)) res% = dll_call2("LoadBackgroundToScene2D",SC2D2%,adr(back$))
res% = dll_call3("LinkScene2DToScene2D",SC2D1%,SC2D2%,4)
res% = dll_call6("CreateSpriteInScene2D",SC2D1%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D1%,350,30,0,200,adr(sprite3$))
res% = dll_call6("CreateSpriteInScene2D",SC2D2%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D2%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2D",SC2D1%,1,70,70,70,70) res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,2,0,0-1)
res% = dll_call6("DefineSpriteContactInScene2D",SC2D2%,1,70,70,70,70) res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,1,0,0-1)
IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(marcheur$))
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,190)
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,2,1) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,3,3,190)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event1: if text$(98)="status" s$ = "" if SC2D_Panoramic1%(16)=1 then s$ = "collision" if SC2D_Panoramic1%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic1%(17)) caption 99,"sprite "+str$(SC2D_Panoramic1%(2))+" à "+str$(SC2D_Panoramic1%(3))+","+str$(SC2D_Panoramic1%(4))+" dimension "+str$(SC2D_Panoramic1%(5))+","+str$(SC2D_Panoramic1%(6))+" collision: "+str$(SC2D_Panoramic1%(7))+" contact: "+str$(SC2D_Panoramic1%(8))+" "+s$ if SC2D_Panoramic1%(16)=3 then message "Téléporté !" end_if
return
event2: if text$(298)="status" s$ = "" if SC2D_Panoramic2%(16)=1 then s$ = "collision" if SC2D_Panoramic2%(16)=2 then s$ = "bordure" if SC2D_Panoramic1%(16)=3 then s$ = "téléporté" s$ = s$ + " " + bord$(SC2D_Panoramic2%(17)) caption 299,"sprite "+str$(SC2D_Panoramic2%(2))+" à "+str$(SC2D_Panoramic2%(3))+","+str$(SC2D_Panoramic2%(4))+" dimension "+str$(SC2D_Panoramic2%(5))+","+str$(SC2D_Panoramic2%(6))+" collision: "+str$(SC2D_Panoramic2%(7))+" contact: "+str$(SC2D_Panoramic2%(8))+" "+s$ if SC2D_Panoramic2%(16)=3 then message "Téléporté !" end_if
return
arriere1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,M1%) return
avant1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,1) return
cacher1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,0,1,1,0) return
cachertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,0,1,1,0) return
montrertout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
fixe1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,0,0) return
mobile1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,0,1,1,1,0) return
mobiletout1: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D1%,M1%,1,1,1,0) return
arriere2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,M1%) return
avant2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,1) return
cacher2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,0,1,1,0) return
cachertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,0,1,1,0) return
montrertout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
fixe2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,0,0) return
mobile2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,0,1,1,1,0) return
mobiletout2: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D2%,M1%,1,1,1,0) return
deplacer1: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D1%,0,200,220) return
zoomplus1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*3)/2 h% = (SC2D_Panoramic1%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
zoommoins1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic1%(5)*2)/3 h% = (SC2D_Panoramic1%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D1%,0,w%,h%) return
changerimg1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,0,adr(f$)) return
imagelist1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,1,IL%) return
changerilb1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,0,3,190) return
info11: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D1%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D1%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info21: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D1%,0,adr(info%)) item_add 96,"Sprite:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit1: if SC2D_Panoramic1%(9)=0 then return if SC2D_Panoramic1%(10)=0 res% = dll_call4("ScrollScene2D",SC2D1%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D1%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic1: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D1%,1200,800,adr(f$)) return
enrfond1: f$ = "SC2D1_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp21: f$ = "SC2D1_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D1%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl1: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,2,5,5,200) return
affcontact1: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,1) return
pascontact1: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D1%,0-1,0) return
sdown1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D1%,0,SC2D2%,400,10,1) return
stext1: if SC2D_Panoramic1%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D1%,0,adr(s$)) return
deplacer2: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D2%,0,200,220) return
zoomplus2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*3)/2 h% = (SC2D_Panoramic2%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
zoommoins2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic2%(5)*2)/3 h% = (SC2D_Panoramic2%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D2%,0,w%,h%) return
changerimg2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,0,adr(f$)) return
imagelist2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,1,IL%) return
changerilb2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,2,res%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,190) return
info12: clear 296 sInfo% = dll_call2("InformAboutScene2D",SC2D2%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D2%,adr(info%)) item_add 296,"Scene2D:" item_add 296,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 296,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 296,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 296,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 296,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 296,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 296,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 296,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 296,right$(bl$+str$(info%(10)),4) + " = top du viewport" return
info22: clear 296 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D2%,0,adr(info%)) item_add 296,"Sprite:" item_add 296,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 296,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 296,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 296,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 296,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 296,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 296,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 296,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 296,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 296,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 296,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 296,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 296,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 296,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 296,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit2: if SC2D_Panoramic2%(9)=0 then return if SC2D_Panoramic2%(10)=0 res% = dll_call4("ScrollScene2D",SC2D2%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D2%,0,0,0) caption 17,"Libérer fond" end_if return
mosaic2: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D2%,1200,800,adr(f$)) return
enrfond2: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D2%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return
enrsp22: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return
actdepl2: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,2,5,5,200) return
affcontact2: ' afficher les zones de contact pour tous les sprites res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,1) return
pascontact2: ' cacher les zones de contact res% = dll_call3("ShowContactsInScene2D",SC2D2%,0-1,0) return
sup2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call6("CopySpriteToScene2D",SC2D2%,0,SC2D1%,400,10,1) return stext2: if SC2D_Panoramic2%(2)=0 message "Aucun sprite n'est sélectionné" return end_if s$ = string$(255," ") res% = dll_call3("GetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) s$ = trim$(s$) s$ = message_input$("Texte du sprite","Texte:",s$) res% = dll_call3("SetTextOfSpriteInScene2D",SC2D2%,0,adr(s$)) return
stopanim1: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D1%,3,3,0) return stopanim2: res% = dll_call4("ChangeSpriteImageInScene2D",SC2D2%,0,3,0) return semitransp1: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,0,0,127) return opaque1: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D1%,0,0,255) return
semitransp2: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,0,0,127) return
opaque2: res% = dll_call4("ChangeSpriteOptionsInScene2D",SC2D2%,0,0,255) return
vartransp1: res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D1%,0,3,0-16,2,75) return vartransp2: res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D2%,0,3,0-16,2,75) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Mai 2016 - 18:54 | |
| Qu'est-ce que tu essais de faire avec ceci: - Code:
-
res% = DLL_call6("GridFunction",obj%,18,1,height(par%)-120,0,0) Le code 18 impose une largeur de colonne, dans ce cas, à la colonne 1. Cette largeur sera égale à la hauteur de l'objet par% de Panoramic, diminuée de 120 pixels. Est-ce que ça fait sens, pour toi ? Comme je n'ai que la sub et pas un code exécutable pour tester, j'en suis réduit à des suppositions. En tout cas, ce code 8 marche chez moi, dans le programme de démo, qui est cependant assez complexe. Regarde comment c'est fait là... Le message d'erreur pourrait laisser penser que tu as passé quelque part des paramètres pas dans le bon ordre, ou une chaîne de caractères à la place d'une valeur entière, ou similaire. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Mai 2016 - 20:33 | |
| Heu... bizarre l'intervention de Ygeronimi a disparue Ça enlève la cohérence de la réponse de Klaus, qui ne me répond pas à moi, mais à Ygeronimi, sur une question qui n’apparaît plus. @Ygeronimi, si tu as supprimé le message, t'aurais pas dû. C'est mieux de tout barrer, ou d' ajouter un PS pour dire que le message n'est plus valide. A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 14 Mai 2016 - 9:29 | |
| Effectivement... Je me suis rendu compte de la c....rie mais trop tard, je l' avais faite. @ Klaus, je me suis rendu compte du truc, j' ai confondu vitesse et précipitation. height(par%) n' a pas de sens s' était width(par%) qui devait être là par% étant l' objet parent de obj% qui est le StringGrid. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Mai 2016 - 10:23 | |
| Donc, dans ce cas, tu donnerais à la colonne 1 la largeur totale de l'objet parent du StringGrid... je ne comprends toujours pas. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 14 Mai 2016 - 13:33 | |
| Dans le cas présent, les "grid" sont enfants de "panel". Comme je veux que les "scroll_bar" soit des objets panoramic, mes "grid" font la largeur des "panel" moins 20px pour placer les "scroll_bar".
ensuite, je veux que la colonne 2 fasse 100 de large la largeur de la colonne 1 sera la largeur du "panel" moins la largeur de la colonne 1 moins la largeur de la "scroll_bar". En y repensant, j' aurai pu récupéré la largeur du "grid" moins la largeur de la colonne 1, c' est vrai.
Bon, Autre chose : Dans le cas où on veuille que le parent d' un StringGrid soit un objet panoramic "Container", on a un souci de placement. Les lignes de cadre de "Container" sont à l' intérieur de ses dimensions et par conséquent, l' objet ne se trouve pas dans ce cadre. Mais il me semble que cela avait déjà été signalé. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Mai 2016 - 13:43 | |
| - Citation :
- Dans le cas où on veuille que le parent d' un StringGrid soit un objet panoramic "Container", on a un souci de placement.
Les lignes de cadre de "Container" sont à l' intérieur de ses dimensions et par conséquent, l' objet ne se trouve pas dans ce cadre. Oui. Mais c'est vrai pou tout objet, même objets Panoramic. Essaie de placer un bouton dans un Container, en (0,0)... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 14 Mai 2016 - 13:56 | |
| Les autres objets peuvent, presque tous, être placé par "top" et "left", pas StringGrid... Mais il n' y a rien de grave. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |