créer un logiciel

corwin Message lu Posté le 18 Juil 2009 à 15:37 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Bon dans cette partie je vais mettre quelque source sans média (comme dab) pour la création d'un logiciel sous dbpro. Au programe :

- pop-up de clique droit
- barre d'outil
- charger/sauvegarder
- rectangle de sélection
- message
- d'autre a venir...

Quelque personne ici se souvienne déjà que j'avais fait quelque chose de semblable mais vu que nous avons tout perdu dans un terrible accident je suis bien obliger de tout refaire :)
Si quelqu'un a des sources a donner ou a une idée ou bien améliore les sources déjà posté n'hésiter pas a faire partager :)

pour commencer un petit clic droit :
Code :
sync on:sync rate 60
set window on
set window title "clique droit !!!"
cls rgb(110,110,110)


   `              POPUP SYSTEME
  `    Vous permez de creer des PopUps grace à user32.dll
   `   Vous pouvez faire menu, sous menu et check menu


rem --------------------      Bibliotheque  POp Up
load dll "user32.dll",1
rem --------------------

`Exemple pour les renvoi de valeurs

type mm
   transparence as boolean
   cull as boolean
   filtre as boolean
   lumiere as boolean
   brouillard as boolean
   ambiance as boolean
endtype
type ee
   effet as mm
endtype

map as ee


`-----------------------------
   `     INIT  UTILISATEUR (USER)
 `----------------------------
` ATTENTION, VOUS DEVEZ AJOUTER 2 POPUPs (system) donc si vous voulez creer 3 popups, Nb_PU=5
 `ATTENTION, LE POPUP 0 ET LE POPUP nb_PU SONT UTILISER POUR LES CHECKS POPUP.

`Nombre de PopUp
 nb_PU=5
 `Nombre de Menu max
 nb_Menu=7
 `N° MemBlock libre
 no_Mem=6
`Nbre de sous menu max possible
 Nb_Max_PU=3
Dim ListResultPU(Nb_Max_PU) :
`--------

`-----------------------------
   `     INITIALISATION
 `----------------------------
 type men
   texte as string
   genre as integer
   ref_Menu
 endtype
 Dim PU_Menu(nb_PU,nb_Menu) as men
 Dim PU(nb_PU,2)
 make memblock no_Mem,8
 Init_PopUp_Sys(nb_PU)


 `-----------------------------------------
   `     INITIALISATION DE VOS POPUPS
 `-----------------------------------------

   `MENU GENRE

   ` 0-> Inactif
   ` 1-> Normal
   ` 2-> Check on/off
   ` 3-> MultiCheck

` Toujours laisser le PU_Menu(x,0).genre a 0 sauf si vous désirez que si l'on ne valide rien,
` il prend la valeur par default (x,0).   J'ai pas réussi a faire autrement



 PU_Menu(1,0).texte="Outils"
 PU_Menu(1,0).genre=0
 PU_Menu(1,1).texte="Charger Relief"
 PU_Menu(1,1).genre=1
 PU_Menu(1,2).texte="Charger Texture"
 PU_Menu(1,2).genre=1
 Init_PopUp(1)

 PU_Menu(2,0).texte="Terrain"
 PU_Menu(2,0).genre=0
 PU_Menu(2,1).texte="Texturer"
 PU_Menu(2,1).genre=1
 PU_Menu(2,2).texte="Redimensioner"
 PU_Menu(2,2).genre=1
 PU_Menu(2,3).texte="Hauteur"
 PU_Menu(2,3).genre=1
 PU_Menu(2,4).texte="Parametrer"
 PU_Menu(2,4).genre=3
 PU_Menu(2,4).ref_Menu=3
 Init_PopUp(2)

 PU_Menu(3,0).texte="Parametre"
 PU_Menu(3,0).genre=0
 PU_Menu(3,1).texte="Transparence"
 PU_Menu(3,1).genre=2
 PU_Menu(3,2).texte="Simple face"
 PU_Menu(3,2).genre=2
 PU_Menu(3,3).texte="Filtre"
 PU_Menu(3,3).genre=2
 PU_Menu(3,4).texte="Lumiere"
 PU_Menu(3,4).genre=2
 PU_Menu(3,5).texte="Brouillard"
 PU_Menu(3,5).genre=2
 PU_Menu(3,6).texte="Ambiance"
 PU_Menu(3,6).genre=2
 Init_PopUp(3)
 `-------------

