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

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
KGF_dll - nouvelles versions - Page 25 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF_dll - nouvelles versions - Page 25 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF_dll - nouvelles versions - Page 25 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF_dll - nouvelles versions - Page 25 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF_dll - nouvelles versions - Page 25 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF_dll - nouvelles versions - Page 25 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF_dll - nouvelles versions - Page 25 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF_dll - nouvelles versions - Page 25 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 25 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF_dll - nouvelles versions - Page 25 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF_dll - nouvelles versions - Page 25 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF_dll - nouvelles versions - Page 25 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF_dll - nouvelles versions - Page 25 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF_dll - nouvelles versions - Page 25 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF_dll - nouvelles versions - Page 25 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Boutique Nike : -25% dès 50€ sur TOUT le ...
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+8
JL35
Marc
papydall
Jicehel
Yannick
pascal10000
Minibug
Klaus
12 participants
Aller à la page : Précédent  1 ... 14 ... 24, 25, 26 ... 32 ... 40  Suivant
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyDim 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% Question Question

A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyDim 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+
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyDim 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...

EDIT

Le 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 bis

Et 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyDim 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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 Very Happy

A+

Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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. Very Happy
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+
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyLun 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 ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyMar 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+
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyMar 10 Mai 2016 - 19:19

KGF.dll V6.66 du 10/05/2016

Nouveautés:
- ChangeSpritePositionInScene2D: correction d'un bug

Modules modifiés:
KGF.dll

La 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

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyMer 11 Mai 2016 - 14:46

KGF.dll V6.67 du 11/05/2016

Nouveautés:
- Scene2D: gestion de la transparence des sprites
- ChangeSpriteOptionsInScene2D: nouveau paramètre "transparence"
- AutomaticSpriteActionInScene2D: nouveau code 3 pour l'action automatique: variation de la transparence



Modules modifiés:
KGF.dll
KGF.chm


La 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 !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyMer 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+
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyMer 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 !

EDIT

Voici 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyJeu 12 Mai 2016 - 2:49

KGF.dll V6.68 du 12/05/2016

Nouveautés:
- Scene2D: un sprite téléporté dans un Scene2D voisin garde ses critères de transparence


Modules modifiés:
KGF.dll

La 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyVen 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptyVen 13 Mai 2016 - 20:33

Heu... bizarre l'intervention de Ygeronimi a disparue Question

Ç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û. Very Happy
C'est mieux de tout barrer, ou d' ajouter un PS pour dire que le message n'est plus valide.

A+
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 25 EmptySam 14 Mai 2016 - 9:29

Effectivement... Embarassed
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.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptySam 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 25 EmptySam 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é.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 EmptySam 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)...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 25 EmptySam 14 Mai 2016 - 13:56

Les autres objets peuvent, presque tous, être placé par "top" et "left", pas StringGrid...
Wink

Mais il n' y a rien de grave.
Revenir en haut Aller en bas
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 25 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 25 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 25 sur 40Aller à la page : Précédent  1 ... 14 ... 24, 25, 26 ... 32 ... 40  Suivant
 Sujets similaires
-
» Nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: