Page 1 sur 2

1.Bonjour! et 2. Probleme avec Menu (ButtonImageGadget)

Publié : mar. 06/nov./2007 2:20
par allas
Bonjour, sa fait quelque temps que je surveille ce site et jai finalement decider de m'inscrire :) .

Je ne suis pas vraiment bon mais j'asseille de m'amméliorer chaque jours pour devenir meilleur...

Maintenant, le probleme :(

J'ai decider de modifier le code de l'isométrie que cpl.bator a fait pour
lui rajouter un GUI et lui rajouter des boutons en image pour le mettre plus beau.

Cependant, après plusieur essaie je n'ai finalement pas trouver la soluce que je cherchais.

Désolé dans le code qui suis j'avais pas le temps de chercher la nouvelle erreur qui ses crée. (#Sprite object cannot be ....)

Si vous pouvez me l'arranger, je tourne en rond depuis au moins 2 jours.
(pas le sprite , les Buttons)

Dite moi qu'est-ce qu'il ne va pas dans le code que voici:

En .rar

http://www.rarhost.com/download-zgwojk.html

PS: Voila pour les erreur :D

Publié : mar. 06/nov./2007 7:01
par Anonyme2
Si tu veux que des codeurs fassent des efforts pour t'aider, commences par faire des efforts pour écrire en français et pas en charabia.


C'est valable pour d'autres, j'ai vu plusieurs posts ou j'ai eu du mal à comprendre la question, alors pour donner une réponse... pas envie de faire d'efforts.

A+
Denis

Publié : mar. 06/nov./2007 12:43
par cederavic
J'ai strictement rien compris :lol:

Publié : mar. 06/nov./2007 13:03
par allas
lol je croit que je sais pourquoi. voila je suis un français canadien et vous de france je croit? Désolé en plus j'ai prit le temps de bien vouloir ecrire... 8O

Pour tout redire en quelque mots:

Je veut faire un menu dans l'application de la 2d isométrique que cpl.bator
qui avait fait précédement. Le menu, je veut qu'il sois fait avec des ButtonImageGadget.

Cependant, jai reussi a le faire marcher, sauf qu'il n'étais pas dans la meme fenêtre. Pourtant j'utilise le meme #WindowsID sur le menu et la 2d.

Maintenant, si vous comprenez, est qu'il y a quelqu'un qui pourrai m'aider? :lol:

Publié : mar. 06/nov./2007 14:27
par Anonyme
Bonjour allas , as tu du code à me montrer?
Si ton application est en FullScreen , oublie les Gadget.
sinon, Dans la fonction openwindowedscreen() tu peut choisir la taille de l'écran ou tu affiches les sprites. si tu veut collé des boutons , l'écran doit être plus petit que la fenetre en elle même.

@++

Publié : mar. 06/nov./2007 23:15
par allas
Le code est dans le .rar

Donc le probleme est (Meme ScreenWidth et ScreenHeight?)
  • OpenWindow(#Window_Main,0,0,ScreenWidth , ScreenHeight,"Be_War Editor",#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_SystemMenu)
    OpenWindowedScreen(WindowID(#Window_Main),0,0, ScreenWidth , ScreenHeight ,1,0,0)
Je retest et je vous en reparle :D

Publié : mar. 06/nov./2007 23:28
par comtois
Tu peux essayer un truc comme ça par exemple.

Code : Tout sélectionner

OpenWindow(#Window_Main,0,0,ScreenWidth , ScreenHeight,"Be_War Editor",#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#Window_Main),0,0, ScreenWidth-200, ScreenHeight-50,0,0,0)
Et utilise les balises Code plutôt que les balises list=

Publié : mar. 06/nov./2007 23:40
par allas
Bon j'ai tester et le debugger me dit cela:

Erreur : TilePosY = (Map(x,y)\y - SpriteHeight(Map(x,y)\Type)-#TailleTileY) - ScrollY

#Sprite object not initialized.

Pourtant je n'est pas changer cette partit du code... et InitSprite() est bien là avant ce morceau de code.

Publié : mar. 06/nov./2007 23:46
par comtois
Pour te faire la main, je te conseille de faire un nouveau projet , tout beau tout neuf, ça t'évitera de mélanger les problèmes.

Commence par construire ton interface, avec la fenêtre, l'écran , ajoute un bouton ou deux, et commence à gérer une boucle d'événements. après seulement tu pourras ajouter les parties graphiques.

Et n'oublie pas de tester les petits codes exemples qui se trouvent dans le fichier d'aide, il y a un code par commande (pour la lib Gadget).

Publié : mar. 06/nov./2007 23:50
par allas
Ok, merci pour votre aide rapide

Effectivement je vais crée un nouveau projet ; Je vais surment me rendre compte de mes erreur :D

Publié : mer. 07/nov./2007 1:10
par allas
J'ai décidé de refaire un bout de code que voici:

Code : Tout sélectionner

;/Constantes Windows
 #Window_Main = 1
;/Constantes Gadget 
Enumeration 
  #Menu
  #Menu_2
  #Reprendre
  #Minimize 
  #Maximize 
  #Close 
EndEnumeration
If InitSprite()=0 Or InitMouse()=0 Or InitKeyboard()=0
  MessageRequester("Erreur","Impossible d'initialiser DirectX")
  End
EndIf

OpenWindow(#Window_Main,0,0,800 , 600,"Be_War Editor")
OpenWindowedScreen(WindowID(#Window_Main),0,0, 800-150, 600-50,1,0,0)
TransparentSpriteColor(-1,RGB(255,0,255))
SetWindowColor(#Window_Main, (FFFFFF )) 

WindowID(#Window_Main) 

  If CreateGadgetList(WindowID(#Window_Main))
  EndIf
  If LoadImage(#Menu, "C:\Program Files\Be_War\Gfx\GUI\Menu.bmp")
    ButtonImageGadget(#Menu, 25, 20, 100, 32, ImageID(#Menu))
  EndIf 
 

  Repeat 
    Event = WaitWindowEvent() 
    If Event = #PB_Event_Gadget
      Select EventGadget() 
       
        Case #Menu
            LoadImage(#Menu_2, "C:\Program Files\Be_War\Gfx\GUI\Menu_2.bmp")
            ImageGadget(#Menu_2, 310, 140, 330, 300, ImageID(#Menu_2))
            LoadImage(#Reprendre, "C:\Program Files\Be_War\Gfx\GUI\Reprendre.bmp")
            ButtonImageGadget(#Reprendre, 360, 170, 230, 40, ImageID(#Reprendre))            
            LoadImage(#Minimize, "C:\Program Files\Be_War\Gfx\GUI\Minimizer.bmp")
            ButtonImageGadget(#Minimize, 360, 240, 230, 40, ImageID(#Minimize))
            LoadImage(#Maximize, "C:\Program Files\Be_War\Gfx\GUI\Maximizer.bmp")
            ButtonImageGadget(#Maximize, 360, 310, 230, 40, ImageID(#Maximize))
            LoadImage(#Close, "C:\Program Files\Be_War\Gfx\GUI\Close.bmp")
            ButtonImageGadget(#Close, 360, 380, 230, 40,ImageID(#Close))
            DisableGadget(#Menu_2, #True)
          Case #Reprendre
            
            FreeGadget(#Reprendre)
            FreeGadget(#Menu_2)
            FreeGadget(#Maximize)
            FreeGadget(#Minimize)
            FreeGadget(#Close) 
            
          Case #Minimize 
            ShowWindow_(WindowID(#Window_Main), #SW_MINIMIZE) 
            
          Case #Maximize 
            If IsZoomed_(WindowID(#Window_Main)) 
              ShowWindow_(WindowID(#Window_Main), #SW_RESTORE) 
            Else 
              ShowWindow_(WindowID(#Window_Main), #SW_MAXIMIZE) 
            EndIf 
            
          Case #Close 
            CloseWindow(#Window_Main)
            
            
        EndSelect 
      EndIf 
    Until Event = #PB_Event_CloseWindow 
Ils n'apparais pas constament (le bouton #Menu se cache derriere l'ecran noir et le #Menu_2 n'apparais pas toujours non plus).
Quelqu'un pourrais m'aider?

Publié : mer. 07/nov./2007 23:32
par Chris
Des gadgets dans un windowedscreen, ne t'étonnes pas si ça ne fonctionne pas.

WindowID(#Window_Main) : Cette ligne est totalement inutile. WindowId() renvoie le handle de la fenêtre. Si tu ne stockes pas cette valeur dans une variable, ça ne sert à rien.

TransparentSpriteColor(-1,RGB(255,0,255)) : Idem pour cette ligne. A quoi sert-elle, puisqu'il n'y a aucun sprite de défini.

SetWindowColor(#Window_Main, (FFFFFF )) : C'est quoi, FFFFFF? Une variable?

Bon, j'arrête là.

Faire des lignes de code, c'est bien, encore faut-il qu'il y ait une certaine cohérence entre elles.
Relis les exemples ... et essaye de les comprendre.

(Et met tes codes dans les balises "code", STP)

Publié : jeu. 08/nov./2007 14:49
par Backup
Chris a écrit :(Et met tes codes dans les balises "code", STP)
Comme Chris l'a dit

je viens d'éditer ton message pour mettre ton code entre balises , réedite le pour comprendre les balises

[ code] et [ /code]

cela permet de mettre le code dans un espace fait pour cela :D

Publié : jeu. 08/nov./2007 23:24
par allas
Aw..désolé pour le code
mais pour ces ligne:

TransparentSpriteColor(-1,RGB(255,0,255))

Celle-ci c'étais parce que i len avais... masi jai recommencer le code et jia oublier de l'enlever...masi sa ne cause aucun probleme

SetWindowColor(#Window_Main, (FFFFFF ))

et celle-ci c'étais un test que javai fait pour changer le fond de couleur

(FFFFFF )) veut dire la couleur blanc (demande moi pas pourquoi je l'ai simplement lu dans le Help file.

Des gadgets dans un windowedscreen, ne t'étonnes pas si ça ne fonctionne pas.
Alors quelqu'un peut me dire comment on fait? Il servai pour l'isométrie que je veut intergré avec le menu.

Publié : sam. 10/nov./2007 3:03
par allas
Bon je me suis avancé un peu masi la jai un problème de ReleaseMouse:

Je veut que la souris dépasse le Screen de 650x600 pour aller dans celle de 800x600 pour les gadgets. Voici le code:

Code : Tout sélectionner

;/Allas
 
;{/ Variable
  #TailleMapX  = 100
  #TailleMapY  = 100
  #TailleTileX = 64
  #TailleTileY = 32
  #MiniMapX = 11
  #MiniMapY = (800-150)+11
  #Window_Main = 0
  #LeftOffset = 150 
  #TopOffset  = 0
  ;}
  
;/ Variable Windows  
  
  Enumeration
    #Window_Tools
    #StatusBar_0
  EndEnumeration  
  
;/ Variable Images+Gadgets 
  
Enumeration 
    #Selector
    #Cursor
    #MiniMap  
    #Grass1
    #Grass2
    #Grass3
    #Grass4
    #Grass5
    #Grass6
    #Grass7
    #Grass8
    #Grass9
    #Grass10
    #Grass11
    #Grass12
    #Grass13
    #Grass14
    #Grass15
    #Grass16
    #Grass17
    #Grass18
    #Grass19
    #Grass20
    #Grass21
    #Grass22
    #Grass23
    #Grass24
    #Grass25
    #Grass26
    #Grass27
    #Grass28
    #Grass29
    #Grass30
    #Grass31
    #Grass32
    #Grass33
    #Grass34
    #Grass35
    #Grass36
    #Grass37
    #Grass38
    #Grass39
    #Grass40
    #Grass41
    #Grass42
    #Grass43
    #Grass44
    #Grass45
    #Grass46
    #Road1
    #Road2
    #Road3
    #Road4
    #Road5
    #Road6
    #Road7
    #Road8
    #Road9
    #Road10
    #Road11
    #Bloc_Petrol
    #Water_0 
    #Forest
    #Coast_0
    #Coast_1
    #Coast_2
    #Coast_3
    #Building
    #GUI_MiniMap
    #GUI_MiniMap_Aera
    #GUI_Commander
  EndEnumeration
  
;/ Variable Events
  
  Enumeration
    #Menu
    #Menu_2
    #Reprendre
    #Minimize 
    #Maximize 
    #Close 
  EndEnumeration
  
;/ Structure
  
  Structure World
    x.l
    Y.l
    type.l
  EndStructure
  
  InitSprite() 
  InitKeyboard()
  InitMouse()  
  
;{/ Declare
  Declare CreateMapIsometric(Taille_Map_X.l,Taille_Map_Y.l,TileType.l)
  Declare UpdateMap()
  Declare ControlInput()
  Declare MakeMiniMap()
  Declare UpdateMiniMap(x,Y)
  Declare Coast_Auto(x,Y)
  Declare Menu() 
  Declare Ouvre_Fenetre_principale() 
  UsePNGImageDecoder()
  Global Dim Map.World(#TailleMapX,#TailleMapY)
  ;} 

;/ Ouvres Fenetres
  
  Ouvre_Fenetre_principale()
  OpenWindowedScreen(WindowID(#Window_Main),150,0, 650, 600,1,0,0)
  TransparentSpriteColor(-1,RGB(255,0,255)) 
  
;{/ LoadImages
  
  IncludePath  "C:\Program Files\Be_War\"
  
  LoadSprite(#Selector,"Gfx\Selector.bmp")
  LoadSprite(#Cursor,"Gfx\Cursor.bmp")
  LoadSprite(#Grass1,"Gfx\Grass2\02A20.bmp")
  LoadSprite(#Grass2,"Gfx\Grass2\02A24.bmp")
  LoadSprite(#Grass3,"Gfx\Grass2\02A30.bmp")
  LoadSprite(#Grass4,"Gfx\Grass2\02A34.bmp")
  LoadSprite(#Grass5,"Gfx\Grass2\02A40.bmp")
  LoadSprite(#Grass6,"Gfx\Grass2\02A41.bmp")
  LoadSprite(#Grass7,"Gfx\Grass2\02A42.bmp")
  LoadSprite(#Grass8,"Gfx\Grass2\02A43.bmp")
  LoadSprite(#Grass9,"Gfx\Grass2\02A44.bmp")
  LoadSprite(#Grass10,"Gfx\Grass2\02b20.bmp")
  LoadSprite(#Grass11,"Gfx\Grass2\02b24.bmp")
  LoadSprite(#Grass12,"Gfx\Grass2\02b30.bmp")
  LoadSprite(#Grass13,"Gfx\Grass2\02b34.bmp")
  LoadSprite(#Grass14,"Gfx\Grass2\02b40.bmp")
  LoadSprite(#Grass15,"Gfx\Grass2\02b41.bmp")
  LoadSprite(#Grass16,"Gfx\Grass2\02b42.bmp")
  LoadSprite(#Grass17,"Gfx\Grass2\02b43.bmp")
  LoadSprite(#Grass18,"Gfx\Grass2\02b44.bmp")
  LoadSprite(#Grass19,"Gfx\Grass2\03A20.bmp")
  LoadSprite(#Grass19,"Gfx\Grass2\03A30.bmp")
  LoadSprite(#Grass20,"Gfx\Grass2\03A40.bmp")
  LoadSprite(#Grass21,"Gfx\Grass2\03A41.bmp")
  LoadSprite(#Grass22,"Gfx\Grass2\03A42.bmp")
  LoadSprite(#Grass23,"Gfx\Grass2\03b20.bmp")
  LoadSprite(#Grass24,"Gfx\Grass2\03b24.bmp")
  LoadSprite(#Grass25,"Gfx\Grass2\03b30.bmp")
  LoadSprite(#Grass26,"Gfx\Grass2\03b34.bmp")
  LoadSprite(#Grass27,"Gfx\Grass2\03b40.bmp")
  LoadSprite(#Grass28,"Gfx\Grass2\03b41.bmp")
  LoadSprite(#Grass29,"Gfx\Grass2\03b42.bmp")
  LoadSprite(#Grass30,"Gfx\Grass2\03b43.bmp")
  LoadSprite(#Grass31,"Gfx\Grass2\04a20.bmp")
  LoadSprite(#Grass32,"Gfx\Grass2\04a30.bmp")
  LoadSprite(#Grass33,"Gfx\Grass2\04a40.bmp")
  LoadSprite(#Grass34,"Gfx\Grass2\04a41.bmp")
  LoadSprite(#Grass35,"Gfx\Grass2\04a42.bmp")
  LoadSprite(#Grass37,"Gfx\Grass2\04b30.bmp")
  LoadSprite(#Grass38,"Gfx\Grass2\04b40.bmp")
  LoadSprite(#Grass39,"Gfx\Grass2\04b41.bmp")
  LoadSprite(#Grass40,"Gfx\Grass2\04b42.bmp")
  LoadSprite(#Grass41,"Gfx\Grass2\14a20.bmp")
  LoadSprite(#Grass42,"Gfx\Grass2\14a30.bmp")
  LoadSprite(#Grass43,"Gfx\Grass2\14a40.bmp")
  LoadSprite(#Grass44,"Gfx\Grass2\14a41.bmp")
  LoadSprite(#Grass45,"Gfx\Grass2\14a42.bmp")
  LoadSprite(#Grass46,"Gfx\Test\02A20.bmp")
  LoadSprite(#Bloc_Petrol,"Gfx\Petrol.bmp")
  LoadSprite(#Building,"Gfx\Building.bmp")
  LoadSprite(#Road1,"Gfx\Road1.bmp")
  LoadSprite(#Road2,"Gfx\Road2.bmp")
  LoadSprite(#Road3,"Gfx\Road3.bmp")
  LoadSprite(#Road4,"Gfx\Road4.bmp")
  LoadSprite(#Road5,"Gfx\Road5.bmp")
  LoadSprite(#Road6,"Gfx\Road6.bmp")
  LoadSprite(#Road7,"Gfx\Road7.bmp")
  LoadSprite(#Road8,"Gfx\Road8.bmp")
  LoadSprite(#Road9,"Gfx\Road9.bmp")
  LoadSprite(#Road10,"Gfx\Road10.bmp")
  LoadSprite(#Road11,"Gfx\Road11.bmp")
  LoadSprite(#Coast_0,"Gfx\Coast_0.png")
  LoadSprite(#Coast_1,"Gfx\Coast_1.png")
  LoadSprite(#Coast_2,"Gfx\Coast_2.png")
  LoadSprite(#Coast_3,"Gfx\Coast_3.png")
  LoadSprite(#Water_0,"Gfx\Water_0.png") 
  LoadSprite(#Forest,"Gfx\Forest1.bmp")
  LoadSprite(#GUI_MiniMap,"Gfx\GUI\Minimap_Support.bmp")
  LoadSprite(#GUI_Commander,"Gfx\Gui\Command.bmp")
  ;}
  
;{/ Global
Global ScreenWidth.l  : ScreenWidth  = 800
Global ScreenHeight.l : ScreenHeight = 600
Global ScrollX.l , ScrollY.l
Global EchX.f,EchY.f,PixelX.l,PixelY.l,color.l,Update_MiniMap.l
Global MMAeraX.l
Global MMAeraY.l
Global type.l,Taille.l : Taille=2
;}

Procedure Ouvre_Fenetre_principale() 
  If OpenWindow ( #Window_Main , ScreenWidth, ScreenHeight, 800, 600, "Be_War Editor" ,#PB_Window_SizeGadget | #PB_Window_SystemMenu) 
    If CreateGadgetList ( WindowID ( #Window_Main )) 
      ;/ Boutons
      LoadImage(#Menu,"Gfx\Gui\Menu.bmp")
      ButtonImageGadget(#Menu, 25, 20, 100, 32, ImageID(#Menu))
      EndIf 
    EndIf 
  EndProcedure
Procedure Menu()
  
  Repeat 
    Event = WaitWindowEvent () 
    If Event = #PB_Event_Gadget 
      Select EventGadget ()  

        Case #Menu
        Case #Menu
          LoadImage(#Menu_2,"Gfx\Gui\Menu_2.bmp")
          ImageGadget(#Menu_2, 310, 140, 330, 300, ImageID(#Menu_2))
          LoadImage(#Reprendre,"Gfx\GUI\Reprendre.bmp")
          ButtonImageGadget(#Reprendre, 360, 170, 230, 40, ImageID(#Reprendre)) 
          LoadImage(#Minimize,"Gfx\Gui\Minimizer.bmp")
          ButtonImageGadget(#Minimize, 360, 240, 230, 40, ImageID(#Minimize))
          LoadImage(#Maximize,"Gfx\GUI\Maximizer.bmp")
          ButtonImageGadget(#Maximize, 360, 310, 230, 40, ImageID(#Maximize))
          LoadImage(#Close  ,"Gfx\Gui\Close.bmp")
          ButtonImageGadget(#Close, 360, 380, 230, 40,ImageID(#Close))
          
            WaitWindowEvent ()
            DisableGadget(#Menu_2, #True)
          Case #Reprendre
            
            FreeGadget(#Reprendre)
            FreeGadget(#Menu_2)
            FreeGadget(#Maximize)
            FreeGadget(#Minimize)
            FreeGadget(#Close) 
            
          Case #Minimize 
            ShowWindow_(WindowID(#Window_Main), #SW_MINIMIZE) 
            
          Case #Maximize 
            If IsZoomed_(WindowID(#Window_Main)) 
              ShowWindow_(WindowID(#Window_Main), #SW_RESTORE) 
            Else 
              ShowWindow_(WindowID(#Window_Main), #SW_MAXIMIZE) 
            EndIf 

            
          Case #Close
            Event = #PB_Event_CloseWindow 
        EndSelect
      EndIf 
        Until Event = #PB_Event_CloseWindow 
  
EndProcedure 
Procedure UpdateMiniMap(x,Y)
  
  
  StartDrawing(ImageOutput(#MiniMap))
  
  
  
  PixelX = x / EchX
  PixelY = Y / EchY
  
  If Map(x,Y)\type=#Grass1
    color = RGB(55, 118, 62)
  ElseIf Map(x,Y)\type=#Grass2
    color = RGB(46, 98, 52)
  ElseIf Map(x,Y)\type=#Grass3
    color = RGB(43, 91, 48)
  ElseIf Map(x,Y)\type=#Grass4
    color = $56A24C
  ElseIf Map(x,Y)\type=#Grass5
    color = RGB(69, 147, 78)
  ElseIf Map(x,Y)\type=#Grass6
    color = RGB(77, 164, 87)
  EndIf
  
  If Map(x,Y)\type=#Bloc_Petrol
    color = RGB(255, 255, 10)
  EndIf
  
  If Map(x,Y)\type=#Building
    color = RGB(0, 255, 87)
  EndIf
  
  If Map(x,Y)\type=#Forest
    color = RGB(48, 93, 45)
  EndIf
  
  If ((PixelX<128) And (PixelY<128)) 
    Plot(PixelX, PixelY, color)
    If EchX < 0.5 
      Plot(PixelX + 2, PixelY, color)
      Plot(PixelX + 1, PixelY, color)
    ElseIf EchX < 1 
      Plot(PixelX + 1, PixelY, color)
    EndIf
  EndIf
  
  
  StopDrawing()
  
EndProcedure
Procedure MakeMiniMap()
  
  Shared MMOffsetX.f,MMOffsetY.f
  Shared dx.l,dy.l,X1a.l,Y1a.l,X2a.l,Y2a.l,X3a.l,Y3a.l,X4a.l,Y4a.l
  
  MMOffsetX=64
  MMOffsetY=64
  
  If #TailleMapX=>128 And #TailleMapY => 128
    EchX = #TailleMapX / 128
    EchY = #TailleMapY / 128
  Else
    EchX = 1 
    EchY = 1
  EndIf
  
  
  CreateImage(#MiniMap,128,128)
  
  StartDrawing(ImageOutput(#MiniMap))
  
  
  For Y = 1 To #TailleMapY
    For x = 1 To #TailleMapX
      
      PixelX = x / EchX
      PixelY = Y / EchY
      
      If Map(x,Y)\type=#Grass1
        color = RGB(55,150, 62)
      ElseIf Map(x,Y)\type=#Grass2
        color = RGB(46, 98, 52)
      ElseIf Map(x,Y)\type=#Grass3
        color = RGB(43, 91, 48)
      ElseIf Map(x,Y)\type=#Grass4
        color = $56A24C
      ElseIf Map(x,Y)\type=#Grass5
        color = RGB(69, 147, 78)
      ElseIf Map(x,Y)\type=#Grass6
        color = RGB(77, 164, 87)
      EndIf
      
      
      
      
      If ((PixelX<128) And (PixelY<128)) 
  			Plot(PixelX, PixelY, color)
  			If EchX < 0.5 
        Plot(PixelX + 2, PixelY, color)
        Plot(PixelX + 1, PixelY, color)
  			ElseIf EchX < 1 
        Plot(PixelX + 1, PixelY, color)
  			EndIf
      EndIf
      
    Next x
  Next Y
  
  
  StopDrawing()
  
  
  CreateSprite(#GUI_MiniMap_Aera,128,128)
  StartDrawing(SpriteOutput(#GUI_MiniMap_Aera))
  Box(0,0,128,128,RGB(255,0,255))
  
  
  
  dx = Int(ScreenWidth/#TailleTileX)-1
  dy = Int(ScreenHeight/(#TailleTileY*2))-2
  
  
  X1a=MMOffsetX
  Y1a=MMOffsetY
  
  X2a=MMOffsetX + ((dx+dy)/EchX) 
  Y2a=MMOffsetY + ((dx+dy)/EchY)
  
  X3a=MMOffsetX + ((dx+dy)/EchX)/2
  Y3a=MMOffsetY - ((dx+dy)/EchY)/2
  
  X4a=MMOffsetX + (((dx+dy)/EchX)/2)*3 
  Y4a=MMOffsetY + ((dx+dy)/EchY)/2 
  
  
  
  LineXY(X1a,Y1a,X2a,Y2a,RGB(255,255,100))
  LineXY(X2a,Y2a,X4a,Y4a,RGB(255,255,100))
  LineXY(X4a,Y4a,X3a,Y3a,RGB(255,255,100))
  LineXY(X3a,Y3a,X1a,Y1a,RGB(255,255,100))
  
  
  StopDrawing()
  
  
  
EndProcedure
Procedure ControlInput()
  ; Gestion Basique du scrolling.
  
  
  If KeyboardPushed(#PB_Key_Left)
    ScrollX-20
  EndIf
  
  If KeyboardPushed(#PB_Key_Right)
    ScrollX+20
  EndIf
  
  If KeyboardPushed(#PB_Key_Down)
    ScrollY+10
  EndIf
  
  If KeyboardPushed(#PB_Key_Up)
    ScrollY-10
  EndIf
  
EndProcedure
Procedure UpdateMap()
  Shared TilePosX.l,TilePosY.l,MouseSelectX.l,MouseSelectY.l,TileSelectX.l,TileSelectY.l
  Shared MMx.l,MMy.l,Select_T.l
  
  For Y = 1 To #TailleMapY
    For x = 1 To #TailleMapX
      
      TilePosX = Map(x,Y)\x - ScrollX 
      TilePosY = (Map(x,Y)\Y - SpriteHeight(Map(x,Y)\type)-#TailleTileY) - ScrollY 
      
      ;On affiche les tiles que si il sont dans une zone Affichable par l'écran.
      If TilePosX >-#TailleTileX And TilePosX < ScreenWidth And TilePosY >-(#TailleTileY*3) And TilePosY < ScreenHeight
        DisplayTransparentSprite(Map(x,Y)\type ,TilePosX,TilePosY)
      EndIf 
      
      If MouseX() > TilePosX + (#TailleTileX/4) And MouseX() < TilePosX + #TailleTileX - (#TailleTileX/4) And MouseY() > TilePosY + (#TailleTileY/4)+SpriteHeight(Map(x,Y)\type)-#TailleTileY And MouseY() < TilePosY + #TailleTileY - (#TailleTileY/4)+SpriteHeight(Map(x,Y)\type)-#TailleTileY
        MouseSelectX = TilePosX
        MouseSelectY = TilePosY
        TileSelectX = x
        TileSelectY = Y
      EndIf 
      
      If TilePosX > 0 And TilePosX < #TailleTileX And TilePosY > 0 And TilePosY < #TailleTileY
        MMx = x/EchX
        MMy = Y/EchY
      EndIf
      
      
      
    Next x
  Next Y 
  StartDrawing(ScreenOutput())
  DrawingMode(4) 
  ;Affichage de la zone selectionner suivant la taille du pinceau
  For T = 1 To Taille 
    
    
    
    ;DisplayTransparentSprite(#Selector,MouseSelectX+(Bx*64)/2,MouseSelectY+(By*32)/2)
    
    
    Ellipse(MouseX(),MouseY(),T+(Taille*64)/2,T+(Taille*32)/2,RGB(255/T, 255/T, 255 ))
    
  Next 
  
  ;Dessin Minimap 
  
  DrawImage(ImageID(#MiniMap),11,(ScreenHeight-150)+11 )
  ; Locate(0,0)
  ; DrawText(Str(TileSelectX)+":"+Str(TileSelectY))
  StopDrawing()
  
  
  
  MMAeraX = (11-64)+ MMx
  MMAeraY = ((ScreenHeight-150+11)-64) + MMy
  
  
  DisplayTransparentSprite(#GUI_MiniMap_Aera,MMAeraX,MMAeraY)
  DisplayTransparentSprite(#GUI_MiniMap,0,ScreenHeight-150)
  DisplayTransparentSprite(#GUI_Commander,0,ScreenHeight-SpriteHeight(#GUI_Commander))
  DisplayTransparentSprite(#Cursor,MouseX(),MouseY())
  
  
  
  ;-Paintbrush
  
  
  If KeyboardReleased(#PB_Key_PageUp)<>0   : Select_T + 1 : EndIf
  If KeyboardReleased(#PB_Key_PageDown)<>0 : Select_T - 1 : EndIf
  
  If Select_T > #Forest
    Select_T  = #Grass1
  EndIf
  
  If Select_T < #Grass1
    Select_T  = #Forest
  EndIf
  
  
  
  If MouseButton(1)<>0
    
    For By = -Taille/2 To Taille/2
      For Bx = -Taille/2 To Taille/2
        
        
        If TileSelectX+Bx= > 0 And TileSelectX+Bx <= #TailleMapX And TileSelectY+By= > 0 And TileSelectY+By <= #TailleMapY
          Map(TileSelectX+Bx,TileSelectY+By)\type = Select_T; #Bloc_Petrol
          
          If Select_T=#Water_0
            Coast_Auto(TileSelectX+Bx,TileSelectY+By)
          EndIf
          
          UpdateMiniMap(TileSelectX+Bx,TileSelectY+By)
        EndIf
        
        
    Next : Next
    
  EndIf
  
  
  If MouseWheel()>0
    Taille+1
  EndIf
  
  If MouseWheel()<0
    Taille-1
  EndIf
  
  If Taille < 1  : Taille = 1  : EndIf
  If Taille > 15 : Taille = 15 : EndIf
  
  
  If KeyboardPushed(#PB_Key_Tab)                  
    ReleaseMouse(1)
  Else
    ReleaseMouse(0)
  EndIf   
  
  
  
  
EndProcedure
Procedure Coast_Auto(x,Y)
  
  If Map(x,Y)\type = #Water_0
    
    If x+1<#TailleMapX
      If Map(x+1,Y)\type <> #Water_0
        Map(x+1,Y)\type = #Coast_2
      EndIf
    EndIf
    
    If x>0
      If Map(x-1,Y)\type <> #Water_0 
        Map(x-1,Y)\type = #Coast_1
      EndIf
    EndIf
    
    If Y+1<#TailleMapY
      If Map(x,Y+1)\type <> #Water_0 
        Map(x,Y+1)\type = #Coast_3
      EndIf
    EndIf
    
    If Y-1>0
      If Map(x,Y-1)\type <> #Water_0 
        Map(x,Y-1)\type = #Coast_0
      EndIf
    EndIf 
  EndIf
  
EndProcedure
Procedure CreateMapIsometric(Taille_Map_X.l,Taille_Map_Y.l,TileType.l)
  Shared DecalageX.l,DecalageY.l,offset.l
  For Y = 1 To Taille_Map_Y
    For x = 1 To Taille_Map_X
      
      DecalageX = DecalageX + (#TailleTileX/2)
      DecalageY = DecalageY + (#TailleTileY/2)
      
      Map(x,Y)\x    = DecalageX
      Map(x,Y)\Y    = DecalageY
      Map(x,Y)\type = TileType
      
    Next x
    offset+1
    DecalageX = -(offset*(#TailleTileX/2))   
    DecalageY = (#TailleTileY/2)*offset
  Next Y
  
EndProcedure

;/ Map Iso
CreateMapIsometric(#TailleMapX,#TailleMapY,#Grass1)
MakeMiniMap()

Repeat
  Repeat
  Event = WaitWindowEvent()
  ExamineKeyboard() : ExamineMouse() : ClearScreen(RGB(0,0,0))
  UpdateMap()
  ControlInput()
  FlipBuffers()
Until Event = #PB_Event_CloseWindow 
ForEver

If MouseX()>650
ReleaseMouse(1)   
EndIf
Je croit que cette ligne contredit l'autre:

Code : Tout sélectionner

      If TilePosX >-#TailleTileX And TilePosX < ScreenWidth And TilePosY >-(#TailleTileY*3) And TilePosY < ScreenHeight
        DisplayTransparentSprite(Map(x,Y)\type ,TilePosX,TilePosY)
      EndIf 
      
      If MouseX() > TilePosX + (#TailleTileX/4) And MouseX() < TilePosX + #TailleTileX - (#TailleTileX/4) And MouseY() > TilePosY + (#TailleTileY/4)+SpriteHeight(Map(x,Y)\type)-#TailleTileY And MouseY() < TilePosY + #TailleTileY - (#TailleTileY/4)+SpriteHeight(Map(x,Y)\type)-#TailleTileY
        MouseSelectX = TilePosX
        MouseSelectY = TilePosY
        TileSelectX = x
        TileSelectY = Y
Celle-ci ne fait rien:

Code : Tout sélectionner

If MouseX()>650
ReleaseMouse(1)   
EndIf
Quelqu'un peu me dire la solution? Merci d'avance