`            BOUCLE PRINCIPALE
Do
   `On test ici le popup 2
  if mouseclick()=2
   returnv=Test_PU(2,no_Mem)
   if returnv<>0
   `Quand on click sur parametrer
         if returnv=4
       `Quand on click sur Transparence
            if ListResultPU(2)=1
      `Le resultat est ListResultPU(3).
               if ListResultPU(3)=1 then map.effet.transparence=1
               if ListResultPU(3)=0 then map.effet.transparence=0
      click$="Transparence"
            endif
            if ListResultPU(2)=2
               if ListResultPU(3)=1 then map.effet.cull=1
               if ListResultPU(3)=0 then map.effet.cull=0
      click$="Cull"
            endif
            if ListResultPU(2)=3
               if ListResultPU(3)=1 then map.effet.filtre=1
               if ListResultPU(3)=0 then map.effet.filtre=0
      click$="Filtre"
            endif
            if ListResultPU(2)=4
               if ListResultPU(3)=1 then map.effet.lumiere=1
               if ListResultPU(3)=0 then map.effet.lumiere=0
      click$="Lumiere"
            endif
            if ListResultPU(2)=5
               if ListResultPU(3)=1 then map.effet.brouillard=1
               if ListResultPU(3)=0 then map.effet.brouillard=0
      click$="Brouillard"
            endif
            if ListResultPU(2)=6
               if ListResultPU(3)=1 then map.effet.ambiance=1
               if ListResultPU(3)=0 then map.effet.ambiance=0
      click$="Ambiance"
            endif
         endif

        if returnv=3 then Click$="Hauteur"
        if returnv=2 then Click$="Redimensionner"
        if returnv=1
           Click$="Texturer"
         endif
      else
      Click$="Click out"
      endif

      cls rgb(110,110,110)
      Text 0,0,"Click sur "+Click$+" "+str$(ListResultPU(3))
   endif
   Sync
LOOP




`-------------
Function Test_PU(No_PU, no_Mem )
retval=call dll(1,"GetCursorPos",get memblock ptr(no_Mem))
returnv=call dll(1,"TrackPopupMenu",PU(No_PU,1),256,memblock word(no_Mem,0),memblock word(no_Mem,4),0,PU(No_PU,0),0)
returnv=PopUp_OI(No_PU,returnv,no_Mem)
`IF return=100 Menu non validé
endfunction returnv

function Init_PopUp(No)
  PU(No,0) = call dll(1,"GetActiveWindow")
  PU(No,1) = call dll(1,"CreatePopupMenu")

  while PU_Menu(No,i).texte<>""
      if PU_Menu(No,i).genre=4
         null=call dll(1,"AppendMenuA",PU(No,1),8,i,PU_Menu(No,i).texte)
      else
         null=call dll(1,"AppendMenuA",PU(No,1),0,i,PU_Menu(No,i).texte)
      endif
     inc i
  endwhile
endfunction

Function Init_PopUp_Sys(nb_PU)
   Init_PopUp_Sys_Off()
   Init_PopUp_Sys_On(nb_PU)
endfunction

Function Init_PopUp_Sys_Off()

`---------------------
   `PopUp Systeme  Oui/Non
 PU_Menu(0,0).texte="Choix"
 PU_Menu(0,0).genre=0
 PU_Menu(0,1).texte="Non"
 PU_Menu(0,1).genre=4
 PU_Menu(0,2).texte="Oui"
 PU_Menu(0,2).genre=1
 Init_PopUp(0)

endfunction

Function Init_PopUp_Sys_On(nb_PU)

`---------------------
   `PopUp Systeme  Oui/Non
 PU_Menu(nb_PU,0).texte="Choix"
 PU_Menu(nb_PU,0).genre=0
 PU_Menu(nb_PU,1).texte="Non"
 PU_Menu(nb_PU,1).genre=1
 PU_Menu(nb_PU,2).texte="Oui"
 PU_Menu(nb_PU,2).genre=4
 Init_PopUp(nb_PU)

endfunction

Function PopUp_OI(no_menu,item,no_Mem)
   If PU_Menu(no_menu,Item).genre=2
      PU=Reference_PopUp(No_Menu,0)
      PU=Reference_PopUp(No_Menu,Item)
      valeur=Test_PU(PU,no_Mem)
      ListResultPU(no_menu)=valeur
      if ListResultPU(no_menu)=0 then  valeur=0 : exitfunction valeur
      ListResultPU(no_menu)=ListResultPU(no_menu)-1
   endif
   If PU_Menu(no_menu,Item).genre=3
      ListResultPU(no_menu)=Test_PU(PU_Menu(no_menu,item).ref_menu,no_Mem)
      if ListResultPU(no_menu)=0 then Valeur=0 : exitfunction valeur
   endif
   valeur=item
endfunction valeur

Function Reference_PopUp(No_Menu,Item)
if Item=0
   ` Pour l'utilisation des PopUp Avec etat de la valeur
   if No_menu=3
      PU_Menu(3,1).ref_menu=map.effet.transparence
      PU_Menu(3,2).ref_menu=map.effet.cull
      PU_Menu(3,3).ref_menu=map.effet.filtre
      PU_Menu(3,4).ref_menu=map.effet.lumiere
      PU_Menu(3,5).ref_menu=map.effet.brouillard
      PU_Menu(3,6).ref_menu=map.effet.ambiance
   endif
else
   if PU_Menu(No_menu,item).ref_menu=0 then PU=0
   if PU_Menu(No_menu,item).ref_menu=1 then PU=5
endif
endfunction PU


puis maintenant la sélection :
Code :
backdrop on
do

if mouseclick()=1 and selected = 0
   OldX = mousex()
   OldY = MouseY()
   selected = 1
endif

if selected = 1 and mouseclick()=1
   line OldX,OldY,Mousex(),OldY
   line OldX,OldY,OldX,MouseY()

   line Mousex(),MouseY(),Mousex(),OldY
   line Mousex(),MouseY(),OldX,MouseY()
endif

if mouseclick()=0
   selected = 0
   oldx = 0
   oldy = 0
endif
loop


