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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message par Micoute »

J'ai pensé à un truc comme ça, forcément il y a mieux, c'est juste une idée.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 1200, 900, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
  LargeurImage.i = 2000
  HauteurImage.i = 2000
  
  NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(255, 255, 255))
  
  XC = WindowWidth(0)/2 ;Centre X
  YC = WindowHeight(0)/2;Centre y
  
  If IsImage(NumeroImage)
    
    If StartDrawing(ImageOutput(NumeroImage))
      
      Dim Points(1, 120)
      
      X = 0
      
      For Angle = 0 To 360 Step 3
        If Angle < 90
          Amplitude = Random (450,400)
        ElseIf Angle > 90 And Angle < 180
          Amplitude = Random(440, 390)
        ElseIf Angle > 180 And Angle < 270
          Amplitude = Random(340, 310)
        Else
          Amplitude = Random(450, 310)
        EndIf  
        Points(0, X) = XC+Cos(Radian(Angle)) * Amplitude
        Points(1, X) = YC+Sin(Radian(Angle)) * Amplitude
        X + 1
      Next Angle
      
      For X = 1 To 120
        LineXY(Points(0, X - 1), Points(1, X - 1), Points(0, X), Points(1, X), 0)
      Next X
      
      LineXY(Points(0, 120), Points(1, 120), Points(0, 0), Points(1, 0), 0)
      
      FillArea(XC, YC, 0, 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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

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

Message par Zorro »

ou comme ça :)

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
		LargeurImage.i = 800
		HauteurImage.i = 600
		NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(0, 120, 255))
		point_depart_x =LargeurImage/2 :point_depart_y = HauteurImage/2
		
		x_mem=point_depart_x
		y_mem=point_depart_y
		If IsImage(NumeroImage)
				If StartDrawing(ImageOutput(NumeroImage))
				
				
				For pas=1 to 500000
				
								Amplitude=random(10,10)							
								taille=Amplitude
								x = x_mem+Cos(Radian(Angle)) * Amplitude
								y = y_mem+Sin(Radian(Angle)) * Amplitude
							
								Angle=Angle+random(90,30)						
							;;	Linexy(x_mem,y_mem,x,y,rgb(0,125,0))
								box(x,y,taille,taille,rgb(0,random(125,20),0))
								x_mem=x
								y_mem=y
								Next pas								
						StopDrawing()
				EndIf
		EndIf
		ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i))
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf 
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message par Shadow »

Merci Dobro mais juste un tracer pour commencer :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

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

Message par Zorro »

ben il suffit de recuperer le contour ...

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
		LargeurImage.i = 800
		HauteurImage.i = 600
		NumeroImage = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(0, 120, 255))
		NumeroImage2 = CreateImage(#PB_Any, LargeurImage, HauteurImage, 32, RGB(0, 120, 255))
		point_depart_x =LargeurImage/2 :point_depart_y = HauteurImage/2
		Dim coul_tab(LargeurImage.i,HauteurImage.i)
		x_mem=point_depart_x
		y_mem=point_depart_y
		If IsImage(NumeroImage)
				If StartDrawing(ImageOutput(NumeroImage))
								For pas=1 to 500000
										
										Amplitude=random(10,10)                     
										taille=Amplitude
										x = x_mem+Cos(Radian(Angle)) * Amplitude
										y = y_mem+Sin(Radian(Angle)) * Amplitude
										
										Angle=Angle+random(90,30)                  
										;;   Linexy(x_mem,y_mem,x,y,rgb(0,125,0))
										box(x,y,taille,taille,rgb(0,125,0))
										x_mem=x
										y_mem=y
								Next pas   
								For y=0 to 600-1
										For x=0 to 800-1
												coul_tab(x,y)=point(x,y)
										Next x
								Next y
						StopDrawing()
				EndIf
		Endif
		If IsImage(NumeroImage2)
				If StartDrawing(ImageOutput(NumeroImage2))
								Drawingmode(#PB_2DDrawing_Outlined  )
								; le traceur x
								For y=0 to 600-1
										For x=0 to 800-1
												coul=coul_tab(x,y)
												if coul<>coul_mem and coul<>$0
														couleur=$0
												Else 
														couleur=rgb(255,255,255)
												Endif
												plot(x,y,couleur)
												coul_mem=coul
										Next x
								Next y
								; le traceur y
								For x=1 to 800-1
										For y=1 to 600-1
												coul=coul_tab(x,y)
												if coul<>coul_mem and coul<>$0
														couleur=RGB(159,0,146)
												Else 
														couleur=rgb(255,255,255)
												Endif
												cc=point(x,y)
												if cc=$0
														plot(x-1,y,$0)
												Endif
												plot(x,y,couleur)
												coul_mem=coul
										Next y
								Next x
						EndIf
				StopDrawing()
		EndIf
		
		
		
		; au choix
		;ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage.i)) ; map complete
		ImageGadget(#PB_Any, 0, 0, LargeurImage.i, HauteurImage.i, ImageID(NumeroImage2.i)) ; contour
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; Epb

Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message par Shadow »

Pas mal :)
Se serais bien que le tracer tienne dans la fenêtre et que les ligne soit lisser :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

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

Message par Zorro »

oui , peut etre, mais je vais m'arreter là ...
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message par Shadow »

Ok en tous les cas merci de ton aide :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre