Comment créer un générateur de Map
Comment créer un générateur de Map
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.
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.
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.
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.
Re: Comment créer un générateur de Map
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:

Code (Beaucoup de code pour la fenêtre mais j'ai besoin):
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:

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()
;}
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.
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.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment créer un générateur de Map
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à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
■ 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
■ 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment créer un générateur de Map
Ah merci beaucoup Falsam 

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.
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.
Re: Comment créer un générateur de Map
je suis surpris de ne pas avoir d'erreur de compilation avec ton code !!
particulierement avec cette partie !!
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 :

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
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
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment créer un générateur de Map
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().
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().
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment créer un générateur de Map
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 ?
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 ?
Dernière modification par Shadow le dim. 24/juil./2016 16:53, modifié 2 fois.
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.
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.
Re: Comment créer un générateur de Map
Dans tous les cas si tu fais appel à Startdrawing() tu finis par stopdrawing(). C'est tout.
Comme l'ont dit les copains, bizarre que le code n'ai pas planté.

Comme l'ont dit les copains, bizarre que le code n'ai pas planté.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Comment créer un générateur de Map
Après recherche, ça s'appel: Générer des maps de façon procédurale.
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.
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.
Re: Comment créer un générateur de Map
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.
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Comment créer un générateur de Map
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
Petite question Shadow tu compte crée des maps 2d ou 3d ?
Re: Comment créer un générateur de Map
Bha 2D mais effet 3D comme j'ai posté en image dans un autre thread 
Jolie Dobro
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 !

Jolie Dobro


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 !
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.
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.
Re: Comment créer un générateur de Map
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) .Shadow a écrit :Bha 2D mais effet 3D comme j'ai posté en image dans un autre thread
Jolie Dobro![]()
![]()
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
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.
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.
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.
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.