charger un fichier :
Code :
load image getFileName("load","ouvrer une image","Image BMP, GIF ou JPG","*.bmp;*.gif;*.jpg"),1
paste image 1,0,0
do
loop
function getFileName(mode$,FileBoxTitle$,ShownFileFilter$,RealFileFilter$)
   FileBoxTitle$ = FileBoxTitle$+"^"
   FileFilter$ = ShownFileFilter$+"^"+RealFileFilter$+"^^"


   user32=findFreeDllSlot()
   load dll "user32.dll",user32
   kernel32=findFreeDllSlot()
   load dll "kernel32.dll",kernel32
   comdlg32=findFreeDllSlot()
   load dll "comdlg32.dll",comdlg32

   lStructSize       = 0
   hwndOwner         = 4
   hInstance         = 8
   lpstrFilter       = 12
   lpstrCustomFilter = 16
   nMaxCustFilter    = 20
   nFilterIndex      = 24
   lpstrFile         = 28
   nMaxFile          = 32
   lpstrFileTitle    = 36
   nMaxFileTitle     = 40
   lpstrInitialDir   = 44
   lpstrTitle        = 48
   Flags             = 52
   nFileOffset       = 56
   nFileExtension    = 58
   lpstrDefExt       = 60
   lCustData         = 64
   lpfnHook          = 68
   lpTemplateName    = 72
   StructEnd         = 76


   OFN_ALLOWMULTISELECT       = 512:rem 0x00000200
   OFN_CREATEPROMPT           = 8192:rem 0x00002000
   OFN_ENABLEHOOK             = 32:rem 0x00000020
   OFN_ENABLETEMPLATE         = 64:rem 0x00000040
   OFN_ENABLETEMPLATEHANDLE   = 128:rem 0x00000080
   OFN_EXPLORER               = 524288:rem 0x00080000
   OFN_EXTENSIONDIFFERENT     = 1024:rem 0x00000400
   OFN_FILEMUSTEXIST          = 4096:rem 0x00001000
   OFN_HIDEREADONLY           = 4:rem 0x00000004
   OFN_LONGNAMES              = 2097152:rem 0x00200000
   OFN_NOCHANGEDIR            = 8:rem 0x00000008
   OFN_NODEREFERENCELINKS     = 1048576:rem 0x00100000
   OFN_NOLONGNAMES            = 262144:rem 0x00040000
   OFN_NONETWORKBUTTON        = 131072:rem 0x00020000
   OFN_NOREADONLYRETURN       = 32768:rem 0x00008000
   OFN_NOTESTFILECREATE       = 65536:rem 0x00010000
   OFN_NOVALIDATE             = 256:rem 0x00000100
   OFN_OVERWRITEPROMPT        = 2:rem 0x00000002
   OFN_PATHMUSTEXIST          = 2048:rem 0x00000800
   OFN_READONLY               = 1:rem 0x00000001
   OFN_SHAREAWARE             = 16384:rem 0x00004000
   OFN_SHOWHELP               = 16:rem 0x00000010


   FileBoxFlags   = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST + OFN_LONGNAMES + OFN_HIDEREADONLY + OFN_NONETWORKBUTTON
   PathBufferSize = 256
   hWnd           = call dll(user32,"GetActiveWindow")
   hMod           = call dll(kernel32,"GetModuleHandleA",0)


   OFN_MB          = findFreeMemblockSlot()
   make memblock OFN_MB,StructEnd
   PathBuffer_MB   = findFreeMemblockSlot()
   make memblock PathBuffer_MB,PathBufferSize
   FileFilter_MB   = findFreeMemblockSlot()
   make memblock FileFilter_MB,len(FileFilter$)
   FileBoxTitle_MB = findFreeMemblockSlot()
   make memblock FileBoxTitle_MB,len(FileBoxTitle$)


   OFN          = get memblock ptr(OFN_MB)
   PathBuffer   = get memblock ptr(PathBuffer_MB)
   FileFilter   = get memblock ptr(FileFilter_MB)
   FileBoxTitle = get memblock ptr(FileBoxTitle_MB)


   writeStringToMemblock(FileFilter_MB,FileFilter$)
   writeStringToMemblock(FileBoxTitle_MB,FileBoxTitle$)


   write memblock dword OFN_MB,lStructSize,StructEnd
   write memblock dword OFN_MB,hWndOwner,hWnd
   write memblock dword OFN_MB,hInstance,hMod
   write memblock dword OFN_MB,lpstrFilter,FileFilter
   write memblock dword OFN_MB,lpstrFile,PathBuffer
   write memblock dword OFN_MB,nMaxFile,PathBufferSize
   write memblock dword OFN_MB,Flags,FileBoxFlags
   write memblock dword OFN_MB,lpstrTitle,FileBoxTitle


   if mode$="save"
      call dll comdlg32,"GetSaveFileNameA",OFN
   else
      call dll comdlg32,"GetOpenFileNameA",OFN
   endif
   result$ = readStringFromMemblock(PathBuffer_MB)


   delete memblock OFN_MB
   delete memblock PathBuffer_MB
   delete memblock FileFilter_MB
   delete memblock FileBoxTitle_MB


   delete dll user32
   delete dll kernel32
   delete dll comdlg32

endfunction result$

function writeStringToMemblock(numMemblock,text$)
   for pos=1 to len(text$)
      b=asc(mid$(text$,pos))
         if b=asc("^") then b=0
      write memblock byte numMemblock,pos-1,b
   next pos
endfunction


function readStringFromMemblock(numMemblock)
   pos=0:text$=""
   do
   b=memblock byte(numMemblock,pos)
      if b=0 then exit
   text$=text$+chr$(b)
   inc pos
   loop
endfunction text$


function findFreeMemblockSlot()
   found=0:numMemblock=1
   repeat
         if memblock exist(numMemblock)=0 then exitfunction numMemblock
      inc numMemblock
   until numMemblock=256
endfunction 0

function findFreeDllSlot()
   found=0:numDLL=1
   repeat
         if dll exist(numDLL)=0 then exitfunction numDLL
      inc numDLL
   until numDLL=256
endfunction 0


