Source:Gérer des fenetres.dbp
Un article de Games Creators Network.
Voilà de quoi gérer des fenetres, deplacement et passage au premier plan, n'hésitez pas à changer le nombre de fenetres et d'autres paramètres.
Rem Résolution de l'écran set display mode 1024,768,32 Rem Taux de rafraichissement sync on sync rate 60 Rem Initialisation des données(changez la position initiale des fenetres(sprite numero de la fenetre,x,y,1) pour plus de 6 fenetres nombrefenetres=6 dim fenetres(nombrefenetres) dim fenetreselectionnes(nombrefenetres,1) Rem Création d'une image (peut être remplacer par une image de dimension 256x128 pixels, ou de dimensions quelconque si l'on modifie les données du code) create bitmap 1,256,128 ink rgb(96,96,96),0 box 16,0,239,127 for x=180 to 270 xligne#=16+(cos(x)*16) yligne#=16+(sin(x)*16) line xligne#,yligne#,16,16 next x for x=270 to 360 xligne#=239+(cos(x)*16) yligne#=16+(sin(x)*16) line xligne#,yligne#,239,16 next x ink rgb(128,128,128),0 box 16,111,239,127 box 0,16,255,111 for x=90 to 180 xligne#=16+(cos(x)*16) yligne#=111+(sin(x)*16) line xligne#,yligne#,16,111 next x for x=0 to 90 xligne#=239+(cos(x)*16) yligne#=111+(sin(x)*16) line 239,111,xligne#,yligne# next x ink rgb(192,192,192),0 line 0,16,255,16 set text to italic center text 128,2,"MENU" get image 1,0,0,255,127,1 delete bitmap 1 set current bitmap 0 ink rgb(256,256,256),0 Rem Attribution de valeur for fenetre=1 to nombrefenetres sprite 1+fenetre,(screen width()/2)-128,(screen height()-(nombrefenetres*128))/(nombrefenetres+1)*fenetre+(128*(fenetre-1)),1 set sprite priority fenetre+1,fenetre fenetres(fenetre)=fenetre set sprite 1+fenetre,1,1 next fenetre Rem Boucle principale do ancientx=nouveaux ancienty=nouveauy nouveaux=mousex() nouveauy=mousey() if mouseclick()=1 and clique=0 clique=1 for fenetre=1 to nombrefenetres if nouveaux>sprite x(fenetre+1) and nouveauy>sprite y(fenetre+1) and nouveaux<sprite x(fenetre+1)+256 and nouveauy<sprite y(fenetre+1)+128 nombreselections=nombreselections+1 fenetreselectionnes(nombreselections)=fenetre if nouveauy<sprite y(fenetre+1)+16 if fenetreselectionnes(nombreselections,1)=0 then fenetreselectionnes(nombreselections,1)=1 else if fenetreselectionnes(nombreselections,1)=1 then fenetreselectionnes(nombreselections,1)=0 endif endif next fenetre if nombreselections>0 for fenetretest=1 to nombreselections if fenetres(fenetreselectionnes(fenetretest))>fenetres(fenetrepremierplan) numero=fenetretest fenetrepremierplan=fenetreselectionnes(fenetretest) endif next fenetretest if fenetres(fenetrepremierplan)<nombrefenetres for fenetredecale=1 to fenetrepremierplan-1 if fenetres(fenetredecale)>fenetres(fenetrepremierplan) fenetres(fenetredecale)=fenetres(fenetredecale)-1 set sprite priority fenetredecale+1,fenetres(fenetredecale) endif next fenetredecale for fenetredecale=fenetrepremierplan+1 to nombrefenetres if fenetres(fenetredecale)>fenetres(fenetrepremierplan) fenetres(fenetredecale)=fenetres(fenetredecale)-1 set sprite priority fenetredecale+1,fenetres(fenetredecale) endif next fenetredecale set sprite priority fenetrepremierplan+1,nombrefenetres endif if fenetreselectionnes(numero,1)=1 then fenetreselectionnee=fenetrepremierplan fenetres(fenetrepremierplan)=nombrefenetres if fenetrepremierplan>0 then fenetrepremierplan=0 endif if nombreselections>0 then nombreselections=0 endif if clique=1 if mouseclick()=1 if fenetreselectionnee>0 then sprite fenetreselectionnee+1,sprite x(fenetreselectionnee+1)+(nouveaux-ancientx),sprite y(fenetreselectionnee+1)+(nouveauy-ancienty),1 else clique=0 fenetreselectionnee=0 endif endif sync loop

