Page 1 sur 2

Comment créer un générateur de Map

Publié : dim. 24/juil./2016 2:02
par Shadow
Salut,

Je vais essayer de créer un générateur de Map.
Je vais commencer simple...

Si vous avez des idée, moi j'ai une petite piste.

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 3:03
par Shadow
Bon alors j'ai un soucis, à partir de la ligne 151.

Je fais une expérience, des essais, d’où ce code.
Je vous expliquerais au fur et à mesure ou je veux en venir :)

Je voudrait créer des lignes en cercle qui parte du point jusqu'au extrémité du cercle (Sans le toucher)
et de Longueur aléatoire mais aussi avec un angle aléatoire.

Genre ça mais tous remplie:
Image

Code (Beaucoup de code pour la fenêtre mais j'ai besoin):

Code : Tout sélectionner

; Code créer par Monsieur Dieppedalle David le 24/07/2016.

;{ Enumeration

; Window
Enumeration Window
  
  #WindowMain
  
EndEnumeration

; Gadget
Enumeration Gadget
  
  
  
EndEnumeration

;}

;{ Constantes

;{ Evenements Fenêtre

#PB_WindowsEvent_MouseEnterOrLeave = 674      ; Le curseur de la souris est entré ou sortie dans de la fenêtre.
#PB_WindowsEvent_MouseMove = 512              ; Le curseur de la souris a bougé sur la fenêtre.
#PB_WindowsEvent_BorderMouseMove = 160        ; Le curseur de la souris a bougé sur la zone cliente (Bordure) de la fenêtre.
#PB_WindowsEvent_MouseWheel = 522             ; La molette de la souris a bougé sur la fenêtre.
#PB_WindowsEvent_LeftButtonDown = 513         ; Le bouton gauche de la souris a été pressé sur la fenêtre.
#PB_WindowsEvent_LeftButtonUp = 514           ; Le bouton gauche de la souris a été relâché sur la fenêtre.
#PB_WindowsEvent_LeftClick = 13112            ; Un clic avec le bouton gauche de la souris sur la fenêtre.
#PB_WindowsEvent_LeftDoubleClick = 13113      ; Un double-clic avec le bouton gauche de la souris sur la fenêtre.
#PB_WindowsEvent_RightButtonDown = 516        ; Le bouton droit de la souris a été pressé sur la fenêtre.
#PB_WindowsEvent_RightButtonUp = 517          ; Le bouton droit de la souris a été relâché sur la fenêtre.
#PB_WindowsEvent_MiddleButtonDown = 519       ; Le bouton central de la souris a été pressé sur la fenêtre.
#PB_WindowsEvent_MiddleButtonUp = 520         ; Le bouton central de la souris a été relâché sur la fenêtre.
#PB_WindowsEvent_KeyDown = 556                ; Une touche clavier a été pressée.
#PB_WindowsEvent_KeyUp = 558                  ; Une touche clavier a été relâchée.
#PB_WindowsEvent_Focus = 13104                ; La fenêtre a obtenu le focus.
#PB_WindowsEvent_LostFocus = 13014            ; La fenêtre a perdus le focus.
#PB_WindowsEvent_MoveWindow = 13117           ; La fenêtre a été déplacée.
#PB_WindowsEvent_SizeWindow = 13118           ; La fenêtre a été redimentionné.
#PB_WindowsEvent_MinimizeWindow = 13107       ; La fenêtre a été maximisée.
#PB_WindowsEvent_MaximizeWindow = 13108       ; La fenêtre a été minimisée.
#PB_WindowsEvent_RestoreWindow = 13109        ; La fenêtre a été restaurée à sa taille normale.
#PB_WindowsEvent_WindowDrop = 13105           ; Une opération Glisser & Déposer s'est terminée sur une fenêtre.
#PB_WindowsEvent_GadgetDrop = 13016           ; Une opération Glisser & Déposer s'est terminée sur un gadget.
#PB_WindowsEvent_Repaint = 13115              ; Tout ou partie du contenu de la fenêtre a été détruit et doit être reconstitué (Utile pour les applications graphiques 2D).
#PB_WindowsEvent_SysTray = 13102              ; Une icône dans la zone SysTray a été cliquée.
#PB_WindowsEvent_Timer = 13110                ; Le temps d'un minuteur s'est écoulé
#PB_WindowsEvent_CloseWindow = 13116          ; L'icône de fermeture de fenêtre a été cliquée.

;}

;}

;{ Procedures

; Change la transparence de la fenêtre.
Procedure SetWindowsTransparency(WindowNomber, level) 
  If level>=0 And level<101 
    hLib = LoadLibrary_("user32.dll") 
    If hLib 
      adr = GetProcAddress_(hLib,"SetLayeredWindowAttributes") 
      If adr 
        SetWindowLong_(WindowID(WindowNomber),#GWL_EXSTYLE,GetWindowLong_(WindowID(WindowNomber),#GWL_EXSTYLE)|$00080000) ; #WS_EX_LAYERED = $00080000 
        CallFunctionFast(adr,WindowID(WindowNomber),0,255*level/100,2) 
      EndIf 
      FreeLibrary_(hLib) 
    EndIf 
  EndIf 
EndProcedure 

;}

;{ Ouverture du fichier de Preferences de la fenêtre et réglage des paramètres par defauts.

OpenPreferences("Preferences.txt")
PreferenceGroup("Window Main")
WindowX.i = ReadPreferenceInteger("X", 0)
WindowY.i = ReadPreferenceInteger("Y", 0)
WindowWidth.i = ReadPreferenceInteger("Width", 800)
WindowHeight.i = ReadPreferenceInteger("Height", 600)
WindowTitle.s = ReadPreferenceString("Title", "Window Main")
WindowColor.i = ReadPreferenceInteger("Color", RGB(240, 240, 240))
WindowFlags.i = ReadPreferenceInteger("Flags", 0)
WindowTransparency.i = ReadPreferenceInteger("Transparency", 100)
WindowSmartRefresh.i = ReadPreferenceInteger("SmartRefresh", #True)
WindowSticky.i = ReadPreferenceInteger("Sticky", #False)
ClosePreferences()

;}

Select WindowFlags
    
  Case 0
    WindowFlags = #PB_Window_Normal
    
  Case 1
    WindowFlags = #PB_Window_Maximize
    
  Default
    WindowFlags = #PB_Window_Normal
    
EndSelect

WindowFlags = #PB_Window_SystemMenu | #PB_Window_TitleBar | WindowFlags | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget

; Si la fenêtre peut être ouverte.
If OpenWindow(#WindowMain, WindowX, WindowY, WindowWidth, WindowHeight, "Titre", WindowFlags)
  SetWindowsTransparency(#WindowMain, WindowTransparency) ; Change la transparence de la fenêtre.
  SetWindowColor(#WindowMain, WindowColor)                ; Change la couleur de font de la fenêtre.
  
  If WindowSmartRefresh = #True
    ; Si la fenêtre n'est pas redimensionnable, cette commande n'est pas utile.
    ; Il n'est pas garanti que cette méthode fonctionne dans tous les cas de figure, et le mieux est de l'activer, faire des tests pour voir si elle a vraiment un effet. 
    SmartWindowRefresh(#WindowMain, #True) ; Active la méthode de rafraîchissement de l'affichage de la fenêtres visant à réduire les scintillements lors d'un redimensionnement (Pas toujours utile). 
  EndIf
  
  If WindowSticky = #True
    StickyWindow(#WindowMain, #True) ; Affiche la fenêtre toujours au premier plan, devant tous les autres programmes, même si elle n'est pas active. 
  EndIf
  
  ; Taille de l'image pour déssiner la Map.
  LargeurImage.i = 2000
  HauteurImage.i = 2000
  
  ; Création d'une image vide.
  NumeroImage.i = CreateImage(#PB_Any, LargeurImage.i, HauteurImage.i, 32, RGB(255, 255, 255))
  
  LargeurMap.i = 350
  HauteurMap.i = 250
  
  ; Si l'image a été créer.
  If IsImage(NumeroImage.i)
    
    ; Création d'un cercle de la taille voulue (Taille Map).
    If StartDrawing(ImageOutput(NumeroImage.i))
      
      DrawingMode(#PB_2DDrawing_Outlined)
      Ellipse(WindowWidth / 2, WindowHeight / 2, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
      
      ; Dessiner un gros point au centre du cercle.
      DrawingMode(#PB_2DDrawing_Default)
      Ellipse(WindowWidth / 2, WindowHeight / 2, 10, 10, RGB(0, 0, 0))
      
      ; Maintenant déssine des lignes partant du point vers l'extremiter du cercle de longueur aléatoire entre une intervale
      ; et aussi d'un angle aléatoire entre une intervale.
      
      For Angle = 0 To 360
        Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
        Angle + Random(10, 5)
      Next Angle
      
      
    EndIf
    
  EndIf
  
  ; Affichage de l'image sur la fenêtre.
  ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
  
  
  ;{ Evenements
  Repeat ; Départ des événements de boucle.
    
    Event = WaitWindowEvent()    ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la fenêtre.
    EventWindow = EventWindow()   ; La fenêtre ou l'évènement c'est produit.
    EventGadget = EventGadget()   ; Pour savoir sur quel gadget c'est produis l'évènement.
    EventMenu = EventMenu()       ; Pour savoir sur quel menu c'est produis l'évènement.
    EventType = EventType()       ; Le type d'évènement qui c'est produis sur le gadget.
    
    Select Event 
        
      Case #PB_Event_Gadget                  ; Un évènement est intervenue sur un gadget.
        
        Select EventGadget                   ; Le numéro du gadget ou est intervenue l'évènement.
            
          Case 0
            
        EndSelect
        
      Case #PB_Event_Menu                   ; Un évènement est intervenue sur un gadget.
        
        Select EventMenu                    ; Le numéro du menu ou est intervenue l'évènement.
            
          Case 0
            
        EndSelect
        
      Case #PB_WindowsEvent_MouseEnterOrLeave      ; Le curseur de la souris est entré ou sortie de la fenêtre.
        
      Case #PB_WindowsEvent_MouseMove              ; Le curseur de la souris a bougé sur la fenêtre.
        
      Case #PB_WindowsEvent_BorderMouseMove        ; Le curseur de la souris a bougé sur la zone cliente (Bordure) de la fenêtre.
        
      Case #PB_WindowsEvent_MouseWheel             ; La molette de la souris a bougé sur la fenêtre.
        
      Case #PB_WindowsEvent_LeftButtonDown         ; Le bouton gauche de la souris a été pressé sur la fenêtre.
        
      Case #PB_WindowsEvent_LeftButtonUp           ; Le bouton gauche de la souris a été relâché sur la fenêtre.
        
      Case #PB_WindowsEvent_LeftClick              ; Un clic avec le bouton gauche de la souris sur la fenêtre.
        
      Case #PB_WindowsEvent_LeftDoubleClick        ; Un double-clic avec le bouton gauche de la souris sur la fenêtre.
        
      Case #PB_WindowsEvent_RightButtonDown        ; Le bouton droit de la souris a été pressé sur la fenêtre.
        
      Case #PB_WindowsEvent_RightButtonUp          ; Le bouton droit de la souris a été relâché sur la fenêtre.
        
      Case #PB_WindowsEvent_MiddleButtonDown       ; Le bouton central de la souris a été pressé sur la fenêtre.
        
      Case #PB_WindowsEvent_MiddleButtonUp         ; Le bouton central de la souris a été relâché sur la fenêtre.
        
      Case #PB_WindowsEvent_KeyDown                ; Une touche clavier a été pressée.
        
      Case #PB_WindowsEvent_KeyUp                  ; Une touche clavier a été relâchée.
        
      Case #PB_WindowsEvent_Focus                  ; La fenêtre a été activée (Gain du focus).
        
      Case #PB_WindowsEvent_LostFocus              ; La fenêtre a été désactivée (Perte du focus).
        
      Case #PB_WindowsEvent_RestoreWindow          ; La fenêtre a été restaurée à sa taille normale.
        
      Case #PB_WindowsEvent_MinimizeWindow         ; La fenêtre a été minimisée.
        
      Case #PB_WindowsEvent_MaximizeWindow         ; La fenêtre a été maximisée.
        
      Case #PB_WindowsEvent_WindowDrop             ; Une opération Glisser & Déposer s'est terminée sur une fenêtre.
        
      Case #PB_WindowsEvent_GadgetDrop             ; Une opération Glisser & Déposer s'est terminée sur un gadget.
        
      Case #PB_WindowsEvent_Repaint                ; Tout ou partie du contenu de la fenêtre a été détruit et doit être reconstitué (Utile pour les applications graphiques 2D).
        
      Case #PB_WindowsEvent_SysTray                ; Une icône dans la zone SysTray a été cliquée.
        
      Case #PB_WindowsEvent_Timer                  ; Le temps d'un minuteur s'est écoulé.
        
      Case #PB_WindowsEvent_MoveWindow              ; La fenêtre a été déplacée.
        
        If GetWindowState(#WindowMain) = #PB_Window_Normal
          
          WindowX = WindowX(#WindowMain)
          WindowY = WindowY(#WindowMain)
          
          WindowFlags = 0
          
        ElseIf GetWindowState(#WindowMain) = #PB_Window_Maximize
          WindowFlags = 1
          
        EndIf
        
      Case #PB_WindowsEvent_SizeWindow             ; La fenêtre a été redimentionné.
        
        If GetWindowState(#WindowMain) = #PB_Window_Normal
          
          WindowWidth = WindowWidth(#WindowMain)
          WindowHeight = WindowHeight(#WindowMain)
          
          WindowFlags = 0
          
        ElseIf GetWindowState(#WindowMain) = #PB_Window_Maximize
          WindowFlags = 1
          
        EndIf
        
      Case #PB_WindowsEvent_CloseWindow            ; L'icône de fermeture de fenêtre a été cliquée.
        
    EndSelect
    
  Until Event = #PB_Event_CloseWindow ; Fin des évènements de boucle.
  
EndIf

;{ Enregistrement des paramètres de la fenêtre.
WindowFlags = GetWindowState(#WindowMain)

If WindowFlags = 16777216 ; Maximisé.
  WindowFlags = 1
  
ElseIf WindowFlags = 536870912 ; Minimisé.
  WindowFlags = 0
  
EndIf

OpenPreferences("Preferences.txt")
PreferenceGroup("Window Main")
WritePreferenceInteger("X", WindowX)
WritePreferenceInteger("Y", WindowY)
WritePreferenceInteger("Width", WindowWidth)
WritePreferenceInteger("Height", WindowHeight)
WritePreferenceString("Title", WindowTitle)
WritePreferenceInteger("Color", WindowColor)
WritePreferenceInteger("Flags", WindowFlags)
WritePreferenceInteger("Transparency", WindowTransparency)
WritePreferenceInteger("SmartRefresh", WindowSmartRefresh)
WritePreferenceInteger("Sticky", WindowSticky)
ClosePreferences()

;}

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 11:35
par falsam
Et ben ...

■ Tu as un cas précis à débuguer et tu nous balances un code chargé de déclarations de constantes événementielles inutiles car elle existent en natives et de tous un tas de trucs qui n'ont rien à voir avec ta demande. Il faut savoir isoler la partie qui te pose problème afin de l'exposer.

Ce qui donne ce code là

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "")  
  LargeurImage.i = 2000
  HauteurImage.i = 2000
  
  NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(255, 255, 255))
  
  LargeurMap = 350
  HauteurMap = 250
  
  WindowWidth = WindowWidth(0)
  WindowHeight = WindowHeight(0)
  
  If IsImage(NumeroImage)
    
    If StartDrawing(ImageOutput(NumeroImage))
      
      DrawingMode(#PB_2DDrawing_Outlined)
      Ellipse(WindowWidth / 2, WindowHeight / 2, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
      
      DrawingMode(#PB_2DDrawing_Default)
      Ellipse(WindowWidth / 2, WindowHeight / 2, 10, 10, RGB(0, 0, 0))
      
      
      For Angle = 0 To 360
        Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
        Angle + Random(10, 5)
      Next Angle
      StopDrawing()
    EndIf
  EndIf
  ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
 
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Commet tu peux le voir le résultat est le meme mais en plus court et on pourra te répondre plus facilement.

■ En remplaçant la fonction Line() par LineXY() on obtient ce code

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "")  
  LargeurImage.i = 2000
  HauteurImage.i = 2000
  
  NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(255, 255, 255))
  
  LargeurMap = 350
  HauteurMap = 250
    
  cx = WindowWidth(0)/2 ;Centre X
  cy = WindowHeight(0)/2 ;Centre y
  
  If IsImage(NumeroImage)
    
    If StartDrawing(ImageOutput(NumeroImage))
      
      DrawingMode(#PB_2DDrawing_Outlined)
      Ellipse(cx, cy, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
      
      DrawingMode(#PB_2DDrawing_Default)
      Ellipse(cx, cy, 10, 10, RGB(0, 0, 0))
      
      
      Amplitude = 200
      For Angle = 0 To 360 Step 5
        ;Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
        LineXY(cx, cy, cx+Cos(Radian(Angle)) * Amplitude, cy+Sin(Radian(Angle)) * Amplitude, RGB(0, 0, 0))
        ;Angle + Random(10, 5)
      Next 
      StopDrawing()
    EndIf
  EndIf
  ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
 
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 15:15
par Shadow
Ah merci beaucoup Falsam :D

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 15:28
par Zorro
je suis surpris de ne pas avoir d'erreur de compilation avec ton code !! 8O

particulierement avec cette partie !!

Code : Tout sélectionner

If StartDrawing(ImageOutput(NumeroImage))
     
      DrawingMode(#PB_2DDrawing_Outlined)
      Ellipse(cx, cy, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
     
      DrawingMode(#PB_2DDrawing_Default)
      Ellipse(cx, cy, 10, 10, RGB(0, 0, 0))
     
     
      Amplitude = 200
      For Angle = 0 To 360 Step 5
        ;Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
        LineXY(cx, cy, cx+Cos(Radian(Angle)) * Amplitude, cy+Sin(Radian(Angle)) * Amplitude, RGB(0, 0, 0))
        ;Angle + Random(10, 5)
      Next Angle
    EndIf
ce qui m'a fait découvrir le probleme, c'est la tabulation de mon EPB !!
j'avais un décalage due a ...... l'absence de StopDrawing() !!!!

je pensai du coup que j'aurai eu un probleme de compilation , mais apparemment, on peut se passer de StopDrawing() !!??





sinon pour correspondre exactement a ta demande de longueur aléatoire
il faut modifier ainsi :

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "") 
		LargeurImage.i = 2000
		HauteurImage.i = 2000
		
		NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(255, 255, 255))
		
		LargeurMap = 350
		HauteurMap = 250
		
		cx = WindowWidth(0)/2 ;Centre X
		cy = WindowHeight(0)/2 ;Centre y
		
		If IsImage(NumeroImage)
				
				If StartDrawing(ImageOutput(NumeroImage))
								
								DrawingMode(#PB_2DDrawing_Outlined)
								Ellipse(cx, cy, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
								
								DrawingMode(#PB_2DDrawing_Default)
								Ellipse(cx, cy, 10, 10, RGB(0, 0, 0))								
								
								For Angle = 0 To 360 Step 5
										Amplitude =random (250,150)
										;Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
										LineXY(cx, cy, cx+Cos(Radian(Angle)) * Amplitude, cy+Sin(Radian(Angle)) * Amplitude, RGB(0, 0, 0))
										;Angle + Random(10, 5)
								Next Angle
						StopDrawing()
				EndIf
		EndIf
		ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
		
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; Epb


Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 15:36
par falsam
Bonne remarque Zorro et je t'avoue que je suis surpris aussi que cela fonctionne sans erreur.

Le code initial de Shadow ne comportait pas l'instruction StopDrawing() et je me suis fait avoir. Meme si ça fonctionne sans cette instruction, j'ai quand même modifié le code proposé en ajoutant StopDrawing().

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 16:24
par Shadow
Oui ça fonctionne sans dans cette exemple mais attention cela causera quelque petit problème
notamment si vous utiliser une nouvelle fois StartDrawing !

Peut être que le compilateur pourrais avertir s'il ne trouve pas
StopDrawing qu'il est manquant ?

Merci Dobro :)

En faite je vais vous faire voir le principe:
http://www.aht.li/2926941/gdthfthf.png

Mais c'est surement pas la bonne méthode je me rends compte...
Est ce que une personne à une piste sur comment généré un tracer ?

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 16:29
par Ar-S
Dans tous les cas si tu fais appel à Startdrawing() tu finis par stopdrawing(). C'est tout. :wink:
Comme l'ont dit les copains, bizarre que le code n'ai pas planté.

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 17:11
par Shadow
Après recherche, ça s'appel: Générer des maps de façon procédurale.

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 17:25
par Micoute
Quand je mets la commande StartDrawing(), je mets à la suite StopDrawing() et je code entre ces 2 instructions, en fait je m'oblige à toujours mettre les deux extrémités d'une fonction. Certaines comme Procedure EndProcedure ou While Wend sont automatiques.

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 17:43
par Zorro
Shadow a écrit : Merci Dobro :)

En faite je vais vous faire voir le principe:
http://www.aht.li/2926941/gdthfthf.png

alors pour respecter ton image , il te faut ajouter le tracé au bout des lignes

comme ceci (en Vert )

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "")
		LargeurImage.i = 2000
		HauteurImage.i = 2000
		
		NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(255, 255, 255))
		
		LargeurMap = 350
		HauteurMap = 250
		
		cx = WindowWidth(0)/2 ;Centre X
		cy = WindowHeight(0)/2 ;Centre y
		
		If IsImage(NumeroImage)
				
				If StartDrawing(ImageOutput(NumeroImage))
								
								DrawingMode(#PB_2DDrawing_Outlined)
								Ellipse(cx, cy, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
								
								DrawingMode(#PB_2DDrawing_Default)
								Ellipse(cx, cy, 10, 10, RGB(0, 0, 0))                        
								x_mem=cx
								y_mem=cy
								For Angle = 0 To 360 Step 5
										Amplitude =random (250,150)
										;Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
										boutx=cx+Cos(Radian(Angle)) * Amplitude
										bouty=cy+Sin(Radian(Angle)) * Amplitude
										LineXY(cx, cy, cx+Cos(Radian(Angle)) * Amplitude, cy+Sin(Radian(Angle)) * Amplitude, RGB(0, 0, 0))
										LineXY(x_mem,y_mem,boutx,bouty,rgb(0,255,0))
										x_mem=boutx :y_mem=bouty
										;Angle + Random(10, 5)
								Next Angle
						StopDrawing()
				EndIf
		EndIf
		ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
		
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; Epb



remplis :

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "")
		LargeurImage.i = 2000
		HauteurImage.i = 2000
		
		NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(255, 255, 255))
		
		LargeurMap = 350
		HauteurMap = 250
		
		cx = WindowWidth(0)/2 ;Centre X
		cy = WindowHeight(0)/2 ;Centre y
		
		If IsImage(NumeroImage)
				
				If StartDrawing(ImageOutput(NumeroImage))
								
								DrawingMode(#PB_2DDrawing_Outlined)
								Ellipse(cx, cy, LargeurMap.i, HauteurMap.i, RGB(0, 0, 0))
								
								DrawingMode(#PB_2DDrawing_Default)
								;Ellipse(cx, cy, 10, 10, RGB(0, 0, 0))                        
								x_mem=cx
								y_mem=cy
								For Angle = 0 To 360 Step 5
										Amplitude =random (250,150)
										;Line(WindowWidth / 2, WindowHeight / 2, (WindowWidth / 2) + 100, (WindowHeight / 2) + (Angle * 90), RGB(0, 0, 0))
										boutx=cx+Cos(Radian(Angle)) * Amplitude
										bouty=cy+Sin(Radian(Angle)) * Amplitude
									;;;	LineXY(cx, cy, cx+Cos(Radian(Angle)) * Amplitude, cy+Sin(Radian(Angle)) * Amplitude, RGB(0, 0, 0))
										LineXY(x_mem,y_mem,boutx,bouty,rgb(0,255,0))
										x_mem=boutx :y_mem=bouty
										;Angle + Random(10, 5)
								Next Angle
								FillArea(cx,cy-30,-1,rgb(0,255,0))
						StopDrawing()
				EndIf
		EndIf
		ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
		
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; Epb



Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 17:49
par Bernie
Petite question Shadow tu compte crée des maps 2d ou 3d ?

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 18:03
par Shadow
Bha 2D mais effet 3D comme j'ai posté en image dans un autre thread :)
Jolie Dobro :) :wink:
Merci !

Mais est ce que c'est ainsi que ont dois faire ?
Comment vous ferriez vous pour créer un tracer de Map ?

Je ne sais pas du tous comment ont fait et je voudrait apprendre :)
Ceci étais juste une idée, elle est bien mais bon il faut avouer que c'est bof bof...

C'est une première pour moi, et merci de votre aide très précieuse !

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 18:56
par Bernie
Shadow a écrit :Bha 2D mais effet 3D comme j'ai posté en image dans un autre thread :)
Jolie Dobro :) :wink:
Merci !

Mais est ce que c'est ainsi que ont dois faire ?
Comment vous ferriez vous pour créer un tracer de Map ?

Je ne sais pas du tous comment ont fait et je voudrait apprendre :)
Ceci étais juste une idée, elle est bien mais bon il faut avouer que c'est bof bof...

C'est une première pour moi, et merci de votre aide très précieuse !
d'abord tu code l'interface( fenetre, menu etc) ensuite tu dois faire en sorte que c'est l'utilisateur qui dessine sa map ( comme dans un soft de dessin) .

Re: Comment créer un générateur de Map

Publié : dim. 24/juil./2016 19:01
par Shadow
Non non mais je veux pas ça moi, je veux que la map soit généré suivant des paramètres.
Après pourra y avoir des outils pour la retoucher mais ont en est pas la alors chaque chose en son temps.

Déjà commençons par générer un tracer d'une map.