sauvegarder fichier :
Code :
box 100,100,200,200,RGB(255,0,0),RGB(255,0,0),RGB(255,0,0),RGB(255,0,0)
get image 1,100,100,200,200
save image getFileName("save","enregistrer une image","Image BMP, GIF ou JPG","*.bmp;*.gif;*.jpg"),1
do
loop
function getFileName(mode$,FileBoxTitle$,ShownFileFilter$,RealFileFilter$)
   FileBoxTitle$ = FileBoxTitle$+"^"
   FileFilter$ = ShownFileFilter$+"^"+RealFileFilter$+"^^"


   user32=findFreeDllSlot()
   load dll "user32.dll",user32
   kernel32=findFreeDllSlot()
   load dll "kernel32.dll",kernel32
   comdlg32=findFreeDllSlot()
   load dll "comdlg32.dll",comdlg32

   lStructSize       = 0
   hwndOwner         = 4
   hInstance         = 8
   lpstrFilter       = 12
   lpstrCustomFilter = 16
   nMaxCustFilter    = 20
   nFilterIndex      = 24
   lpstrFile         = 28
   nMaxFile          = 32
   lpstrFileTitle    = 36
   nMaxFileTitle     = 40
   lpstrInitialDir   = 44
   lpstrTitle        = 48
   Flags             = 52
   nFileOffset       = 56
   nFileExtension    = 58
   lpstrDefExt       = 60
   lCustData         = 64
   lpfnHook          = 68
   lpTemplateName    = 72
   StructEnd         = 76


   OFN_ALLOWMULTISELECT       = 512:rem 0x00000200
   OFN_CREATEPROMPT           = 8192:rem 0x00002000
   OFN_ENABLEHOOK             = 32:rem 0x00000020
   OFN_ENABLETEMPLATE         = 64:rem 0x00000040
   OFN_ENABLETEMPLATEHANDLE   = 128:rem 0x00000080
   OFN_EXPLORER               = 524288:rem 0x00080000
   OFN_EXTENSIONDIFFERENT     = 1024:rem 0x00000400
   OFN_FILEMUSTEXIST          = 4096:rem 0x00001000
   OFN_HIDEREADONLY           = 4:rem 0x00000004
   OFN_LONGNAMES              = 2097152:rem 0x00200000
   OFN_NOCHANGEDIR            = 8:rem 0x00000008
   OFN_NODEREFERENCELINKS     = 1048576:rem 0x00100000
   OFN_NOLONGNAMES            = 262144:rem 0x00040000
   OFN_NONETWORKBUTTON        = 131072:rem 0x00020000
   OFN_NOREADONLYRETURN       = 32768:rem 0x00008000
   OFN_NOTESTFILECREATE       = 65536:rem 0x00010000
   OFN_NOVALIDATE             = 256:rem 0x00000100
   OFN_OVERWRITEPROMPT        = 2:rem 0x00000002
   OFN_PATHMUSTEXIST          = 2048:rem 0x00000800
   OFN_READONLY               = 1:rem 0x00000001
   OFN_SHAREAWARE             = 16384:rem 0x00004000
   OFN_SHOWHELP               = 16:rem 0x00000010


   FileBoxFlags   = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST + OFN_LONGNAMES + OFN_HIDEREADONLY + OFN_NONETWORKBUTTON
   PathBufferSize = 256
   hWnd           = call dll(user32,"GetActiveWindow")
   hMod           = call dll(kernel32,"GetModuleHandleA",0)


   OFN_MB          = findFreeMemblockSlot()
   make memblock OFN_MB,StructEnd
   PathBuffer_MB   = findFreeMemblockSlot()
   make memblock PathBuffer_MB,PathBufferSize
   FileFilter_MB   = findFreeMemblockSlot()
   make memblock FileFilter_MB,len(FileFilter$)
   FileBoxTitle_MB = findFreeMemblockSlot()
   make memblock FileBoxTitle_MB,len(FileBoxTitle$)


   OFN          = get memblock ptr(OFN_MB)
   PathBuffer   = get memblock ptr(PathBuffer_MB)
   FileFilter   = get memblock ptr(FileFilter_MB)
   FileBoxTitle = get memblock ptr(FileBoxTitle_MB)


   writeStringToMemblock(FileFilter_MB,FileFilter$)
   writeStringToMemblock(FileBoxTitle_MB,FileBoxTitle$)


   write memblock dword OFN_MB,lStructSize,StructEnd
   write memblock dword OFN_MB,hWndOwner,hWnd
   write memblock dword OFN_MB,hInstance,hMod
   write memblock dword OFN_MB,lpstrFilter,FileFilter
   write memblock dword OFN_MB,lpstrFile,PathBuffer
   write memblock dword OFN_MB,nMaxFile,PathBufferSize
   write memblock dword OFN_MB,Flags,FileBoxFlags
   write memblock dword OFN_MB,lpstrTitle,FileBoxTitle


   if mode$="save"
      call dll comdlg32,"GetSaveFileNameA",OFN
   else
      call dll comdlg32,"GetOpenFileNameA",OFN
   endif
   result$ = readStringFromMemblock(PathBuffer_MB)


   delete memblock OFN_MB
   delete memblock PathBuffer_MB
   delete memblock FileFilter_MB
   delete memblock FileBoxTitle_MB


   delete dll user32
   delete dll kernel32
   delete dll comdlg32

endfunction result$

function writeStringToMemblock(numMemblock,text$)
   for pos=1 to len(text$)
      b=asc(mid$(text$,pos))
         if b=asc("^") then b=0
      write memblock byte numMemblock,pos-1,b
   next pos
endfunction


function readStringFromMemblock(numMemblock)
   pos=0:text$=""
   do
   b=memblock byte(numMemblock,pos)
      if b=0 then exit
   text$=text$+chr$(b)
   inc pos
   loop
endfunction text$


function findFreeMemblockSlot()
   found=0:numMemblock=1
   repeat
         if memblock exist(numMemblock)=0 then exitfunction numMemblock
      inc numMemblock
   until numMemblock=256
endfunction 0

function findFreeDllSlot()
   found=0:numDLL=1
   repeat
         if dll exist(numDLL)=0 then exitfunction numDLL
      inc numDLL
   until numDLL=256
endfunction 0


barre d'outil :
Code :
SYNC ON
SET WINDOW ON

Type Point_t
   x as integer
   y as integer
EndType

Type Msg_t
   hwnd as dword
   msg as dword
   wparam as dword
   lparam as dword
   time as dword
   pt as Point_t
EndType

msgPtr = make memory ( 28 )
msg as Msg_T
hwnd as dword


#Constant WM_MOUSEFIRST                   512
#Constant WM_MOUSEMOVE                    512
#Constant WM_LBUTTONDOWN                  513
#Constant WM_LBUTTONUP                    514
#Constant WM_LBUTTONDBLCLK                515
#Constant WM_RBUTTONDOWN                  516
#Constant WM_RBUTTONUP                    517
#Constant WM_RBUTTONDBLCLK                518
#Constant WM_MBUTTONDOWN                  519
#Constant WM_MBUTTONUP                    520
#Constant WM_MBUTTONDBLCLK                521
#Constant WM_MOUSEWHEEL                   32
#Constant WM_MOUSELAST                    522


