PureBasic     Discussion     Modifier     Historique     Forums     Salon IRC

PureBasic:Editeur map 2D - Fenêtre et événements

Un article de Games Creators Network.



PureBasic:Editeur map 2D - Fenêtre et événements

<< Précédent | Sommaire | Suivant >>


Sommaire

[modifier] Introduction

J'initialise ce tutoriel sans l'avoir préparé (c'est sans aucun doute une très mauvaise idée), j'ignore encore quelle direction il va prendre et si je le terminerai, n'hésitez pas à l'orienter si besoin , ou à donner un coup de pouce pour que ce tutoriel aboutisse à un éditeur de map 2D complet.

L'idée serait de réaliser un éditeur pour la création des maps du RPG 2D (mettre un lien vers le tutoriel du RPG2D en C et en PureBasic).

Cet éditeur devrait permettre :

  • de définir la dimension d'une map.
  • Charger / Sauver une map (les 3 fichiers .map, .sprite, .event)
  • Charger un chipset pour la construction de la map (couche map)
  • Charger un chipset pour les sprites (couche sprite)
  • Charger une musique et l'écouter avant de l'associer à la map
  • Charger un son et l'écouter avant de l'associer à un événement
  • Définir les événements directement sur la map.
  • créer les fichiers .map .event et .sprite automatiquement.


A travers cet éditeur, l'objectif est aussi de montrer comment utiliser les gadgets et autres fonctions windows pour créer une application.

Je ne suis pas un expert des applications windows, je dirais même que j'ai tout à apprendre dans ce domaine, aussi n'hésitez pas à me corriger ou à proposer une meilleure solution quand vous le jugerez nécessaire.


Aperçu de l'éditeur (Cliquez sur l'image pour agrandir)
Aperçu de l'éditeur (Cliquez sur l'image pour agrandir)

[modifier] Fenêtre et événements

Entrons directement dans le vif du sujet

EnableExplicit

;Liste des fenêtres 
Enumeration 
  #FenetrePrincipale
EndEnumeration

Define.l Event

If OpenWindow(#FenetrePrincipale, 0, 0, 800, 600, "Editeur de map 2D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0
  MessageRequester("Erreur", "Impossible d'ouvrir la fenêtre ", #PB_MessageRequester_Ok) 
  End
EndIf
  
Repeat
  Event = WaitWindowEvent()
  
  Select Event  
   
  EndSelect

Until Event = #PB_Event_CloseWindow

Ajouter un texte d'explication sur la fenêtre , et les évènements.


[modifier] Menu

EnableExplicit

;Liste des fenêtres 
Enumeration 
  #FenetrePrincipale
EndEnumeration

; Menu

Enumeration 
  #MenuPrincipal
  #MenuNouveau
  #MenuOuvrir
  #MenuEnregistrer
  #MenuQuitter
  #MenuRecent1
  #MenuRecent2
  #MenuEventTeleport
  #MenuEventDialog
  #MenuEventBattle
  #MenuEventShop
  #MenuEventInn
  #MenuEventChangeTile
  #MenuApropos
  #MenuPopup
  #PopupEventTeleport
  #PopupEventDialog
  #PopupEventBattle
  #PopupEventShop
  #PopupEventInn
  #PopupEventChangeTile
EndEnumeration

Define.l Event, quit

If OpenWindow(#FenetrePrincipale, 0, 0, 800, 600, "Editeur de map 2D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0
  MessageRequester("Erreur", "Impossible d'ouvrir la fenêtre ", #PB_MessageRequester_Ok) 
  End
EndIf

If CreateMenu(#MenuPrincipal, WindowID(#FenetrePrincipale))
  MenuTitle("Fichier")
    MenuItem(#MenuNouveau    , "Nouveau")
    MenuItem(#MenuOuvrir     , "Ouvrir une map")
    MenuItem(#MenuEnregistrer, "Enregistrer une map")
    MenuBar()
    OpenSubMenu("Fichiers récents")
      MenuItem(#MenuRecent1  , "C:\map1.map")
      MenuItem(#MenuRecent2  , "C:\map2.map")
    CloseSubMenu()
    MenuBar()
    MenuItem(#MenuQuitter    , "Quitter")

  MenuTitle("Evénements")
    MenuItem(#MenuEventBattle    , "Evénement bataille")
    MenuItem(#MenuEventChangeTile, "Evénement change tuile")
    MenuItem(#MenuEventDialog    , "Evénement dialogue")
    MenuItem(#MenuEventInn       , "Evénement auberge")
    MenuItem(#MenuEventShop      , "Evénement magasin")
    MenuItem(#MenuEventTeleport  , "Evénement téléportation")
    
  MenuTitle("?")
    MenuItem(#MenuApropos, "A propos de ...")

EndIf

If CreatePopupMenu(#MenuPopup)
  MenuTitle("Evénements")       
    MenuItem(#PopupEventBattle    , "Evénement bataille")
    MenuItem(#PopupEventChangeTile, "Evénement change tuile")
    MenuItem(#PopupEventDialog    , "Evénement dialogue")
    MenuItem(#PopupEventInn       , "Evénement auberge")
    MenuItem(#PopupEventShop      , "Evénement magasin")
    MenuItem(#PopupEventTeleport  , "Evénement téléportation")
EndIf
  
Repeat
  Event = WaitWindowEvent()
  
  Select Event  
    
    Case #WM_RBUTTONDOWN ; Le bouton droit de la souris a été cliqué =>
      DisplayPopupMenu(#MenuPopup, WindowID(#FenetrePrincipale))  ; On affiche le menu contextuel

    Case #PB_Event_Menu
      
      Select EventMenu()
      
        Case #MenuQuitter : quit = #True
      
        Case #MenuApropos : MessageRequester("A propos de", "Editeur de map 2D, à suivre...", 0)
        
      EndSelect
            
  EndSelect

Until Event = #PB_Event_CloseWindow Or quit

Expliquer le menu et le popupmenu ici.


[modifier] Gadgets

A suivre

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.