tut éditeur de map simplifié
Publié : jeu. 21/oct./2004 20:49
l'objet de ce tut est de donner les bases pour réaliser un éditeur de map.
il n'y aura pas de gestion de scrolling , de couches , etc ...
ça sera sommaire , pour qu'ensuite chacun puisse l'adapter à son besoin.
Que devra faire cet éditeur ?
(en sachant qu'il est prévu pour fonctionner en mode plein écran , en 800x600)
1 afficher 10 briques (tiles) de 32x32.
pour les besoins du tut , elles seront créées dans le programme.
il sera aisé de remplacer les CreateSprite() par des LoadSprite() plus tard.
2 Permettre la construction d'une map à l'aide des 10 briques .
la map fera 20x15 briques.
il sera aussi possible de choisir un numéro de map , afin de créer plusieurs niveaux d'un jeu .
3 Sauvegarder la map
4 Charger la map
_________________________________________________
Entrons dans le vif du sujet , tout d'abord les initialisations habituelles.
Je ne détaille pas , si jamais ce début de code nécessite quelques précisions , il ne faut pas hésiter à demander .
on a besoin de 10 briques , alors on va les créer :
j'oubliais ,il faudra aussi afficher une souris , pour cela on fait un petit sprite
et on peut déjà afficher le résultat à l'écran
La prochaine fois , j'ajouterai l'affichage d'un cadre pour limiter la zone de la map , et la sélection d'une brique . Un cadre indiquera la brique sélectionnée .
il n'y aura pas de gestion de scrolling , de couches , etc ...
ça sera sommaire , pour qu'ensuite chacun puisse l'adapter à son besoin.
Que devra faire cet éditeur ?
(en sachant qu'il est prévu pour fonctionner en mode plein écran , en 800x600)
1 afficher 10 briques (tiles) de 32x32.
pour les besoins du tut , elles seront créées dans le programme.
il sera aisé de remplacer les CreateSprite() par des LoadSprite() plus tard.
2 Permettre la construction d'une map à l'aide des 10 briques .
la map fera 20x15 briques.
il sera aussi possible de choisir un numéro de map , afin de créer plusieurs niveaux d'un jeu .
3 Sauvegarder la map
4 Charger la map
_________________________________________________
Entrons dans le vif du sujet , tout d'abord les initialisations habituelles.
Je ne détaille pas , si jamais ce début de code nécessite quelques précisions , il ne faut pas hésiter à demander .
Code : Tout sélectionner
;Définition de l'écran
#LargeurEcran = 800
#HauteurEcran = 600
#ProfondeurEcran = 32
;{- Initialisation
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
End
ElseIf OpenScreen( #LargeurEcran, #HauteurEcran , #ProfondeurEcran , "Editeur map 2D" ) = 0
MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
End
EndIf
Code : Tout sélectionner
;Création des Briques
For i=1 To #NbBriques
CreateSprite(i,#TailleBriqueX,#TailleBriqueY)
StartDrawing(SpriteOutput(i))
Box(0,0,SpriteWidth(i),SpriteHeight(i),RGB(Random(255),Random(255),Random(255)))
StopDrawing()
Next i
Code : Tout sélectionner
;Creation d'un sprite pour la souris
CreateSprite(#Souris, 32, 32)
StartDrawing(SpriteOutput(#Souris))
Circle(4, 4, 5, RGB(255, 255, 255))
Line(0, 0, SpriteWidth(#Souris), SpriteHeight(#Souris), RGB(255, 255, 255))
StopDrawing()
Code : Tout sélectionner
;Définition de l'écran
#LargeurEcran = 800
#HauteurEcran = 600
#ProfondeurEcran = 32
;Définition souris
#Souris = 0 ; No du sprite de la souris
;Définitions des briques
#NbBriques = 10 ; Nombre de briques (Tiles)
#TailleBriqueX = 32 ; Dimension en largeur d'une brique
#TailleBriqueY = 32 ; Dimension en hauteur d'une brique
#BriqueMiniX = 10 ; Position de départ en X pour l'affichage des briques
#BriqueMiniY = 550 ; Position de départ en Y pour l'affichage des briques
#BriqueMaxiX = #BriqueMiniX + #NbBriques * #TailleBriqueX ; Position de fin en X pour l'affichage des briques
#BriqueMaxiY = #BriqueMiniY + #TailleBriqueY ; Position de fin en Y pour l'affichage des briques
;- Initialisation
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
End
ElseIf OpenScreen( #LargeurEcran, #HauteurEcran , #ProfondeurEcran , "Editeur map 2D" ) = 0
MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
End
EndIf
;Creation d'un sprite pour la souris
CreateSprite(#Souris, 32, 32)
StartDrawing(SpriteOutput(#Souris))
Circle(4, 4, 5, RGB(255, 255, 255))
Line(0, 0, SpriteWidth(#Souris), SpriteHeight(#Souris), RGB(255, 255, 255))
StopDrawing()
;Création des Briques
For i=1 To #NbBriques
CreateSprite(i, #TailleBriqueX, #TailleBriqueY)
StartDrawing(SpriteOutput(i))
Box(0,0,#TailleBriqueX, #TailleBriqueY, RGB(Random(255), Random(255), Random(255)))
StopDrawing()
Next i
;- Les procédures
Procedure AfficheBriques()
;Affichage horizontale des briques à partir des coordonnées (#BriqueMiniX,#BriqueMiniY)
For i=1 To #NbBriques
DisplaySprite(i,#BriqueMiniX + ((i-1)* #TailleBriqueX), #BriqueMiniY)
Next i
EndProcedure
;-Boucle principale
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
AfficheBriques()
;Affiche la souris
DisplayTransparentSprite(#Souris,MouseX(),MouseY())
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
La prochaine fois , j'ajouterai l'affichage d'un cadre pour limiter la zone de la map , et la sélection d'une brique . Un cadre indiquera la brique sélectionnée .