#CONSTANT MF_BYCOMMAND        0
#CONSTANT MF_BYPOSITION       1024
#CONSTANT MF_SEPARATOR        2048
#CONSTANT MF_ENABLED          0
#CONSTANT MF_GRAYED           1
#CONSTANT MF_DISABLED         2
#CONSTANT MF_UNCHECKED        0
#CONSTANT MF_CHECKED          8
#CONSTANT MF_USECHECKBITMAPS  512
#CONSTANT MF_STRING           0
#CONSTANT MF_BITMAP           4
#CONSTANT MF_OWNERDRAW        256
#CONSTANT MF_POPUP            16
#CONSTANT MF_MENUBARBREAK     32
#CONSTANT MF_MENUBREAK        64
#CONSTANT MF_UNHILITE         0
#CONSTANT MF_HILITE           128


#CONSTANT TPM_LEFTBUTTON  0
#CONSTANT TPM_RIGHTBUTTON 2
#CONSTANT TPM_LEFTALIGN   0
#CONSTANT TPM_CENTERALIGN 4
#CONSTANT TPM_RIGHTALIGN  8
#CONSTANT TPM_RECURSE     1
#CONSTANT TPM_HORPOSANIMATION 1024
#CONSTANT TPM_HORNEGANIMATION 2048
#CONSTANT TPM_VERPOSANIMATION 4096
#CONSTANT TPM_VERNEGANIMATION 8192

#CONSTANT TPM_TOPALIGN        0
#CONSTANT TPM_VCENTERALIGN    16
#CONSTANT TPM_BOTTOMALIGN     32
#CONSTANT TPM_HORIZONTAL      0
#CONSTANT TPM_VERTICAL        64
#CONSTANT TPM_NONOTIFY        128
#CONSTANT TPM_RETURNCMD       256

#CONSTANT MENU_ADJUSTMENT_X 4
#CONSTANT MENU_ADJUSTMENT_Y 27


LOAD DLL "user32.dll",1
hWnd = CALL DLL(1,"GetActiveWindow")



#CONSTANT FILE_OPEN 11
#CONSTANT FILE_SAVE 12
#CONSTANT FILE_RECENT_DOCUMENTS 13
#CONSTANT FILE_DOCUMENT_1 14
#CONSTANT FILE_DOCUMENT_2 15
#CONSTANT FILE_DOCUMENT_3 16
#CONSTANT FILE_QUIT 17
#CONSTANT EDIT 20
#CONSTANT EDIT_CUT 21
#CONSTANT EDIT_COPY 22
#CONSTANT EDIT_PASTE 23
#CONSTANT HELP 30
#CONSTANT HELP_ABOUT 31
#CONSTANT OPTION_CUT 40
#CONSTANT OPTION_COPY 41
#CONSTANT OPTION_PASTE 42
#CONSTANT OPTION_SELECTALL 43
#CONSTANT OPTION_UNDO 44
#CONSTANT OPTION_REDO 45
#CONSTANT OPTION_CHECKED 46


hMenuFilePopup = CALL DLL(1,"CreatePopupMenu" )
hMenuTempPopup = CALL DLL(1,"CreatePopupMenu" )
CALL DLL 1,"AppendMenuA",hMenuFilePopup,MF_ENABLED,FILE_OPEN,"&Ouvrir..."
CALL DLL 1,"AppendMenuA",hMenuFilePopup,MF_GRAYED,FILE_SAVE,"&Enregistrer"
CALL DLL 1,"AppendMenuA",hMenuFilePopup,MF_SEPARATOR,0,""
CALL DLL 1,"AppendMenuA",hMenuTempPopup,MF_ENABLED,FILE_DOCUMENT_1,"&Document 1"
CALL DLL 1,"AppendMenuA",hMenuTempPopup,MF_GRAYED,FILE_DOCUMENT_2,"&Document 2"
CALL DLL 1,"AppendMenuA",hMenuTempPopup,MF_ENABLED,FILE_DOCUMENT_3,"&Document 3"
CALL DLL 1,"AppendMenuA",hMenuFilePopup,MF_POPUP,hMenuTempPopup,"&Recent Documents"
CALL DLL 1,"AppendMenuA",hMenuFilePopup,MF_SEPARATOR,0,""
CALL DLL 1,"AppendMenuA",hMenuFilePopup,MF_ENABLED,FILE_QUIT,"&Quitter"


CALL DLL 1,"CheckMenuRadioItem",hMenuTempPopup,FILE_DOCUMENT_1,FILE_DOCUMENT_3,FILE_DOCUMENT_2,MF_BYCOMMAND


hMenuEditPopup = CALL DLL(1,"CreatePopupMenu" )
CALL DLL 1,"AppendMenuA",hMenuEditPopup,MF_ENABLED,EDIT_CUT,"&Couper"
CALL DLL 1,"AppendMenuA",hMenuEditPopup,MF_ENABLED,EDIT_COPY,"&Copier"
CALL DLL 1,"AppendMenuA",hMenuEditPopup,MF_ENABLED OR MF_GRAYED,EDIT_PASTE,"&coller"


hMenuHelpPopup = CALL DLL(1,"CreatePopupMenu" )
CALL DLL 1,"AppendMenuA",hMenuHelpPopup,MF_ENABLED,HELP_ABOUT,"&About"


hOptionsPopup = CALL DLL(1,"CreatePopupMenu" )
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_ENABLED,OPTION_CUT,"&Couper"
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_ENABLED,OPTION_COPY,"&Copier"
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_ENABLED OR MF_GRAYED,OPTION_PASTE,"&Coller"
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_ENABLED,OPTION_PASTE,"&Selectionner tout"
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_SEPARATOR,0,""
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_ENABLED,OPTION_UNDO,"&Annuler"
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_GRAYED,OPTION_REDO,"&Repeter"
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_SEPARATOR,0,""
CALL DLL 1,"AppendMenuA",hOptionsPopup,MF_ENABLED,OPTION_CHECKED,"&Checked"


CALL DLL 1,"CheckMenuItem",hOptionsPopup,OPTION_CHECKED, MF_BYCOMMAND OR MF_CHECKED


hMenu = CALL DLL(1,"CreateMenu" )
CALL DLL 1,"AppendMenuA",hMenu, MF_STRING, FILE, "&Fichier"
CALL DLL 1,"AppendMenuA",hMenu, MF_STRING, EDIT, "&Edition"
CALL DLL 1,"AppendMenuA",hMenu, MF_STRING, HELP, "&Aide"
CALL DLL 1,"SetMenu",hWnd,hMenu

