Un moteur de vue isométrique
Publié : mar. 08/juin/2004 12:00
Tenez, je vous refile un snippets qui vous montre comment faire un moteur pour un jeu en vue isométrique.
Commencez par recopier ce code :
Ici vous avez la base. Si vous lancez le code vous avez le squelette de votre moteur. En fait on trace une grille en calculant les coordonnées des points des droites en fonction de x et y. Vous pouvez incrémenter la boucle pour mettre plus de tile 
Maintenant voyons ce qu'on peut faire. Commencez par télécharger ce fichier, ce sont les graphismes dont vous aurez besoin, à dezipper dans le même répertoire de votre fichier source :
http://www.2dev.org/snippets/Iso/Iso.zip
Maintenant, changeons le code, Effacez ce que vous avez fait et mettez ceci :
On a juste charger les sprites et on les a positionné, suivant la grille. J'ai mis les instructions Line en commentaire pour éviter d'avoir les lignes de la grille 
Et voilà le tour est joué !
Ce procédé est une adaptation d'un code Blitz que j'ai fait pour pure, profitez en bien !
Commencez par recopier ce code :
Code : Tout sélectionner
;-Initialisation des composants
InitSprite()
InitKeyboard()
;-Initialisation des constantes et variables
;Variables Globales
Global MaFenetre ;Fenêtre principale
;Constantes
#Main_Window = 1
;-Création de la fenêtre principale
SetRefreshRate(60)
MaFenetre = OpenWindow(#Main_Window, 0, 0, 640, 480, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered, "Test")
OpenWindowedScreen(MaFenetre,0,0, 640, 480,0, 0, 0)
If MaFenetre = 0
MessageRequester("Erreur", "Impossible d'ouvrir une fenêtre DirectX", #PB_MessageRequester_Ok)
EndIf
;-Construction de la vue isométrique
cx = 320 ;On initialise les valeurs
cy = 150 ;de cx et cy
For yy = 0 To 10
ax = cx
ay = cy
For xx = 0 To 10
StartDrawing(ScreenOutput())
If xx < 10
LineXY(ax,ay,ax+32,ay+16,RGB(255,255,255))
EndIf
If yy < 10
LineXY(ax,ay,ax-32,ay+16,RGB(255,255,255))
EndIf
StopDrawing()
ax = ax + 32
ay = ay + 16
Next
cx = cx - 32
cy = cy + 16
Next
FlipBuffers()
;-Boucle Principale
Repeat
EID = WindowEvent()
Until EID = #PB_Event_CloseWindow

Maintenant voyons ce qu'on peut faire. Commencez par télécharger ce fichier, ce sont les graphismes dont vous aurez besoin, à dezipper dans le même répertoire de votre fichier source :
http://www.2dev.org/snippets/Iso/Iso.zip
Maintenant, changeons le code, Effacez ce que vous avez fait et mettez ceci :
Code : Tout sélectionner
;-Initialisation des composants
InitSprite()
InitKeyboard()
;-Initialisation des constantes et variables
;Variables Globales
Global MaFenetre ;Fenêtre principale
;Constantes
#Main_Window = 1
#Tile = 2
#Maison = 3
;-Création de la fenêtre principale
SetRefreshRate(60)
MaFenetre = OpenWindow(#Main_Window, 0, 0, 640, 480, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered, "Test")
OpenWindowedScreen(MaFenetre,0,0, 640, 480,0, 0, 0)
If MaFenetre = 0
MessageRequester("Erreur", "Impossible d'ouvrir une fenêtre DirectX", #PB_MessageRequester_Ok)
EndIf
;-Chargment des Sprites
LoadSprite(#Tile,"tile.bmp")
TransparentSpriteColor(#Tile,0,0,0)
LoadSprite(#Maison,"maison.bmp")
TransparentSpriteColor(#Maison,0,0,0)
;-Construction de la vue isométrique
cx = 320 ;On initialise les valeurs
cy = 150 ;de cx et cy
For yy = 0 To 10
ax = cx
ay = cy
For xx = 0 To 10
If xx < 10 And yy < 10
DisplayTransparentSprite(#Tile,ax-32,ay)
EndIf
If xx = 5 And yy = 5
DisplayTransparentSprite(#Maison,ax-32,ay-32)
EndIf
StartDrawing(ScreenOutput())
If xx < 10
;LineXY(ax,ay,ax+32,ay+16,RGB(255,255,255))
EndIf
If yy < 10
;LineXY(ax,ay,ax-32,ay+16,RGB(255,255,255))
EndIf
StopDrawing()
ax = ax + 32
ay = ay + 16
Next
cx = cx - 32
cy = cy + 16
Next
FlipBuffers()
;-Boucle Principale
Repeat
EID = WindowEvent()
Until EID = #PB_Event_CloseWindow

Et voilà le tour est joué !
Ce procédé est une adaptation d'un code Blitz que j'ai fait pour pure, profitez en bien !