SET TEXT SIZE 20
MAKE MEMBLOCK 1,16
MAKE MEMBLOCK 2,8

While Call DLL(1, "GetMessageA", msgPtr, hwnd, 0, 0)

    CLS RGB(110,110,110)

    tempPtr = msgPtr
    msg.hwnd = *tempPtr
    inc tempPtr,4
    msg.msg = *tempPtr
    inc tempPtr,4
    msg.wparam =*tempPtr
    inc tempPtr,4
    msg.lparam =*tempPtr
    inc tempPtr,4
    msg.time = *tempPtr
    inc tempPtr,4
    msg.pt.x = *tempPtr
    inc tempPtr,4
    msg.pt.y = *tempPtr

    CALL DLL 1,"GetWindowRect",hWnd,GET MEMBLOCK PTR(1)
    menuStartX = MEMBLOCK WORD(1,0) + MENU_ADJUSTMENT_X
    menuStartY = MEMBLOCK WORD(1,4) + MENU_ADJUSTMENT_Y
    CALL DLL 1,"GetCursorPos",GET MEMBLOCK PTR(2)
    cursorX = MEMBLOCK WORD(2,0)
    cursorY = MEMBLOCK WORD(2,4)


    if cursorY > menuStartY AND cursorY < menuStartY + 22

        if ( cursorX > menuStartX ) AND ( cursorX < menuStartX + 53 ) AND Msg.msg = 161
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,FILE, MF_BYCOMMAND OR MF_HILITE
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,EDIT, MF_BYCOMMAND OR MF_UNHILITE
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,HELP, MF_BYCOMMAND OR MF_UNHILITE
            menuId=CALL DLL(1,"TrackPopupMenu",hMenuFilePopup,TPM_VERPOSANIMATION OR TPM_RETURNCMD,menuStartX,menuStartY + 22,0,hwnd,0)
        endif

        if ( cursorX > menuStartX + 53 ) AND ( cursorX < menuStartX + 103 ) AND Msg.msg = 161
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,EDIT, MF_BYCOMMAND OR MF_HILITE
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,FILE, MF_BYCOMMAND OR MF_UNHILITE
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,HELP, MF_BYCOMMAND OR MF_UNHILITE
            menuId=CALL DLL(1,"TrackPopupMenu",hMenuEditPopup,TPM_VERPOSANIMATION OR TPM_RETURNCMD,menuStartX + 28,menuStartY + 22 ,0,hwnd,0)
        endif

        if ( cursorX > menuStartX + 103 ) AND ( cursorX < menuStartX + 141 ) AND Msg.msg = 161
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,HELP, MF_BYCOMMAND OR MF_HILITE
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,FILE, MF_BYCOMMAND OR MF_UNHILITE
            CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,EDIT, MF_BYCOMMAND OR MF_UNHILITE
            menuId=CALL DLL(1,"TrackPopupMenu",hMenuHelpPopup,TPM_VERPOSANIMATION OR TPM_RETURNCMD,menuStartX + 58,menuStartY + 22,0,hwnd,0)
        endif
    endif


    if MOUSECLICK() > 0
        CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,FILE, MF_BYCOMMAND OR MF_UNHILITE
        CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,EDIT, MF_BYCOMMAND OR MF_UNHILITE
        CALL DLL 1,"HiliteMenuItem",hWnd,hMenu,HELP, MF_BYCOMMAND OR MF_UNHILITE
    endif


    if MOUSECLICK()=2 AND cursorY > 321
        menuId=CALL DLL(1,"TrackPopupMenu",hOptionsPopup,TPM_VERPOSANIMATION OR TPM_RETURNCMD,cursorX,cursorY,0,hwnd,0)
    endif


    if menuId = FILE_DOCUMENT_1
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_1, MF_BYCOMMAND OR MF_GRAYED
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_2, MF_BYCOMMAND OR MF_ENABLED
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_3, MF_BYCOMMAND OR MF_ENABLED
        CALL DLL 1,"CheckMenuRadioItem",hMenuTempPopup,FILE_DOCUMENT_1,FILE_DOCUMENT_3,FILE_DOCUMENT_1,MF_BYCOMMAND
    endif
    if menuId = FILE_DOCUMENT_2
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_2, MF_BYCOMMAND OR MF_GRAYED
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_1, MF_BYCOMMAND OR MF_ENABLED
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_3, MF_BYCOMMAND OR MF_ENABLED
        CALL DLL 1,"CheckMenuRadioItem",hMenuTempPopup,FILE_DOCUMENT_1,FILE_DOCUMENT_3,FILE_DOCUMENT_2,MF_BYCOMMAND
    endif
    if menuId = FILE_DOCUMENT_3
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_3, MF_BYCOMMAND OR MF_GRAYED
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_1, MF_BYCOMMAND OR MF_ENABLED
        CALL DLL 1,"EnableMenuItem",hMenuFilePopup,FILE_DOCUMENT_2, MF_BYCOMMAND OR MF_ENABLED
        CALL DLL 1,"CheckMenuRadioItem",hMenuTempPopup,FILE_DOCUMENT_1,FILE_DOCUMENT_3,FILE_DOCUMENT_3,MF_BYCOMMAND
    endif
    if menuId = FILE_QUIT
        EXIT
    endif


    TEXT 0,SCREEN HEIGHT()-20,"Mouse("+STR$( MOUSEX() ) + "," + STR$( MOUSEY() ) + ") Cursor(" + STR$( cursorX ) + "," + STR$( cursorY ) + ") MenuSelectedId = " + STR$( menuId )
    SYNC

    Call DLL 1, "TranslateMessage", msgPtr
    Call DLL 1, "DispatchMessageA", msgPtr
    If Spacekey() = 1 Then Exit
EndWhile

CALL DLL 1,"DestroyMenu",hMenu
CALL DLL 1,"DestroyMenu",hOptionsPopup
DELETE DLL 1
DELETE MEMBLOCK 1
DELETE MEMBLOCK 2


message :
Code :
Load DLL "user32.dll",1
hwnd = call dll(1,"GetActiveWindow")

quitter=call dll(1,"MessageBoxA",hwnd,"Etes vous sur de quitter ?","Quitter",1)

Do
if quitter=1 then end
Loop
Dernière édition le 18 Juil 2009 à 18:36
Devil'sCry Message lu Posté le 18 Juil 2009 à 16:54 Bulle
Avatar de Devil'sCry
Explorateur

Messages : 136
GCPoints : 47714
Il y a une petite erreur dans ton code dans charger un fichier :


Citation :

load image getFileName("load","ouvrer une image","Image BMP, GIF ou JPG",".*bmp;*.gif;*.jpg"),1



le * doit se trouver avant le point, sinon ça donne un truc relatif sous la forme : .NIMPORTEQUOIbmp

Donc voilà, petite erreur d'inatention je pense :)


Citation :

load image getFileName("load","ouvrer une image","Image BMP, GIF ou JPG","*.bmp;*.gif;*.jpg"),1

We are falling, The light is calling, Black night, Dark sky, The Devil's Cry.
corwin Message lu Posté le 18 Juil 2009 à 17:08 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Merci l'erreur a été rectifié ;)
MageNoir Message lu Posté le 18 Juil 2009 à 18:33 Bulle
Avatar de MageNoir
Membre Avancé

Messages : 724
GCPoints : 16803
Très sympatoche ca, le clique droit!



Merci, je pense m'en inspirer pour mon editeur de map :)
*=*=* M@G€NO!R *=*=*
corwin Message lu Posté le 18 Juil 2009 à 19:53 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
J'ai bien envi de voir comment ton éditeur peut ressembler :)
Mod Message lu Posté le 18 Juil 2009 à 22:55 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Code extrêmement riche, et surtout une sacrée ressource pour les débutants.

J'y suis aussi passé, et diantre que cela semblait compliqué de créer une application à coup d'API win32 avec DBPro. Un bon coup de main pour qui souhaiterait se passer de BlueGUI et plugins payants similaires :).
Pekele Message lu Posté le 19 Juil 2009 à 00:29 Bulle
Membre Novice

Messages : 42
GCPoints : 14425
MDR ....

quand je vois ça ....
je me demande ou je me suis lancé ? .....:/

faire un éditeur de map :) .....qui sortira dans 10 ans .....si je craque pas avant !!!

mais que ça doit être bon de savoir programmer comme ça :)

bravo
MageNoir Message lu Posté le 19 Juil 2009 à 01:05 Bulle
Avatar de MageNoir
Membre Avancé

Messages : 724
GCPoints : 16803
Tu verras que quand tu seras un peu plus avancé, le code se lit très facilement en fait.
*=*=* M@G€NO!R *=*=*
Mod Message lu Posté le 19 Juil 2009 à 10:23 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Pas d'inquiétudes à avoir ^^. C'est un code DarkBasic d'un niveau déjà bien avancé associé à une librairie de création de fenêtres, menus, etc, réputée très complexe. Donc te lançant à peine dedans, c'est normal que ça paraisse impressionnant.
Mais l'avantage du DarkBasic, c'est qu'on peut atteindre assez rapidement un bon niveau avec un peu de pratique... Je ne doute pas que tu sois capable de lire ça de façon fluide dans quelques temps ;).
Darktib Message lu Posté le 19 Juil 2009 à 10:44 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Ah, les fameux codes d'utilisation de l'API Win32 avec dbp^^
Très bon code en tout cas.

@Pekele : Ca a l'air compliqué parce qu'on utilise des fonctions apparemment non documentées et l'utilisation de dll fait très 'bas niveau'. Un petit tour sur l'excellent msdn livre toute la doc de l'api win32 (en C++, mais c'est très facile à adapter au dbp, vu que le dbp est une sorte de 'surcouche' C++).
Il existe deux librairies pour manier cette API (du moins le niveau graphique) en dbp : WinGUI et BlueGUI.
Sinon il y a une liste non exhaustive des plugins ici : http://forum.thegamecreators.com/?m=forum_view&t=92836&b=5


Tout ca me rappelle math89 qui disait que les choses très complexes étaient plus dures en dbp qu'en C++.
Dernière édition le 19 Juil 2009 à 10:44
corwin Message lu Posté le 19 Juil 2009 à 11:09 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Moi j'ai BlueGUI mais je fait sa pour que tout le monde puisse tester sans avoir à payer un quelconque plugins payant et sans avoir à télécharger des médias :) Sa n'empêche que BlueGUI est très intéressant, BlueGUI peut faire tout se que je donne est 3 lignes. Mais ses sur que ses dur dur de ne pas être tenter d'utiliser un plugins pareil.
Pekele Message lu Posté le 19 Juil 2009 à 13:59 Bulle
Membre Novice

Messages : 42
GCPoints : 14425
il faut dire que je me prend tout ça dans la tête en quelques jours ....
des tones de lignes de codes en ptit chinois , la 3d, les bitmap...

tout ça en essayant de comprendre quelque chose, comment faire fonctionner l'ensemble !
adapter quelques lignes qui fonctionnent sur un projet, et impossible de l'adapter sur le mien....
vraiment pas simple...

le but tout de même,
NE PAS ME DECOURAGER !!!
patience, patience ...
corwin Message lu Posté le 19 Juil 2009 à 14:11 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647
Tu sait le premier programme que j'ai fait en dbpro c'était un questionnaire bourré de "input" :)
MageNoir Message lu Posté le 19 Juil 2009 à 14:44 Bulle
Avatar de MageNoir
Membre Avancé

Messages : 724
GCPoints : 16803

corwin a écrit :

Tu sait le premier programme que j'ai fait en dbpro c'était un questionnaire bourré de "input" :)





Pareil ^^
*=*=* M@G€NO!R *=*=*
Devil'sCry Message lu Posté le 19 Juil 2009 à 15:02 Bulle
Avatar de Devil'sCry
Explorateur

Messages : 136
GCPoints : 47714

Citation :

le but tout de même,
NE PAS ME DECOURAGER !!!
patience, patience ...


Si ton projet n'est pas professionnel, alors le véritable but est de s'amuser à programmer. Si tu te décourage, alors fais "pause" à ton projet, et essais de faire par toi même des petits scripts, petit à petit tu vas t'améliorer, tu va pouvoir comprendre chaque lignes, et à partir d'un moment, en même temps que tu programmera ou que tu regardera le programme d'un autre, tu verra dans ta tête ce que le script fait en temps réel, et à partir de là, tu commencera à faire de bons programmes et plus rapidement. Tu t'amusera plus. Puis quand tu sera à ce stade là, tu irra reregarder tes anciens scripts, et tu te dira, mais c'est mal fait (alors que t'en était super fière avant), et tu te dira qu'il y a bien plus simple et efficace de faire ce que tu avais fais. Après, ton projet sera un jeu d'enfant, surtout avec Dark Basic.

Et surtout un conseil très important :
Ne fais jamais comme Corwin, ne prend jamais de programmes ailleurs sans les avoirs entièrement compris, savoir ce que chaque ligne de ces codes font, avant de les integrer à tes scripts à toi. Sinon tu va te perdre et tu n'apprendra rien.
Corwin arrive au bout d'un moment à integrer les scripts qu'il prend par-ci par-là, mais il ne les comprend pas toujours entièrement et quand il me demande de l'aide, c'est souvant de là que par le problème. Autrement, il s'en sort pas trop mal.

Bon courage pour la suite Pekele, et si besoin d'aide, tu sais où nous trouver :)
We are falling, The light is calling, Black night, Dark sky, The Devil's Cry.
corwin Message lu Posté le 19 Juil 2009 à 15:15 Bulle
Avatar de corwin
Membre Confirmé

Messages : 459
GCPoints : 63647

Citation :

Ne fais jamais comme Corwin


Mes conseils sont quand même utile. xD

Autrement tout a fait d'accord avec toi.


Citation :

quand il me demande de l'aide



A l'aide Devil'sCry, a l'aide !!! xD
Dernière édition le 19 Juil 2009 à 15:23
Devil'sCry Message lu Posté le 19 Juil 2009 à 15:23 Bulle
Avatar de Devil'sCry
Explorateur

Messages : 136
GCPoints : 47714

Citation :

Mes conseils sont quand même utile. xD


Je dis pas le contraire, tes conseil sont bon a prendre.
We are falling, The light is calling, Black night, Dark sky, The Devil's Cry.
Pekele Message lu Posté le 20 Juil 2009 à 00:30 Bulle
Membre Novice

Messages : 42
GCPoints : 14425
mon projet n'est en aucuns cas pro ...
je pense être entre de bonnes mains aussi :)

je vous remercie d'être sympa comme ça, car ce n'est pas le cas de partout !!!

mon soucis c'est de ne rien trouver de concret sur des tutos de bases...
j'ai imprimé tous les tutos de 3DGC en français que j'avais ....
j'ai bien appris, mais il n'y a que très peu de choses au bout du compte...
le peu que je fais , je le comprend bien ...
mais le reste je ne le trouve pas ...comprend pas ... sais pas ...

je me suis donné comme objectif de faire un jeu de voiture en 3D ...
je ferais ce que je peux, mais au moins je sais ce que je veux ,
ce que je dois apprendre et ce que je doit faire ...

je fais mes matrices avec texture, mes objets, les placements, les déplacements, le brouillard etc etc etc ...
je m'améliorerais avec le temps pour arranger ça au mieux,
mais le ciel par exemple ....ben, je ne sais pas ...
ça parrait idiot de faire un ciel !!! mais quand on sais pas, c'est pas si simple !
faire un soleil ou source de lumière...
aucun tutos en parlent.
j'ai vu sur le code de Corwin comment il a fait, mais je veux le faire moi, pour bien comprendre....(et j'y arrive pas forcement)

pour l'instant je me soucis que du coté graphiques simple !
histoire de voir les choses avancer, et c'est deja bien compliqué.
je verrais les maths et la physique plus tard lol...

comment faire un menu avec des choix par exemple ....
ça m'a l'aire d'un complexe ....

peut être que mon résonement n'est pas le bon !
pour moi la 1re des chose c'est de mettre en place une situation complète...
la terre (matrice), le ciel, le soleil, les objets, et le mouvement pour avoir une base ...
une manière simple d'aborder Dark basic avec le résultat à la clé !

pour faire un soft ou éditeur,
les calculs me semblent bien plus compliqués....
alors ce sera pour plus tard.

Pekele
MageNoir Message lu Posté le 20 Juil 2009 à 01:38 Bulle
Avatar de MageNoir
Membre Avancé

Messages : 724
GCPoints : 16803
Le ciel, bah, désolé de dire ca, mais... c'est tout con x]

C'est un groooooooooooooooooooooooos cube, ou une grooooooooooosssssseeeeeeeeeeee sphère.
Avec une texture de ciel !


EDIT:

Attend je te bidouille un truc.
Dernière édition le 20 Juil 2009 à 01:39
*=*=* M@G€NO!R *=*=*
Pekele Message lu Posté le 20 Juil 2009 à 02:17 Bulle
Membre Novice

Messages : 42
GCPoints : 14425
je viens de passer la soirée sur mon canapé avec dans mes mains le livre en Français de 3D game créator , le 1er du nom :)

effectivement je comprend mieux certaines choses ....
les relationnels , les Booléens et pleins de fonctions de base !

en fait j'ai une mine d'or sous les yeux !!!
faut juste essayer de retenir tout ça !!!
et comprend ou essayer de faire un ciel par exemple :p lol

backdrop on
backdrop texture 1

par contre le backdrop n'a que 2 lignes et 3 facette , donc 6 textures affichées ...

make objet sphere semble être bien ... à voir

il est vrai que sans avoir appris les bases, les choses sont bien plus compliquées ...
faut que ça rentre dans ma tite tête :p
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0623 secondes