Re: Labyrinthe 3D - début d'un nouveau projet
Publié : jeu. 10/févr./2011 11:32
T'as mis les 2 fichiers graphiques dans le même dossier que la source ?
Forums PureBasic - Français
https://www.purebasic.fr/french/
OuiCool Dji a écrit :T'as mis les 2 fichiers graphiques dans le même dossier que la source ?
Héhé, MerciAr-S a écrit :Yeah bien joué, belles avancées![]()
Je vois pas ce que tu veux dire Ar-S : tu t'étonnes que les acteurs de films X se donnent des coups ?Ar-S a écrit :Je trouve étrange ce genre d'accouds lorsque qu'on tourne en X
avec la 3D, il y a peut être une dll indispensable, comme Engine3D.dll, faut poser la question sur le forum english.Cool Dji a écrit :Bon, sinon, il s'est passé un truc bizarre : j'ai testé l'executable avec la Engine3D.dll sur un PC ou PB n'est pas installé et le prog a planté. Alors, que j'avais déjà testé des productions au préalable (gaga punch, notamment) sur ce PC. C'est le poste d'un collègue qui me sert de machine à test !!Ar-S a écrit :Yeah bien joué, belles avancées![]()
Problème sur le directory ? je regarde ça mais à la maison tous les ordis ont PureBasic d'installé !!
SPH, ça te fait quoi précisément ? (tu peux mettre une copie d'écran ?)
Est-ce que ça peut avoir un lien avec l'option du compilateur (ps : ne pas mettre directX dans bibliothèque sous systeme avec la 4.51)
Je trouve étrange ce genre d'accouds lorsque qu'on tourne en X
If ExamineMouse()
MouseX.f = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY.f = -(MouseDeltaY()/10)*#CameraSpeed/2
EndIf
Near correspond a la zone de clipping de ton frustum culling ( qui est implémenté en natif )CameraRange(CamID,Near,Far)
pourquoi pas.1 - garder l'unité du cube en n'affichant que les faces utiles
Erreur , tu auras des problèmes d'optimisations , le frustum detecte si un mesh est dans le champ de vision , si oui , il parcours les faces du mesh , on l'occurence tout ton niveau. pour loadworld , l'engine utilise un paging géometry différent.2 - placer toutes les faces visibles dans un seul mesh => Est-ce que c'est le principe utilisé dans la fonction LoadWord() ?
Code : Tout sélectionner
; Cool Dji, Février 2011, PB 4.51
#CameraSpeed = 10
#Hauteur = 100
test.i =0
decacam.i=1
InitSprite() : InitKeyboard() :InitEngine3D() : InitMouse() : InitSprite3D()
AntialiasingMode(#PB_AntialiasingMode_x6)
OpenScreen(1024, 768, 32, "Circuit")
;Add3DArchive("\Texture\", #PB_3DArchive_FileSystem)
Add3DArchive("\", #PB_3DArchive_FileSystem)
;- Génération de la police de caractère
LoadImage(0,"police.bmp")
For j =0 To 46:GrabImage(0,1,j*6,0,6,7)
CreateSprite(j,6,7,#PB_Sprite_Texture):TransparentSpriteColor(j, 0)
StartDrawing(SpriteOutput(j)):DrawImage(ImageID(1),0,0): StopDrawing()
CreateSprite3D(j, j):Next
;- code Création d'un cube de 3d - Comtois
;-Mesh
CreateMesh(1, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(1, Options , ?Sommets_1, 4*1)
SetMeshData(1, #PB_Mesh_Face, ?Triangles_1, 2*1)
CreateMesh(2, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(2, Options , ?Sommets_2, 4*1)
SetMeshData(2, #PB_Mesh_Face, ?Triangles_2, 2*1)
CreateMesh(3, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(3, Options , ?Sommets_3, 4*2)
SetMeshData(3, #PB_Mesh_Face, ?Triangles_3, 2*1*2)
CreateMesh(4, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(4, Options , ?Sommets_4, 4*1)
SetMeshData(4, #PB_Mesh_Face, ?Triangles_4, 2*1)
CreateMesh(5, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(5, Options , ?Sommets_5, 4*2)
SetMeshData(5, #PB_Mesh_Face, ?Triangles_5, 2*2)
CreateMesh(6, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(6, Options , ?Sommets_6, 4*2)
SetMeshData(6, #PB_Mesh_Face, ?Triangles_6, 2*2)
CreateMesh(7, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(7, Options , ?Sommets_7, 4*3)
SetMeshData(7, #PB_Mesh_Face, ?Triangles_7, 2*3)
CreateMesh(8, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(8, Options , ?Sommets_8, 4*1)
SetMeshData(8, #PB_Mesh_Face, ?Triangles_8, 2*1)
CreateMesh(9, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(9, Options , ?Sommets_9, 4*2)
SetMeshData(9, #PB_Mesh_Face, ?Triangles_9, 2*2)
CreateMesh(10, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(10, Options , ?Sommets_10, 4*2)
SetMeshData(10, #PB_Mesh_Face, ?Triangles_10, 2*2)
CreateMesh(11, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(11, Options , ?Sommets_11, 4*3)
SetMeshData(11, #PB_Mesh_Face, ?Triangles_11, 2*3)
CreateMesh(12, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(12, Options , ?Sommets_12, 4*2)
SetMeshData(12, #PB_Mesh_Face, ?Triangles_12, 2*2)
CreateMesh(13, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(13, Options , ?Sommets_13, 4*3)
SetMeshData(13, #PB_Mesh_Face, ?Triangles_13, 2*3)
CreateMesh(14, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(14, Options , ?Sommets_14, 4*3)
SetMeshData(14, #PB_Mesh_Face, ?Triangles_14, 2*3)
CreateMesh(15, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(15, Options , ?Sommets_15, 4*4)
SetMeshData(15, #PB_Mesh_Face, ?Triangles_15, 2*4)
CreateMesh(16, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(16, Options , ?Sommets_16, 4*1)
SetMeshData(16, #PB_Mesh_Face, ?Triangles_16, 2*1)
CreateMesh(17, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(17, Options , ?Sommets_17, 4*2)
SetMeshData(17, #PB_Mesh_Face, ?Triangles_17, 2*2)
CreateMesh(18, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(18, Options , ?Sommets_18, 4*2)
SetMeshData(18, #PB_Mesh_Face, ?Triangles_18, 2*2)
CreateMesh(19, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(19, Options , ?Sommets_19, 4*3)
SetMeshData(19, #PB_Mesh_Face, ?Triangles_19, 2*3)
CreateMesh(20, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(20, Options , ?Sommets_20, 4*2)
SetMeshData(20, #PB_Mesh_Face, ?Triangles_20, 2*2)
CreateMesh(21, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(21, Options , ?Sommets_21, 4*3)
SetMeshData(21, #PB_Mesh_Face, ?Triangles_21, 2*3)
CreateMesh(22, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(22, Options , ?Sommets_22, 4*3)
SetMeshData(22, #PB_Mesh_Face, ?Triangles_22, 2*3)
CreateMesh(23, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(23, Options , ?Sommets_23, 4*4)
SetMeshData(23, #PB_Mesh_Face, ?Triangles_23, 2*4)
CreateMesh(24, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(24, Options , ?Sommets_24, 4*2)
SetMeshData(24, #PB_Mesh_Face, ?Triangles_24, 2*2)
CreateMesh(25, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(25, Options , ?Sommets_25, 4*3)
SetMeshData(25, #PB_Mesh_Face, ?Triangles_25, 2*3)
CreateMesh(26, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(26, Options , ?Sommets_26, 4*3)
SetMeshData(26, #PB_Mesh_Face, ?Triangles_26, 2*3)
CreateMesh(27, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(27, Options , ?Sommets_27, 4*4)
SetMeshData(27, #PB_Mesh_Face, ?Triangles_27, 2*4)
CreateMesh(28, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(28, Options , ?Sommets_28, 4*3)
SetMeshData(28, #PB_Mesh_Face, ?Triangles_28, 2*3)
CreateMesh(29, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(29, Options , ?Sommets_29, 4*4)
SetMeshData(29, #PB_Mesh_Face, ?Triangles_29, 2*4)
CreateMesh(30, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(30, Options , ?Sommets_30, 4*4)
SetMeshData(30, #PB_Mesh_Face, ?Triangles_30, 2*4)
CreateMesh(31, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(31, Options , ?Sommets_31, 4*5)
SetMeshData(31, #PB_Mesh_Face, ?Triangles_31, 2*5)
CreateMesh(32, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(32, Options , ?Sommets_32, 4*1)
SetMeshData(32, #PB_Mesh_Face, ?Triangles_32, 2*1)
CreateMesh(33, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(33, Options , ?Sommets_33, 4*2)
SetMeshData(33, #PB_Mesh_Face, ?Triangles_33, 2*2)
CreateMesh(34, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(34, Options , ?Sommets_34, 4*2)
SetMeshData(34, #PB_Mesh_Face, ?Triangles_34, 2*2)
CreateMesh(35, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(35, Options , ?Sommets_35, 4*3)
SetMeshData(35, #PB_Mesh_Face, ?Triangles_35, 2*3)
CreateMesh(36, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(36, Options , ?Sommets_36, 4*2)
SetMeshData(36, #PB_Mesh_Face, ?Triangles_36, 2*2)
CreateMesh(37, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(37, Options , ?Sommets_37, 4*3)
SetMeshData(37, #PB_Mesh_Face, ?Triangles_37, 2*3)
CreateMesh(38, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(38, Options , ?Sommets_38, 4*3)
SetMeshData(38, #PB_Mesh_Face, ?Triangles_38, 2*3)
CreateMesh(39, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(39, Options , ?Sommets_39, 4*4)
SetMeshData(39, #PB_Mesh_Face, ?Triangles_39, 2*4)
CreateMesh(40, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(40, Options , ?Sommets_40, 4*2)
SetMeshData(40, #PB_Mesh_Face, ?Triangles_40, 2*2)
CreateMesh(41, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(41, Options , ?Sommets_41, 4*3)
SetMeshData(41, #PB_Mesh_Face, ?Triangles_41, 2*3)
CreateMesh(42, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(42, Options , ?Sommets_42, 4*3)
SetMeshData(42, #PB_Mesh_Face, ?Triangles_42, 2*3)
CreateMesh(43, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(43, Options , ?Sommets_43, 4*4)
SetMeshData(43, #PB_Mesh_Face, ?Triangles_43, 2*4)
CreateMesh(44, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(44, Options , ?Sommets_44, 4*3)
SetMeshData(44, #PB_Mesh_Face, ?Triangles_44, 2*3)
CreateMesh(45, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(45,Options , ?Sommets_45, 4*4)
SetMeshData(45, #PB_Mesh_Face, ?Triangles_45, 2*4)
CreateMesh(46, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(46, Options , ?Sommets_46, 4*4)
SetMeshData(46, #PB_Mesh_Face, ?Triangles_46, 2*4)
CreateMesh(47, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(47, Options , ?Sommets_47, 4*5)
SetMeshData(47, #PB_Mesh_Face, ?Triangles_47, 2*5)
CreateMesh(48, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(48, Options , ?Sommets_48, 4*2)
SetMeshData(48, #PB_Mesh_Face, ?Triangles_48, 2*2)
CreateMesh(49, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(49, Options , ?Sommets_49, 4*3)
SetMeshData(49, #PB_Mesh_Face, ?Triangles_49, 2*3)
CreateMesh(50, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(50, Options , ?Sommets_50, 4*3)
SetMeshData(50, #PB_Mesh_Face, ?Triangles_50, 2*3)
CreateMesh(51, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(51, Options , ?Sommets_51, 4*4)
SetMeshData(51, #PB_Mesh_Face, ?Triangles_51, 2*4)
CreateMesh(52, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(52, Options , ?Sommets_52, 4*3)
SetMeshData(52, #PB_Mesh_Face, ?Triangles_52, 2*3)
CreateMesh(53, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(53, Options , ?Sommets_53, 4*4)
SetMeshData(53, #PB_Mesh_Face, ?Triangles_53, 2*4)
CreateMesh(54, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(54, Options , ?Sommets_54, 4*4)
SetMeshData(54, #PB_Mesh_Face, ?Triangles_54, 2*4)
CreateMesh(55, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(55, Options , ?Sommets_55, 4*5)
SetMeshData(55, #PB_Mesh_Face, ?Triangles_55, 2*5)
CreateMesh(56, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(56, Options , ?Sommets_56, 4*3)
SetMeshData(56, #PB_Mesh_Face, ?Triangles_56, 2*3)
CreateMesh(57, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(57, Options , ?Sommets_57, 4*4)
SetMeshData(57, #PB_Mesh_Face, ?Triangles_57, 2*4)
CreateMesh(58, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(58, Options , ?Sommets_58, 4*4)
SetMeshData(58, #PB_Mesh_Face, ?Triangles_58, 2*4)
CreateMesh(59, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(59, Options , ?Sommets_59, 4*5)
SetMeshData(59, #PB_Mesh_Face, ?Triangles_59, 2*5)
CreateMesh(60, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(60, Options , ?Sommets_60, 4*4)
SetMeshData(60, #PB_Mesh_Face, ?Triangles_60, 2*4)
CreateMesh(61, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(61, Options , ?Sommets_61, 4*5)
SetMeshData(61, #PB_Mesh_Face, ?Triangles_61, 2*5)
CreateMesh(62, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(62, Options , ?Sommets_62, 4*5)
SetMeshData(62, #PB_Mesh_Face, ?Triangles_62, 2*5)
CreateMesh(63, 100)
Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
SetMeshData(63, Options , ?Sommets_63, 4*6)
SetMeshData(63, #PB_Mesh_Face, ?Triangles_63, 2*6)
;-Textures
LoadTexture(0,"Texture01.jpg")
;-Matière
CreateMaterial(0, TextureID(0))
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,300,#Hauteur+#Hauteur/2,300)
CameraLookAt(0,1000,0,1000)
;-
;-- Tableau pour les cases du labyrinthe
Dim hauteur.f(900*2)
Dim posx.f(900*2)
Dim posy.f(900*2)
Dim mposx.f(1)
Dim mposy.f(1)
Dim mposz.f(1)
Dim mmesh.i(1)
nbmesh=0
current = 0
Restore Labyrinthe
Repeat
Read.w hauteur(current)
current+1
Until current = 900*2
;---- place chaque case en X et Y
j=0
For l=1 To 2
For i=1 To 3000 Step 100
For k=1 To 3000 Step 100
If hauteur(j)>0
nbmesh=nbmesh+1
ReDim mposx(nbmesh)
ReDim mposy(nbmesh)
ReDim mposz(nbmesh)
ReDim mmesh(nbmesh)
mposx(nbmesh)=k
mposy(nbmesh)=i
mposz(nbmesh)=l*#Hauteur
mmesh(nbmesh)=hauteur(j)
EndIf
posx(j)=k
posy(j)=i
j=j+1
Next
Next
Next ; l
#Entity = 0
For j=1 To nbmesh
;- Affecte le bon mesh
; si hauteur <> 00 ou -1, creation d'un mesh avec sauvegarde des coordonnées pour chaque mesh
CreateEntity(j, MeshID(mmesh(j)), MaterialID(0))
; CreateEntity(j, MeshID(0), MaterialID(10))
ScaleEntity(j, 100, #Hauteur, 100) ; Agrandi l'entity
Next
;-
;-- Gestion des textes
;Chaine qui indique l'ordre des lettres contenues dans l'image "Gaga Punch.bmp"
Global Strig$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789-"
; Déclaration de la procédre qui affiche les textes
; (Texte à afficher, position Y, taille, n° de sprite, max aléatoire pour faire trembler la lettre)
Declare AffT(TextMenu01$,y.i,sz.i,sprite.i,rnd.i)
; le texte est automatiquement centré
; Text$ = TExt à afficher
; y =position y du text
; sz =Taille de la police (sert pour le zomm des lettres et de l'espacement)
; sp =Pointe sur le sprite A de la bonne police
; rnd =valeur de tremblement des lettres
Procedure AffT(Text$,y.i,sz.i,sp.i,rnd.i)
sx=0:For i=1 To Len(Text$):For j=1 To Len(Strig$)
If Mid(Text$,i,1)=Mid(Strig$,j,1):a=sz+2
DisplaySprite3D(sp+j-1,sx+Random(rnd)+400-(Len(Text$)*a)/2,y+Random(rnd),200)
sx=sx+sz+2:j=Len(Strig$):EndIf :Next:Next
EndProcedure
;-
;- BIG LOOP
Repeat
; --
For j=1 To nbmesh
EntityLocate(j,mposx(j),mposz(j),mposy(j))
Next
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
If ExamineMouse()
MouseX.f = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY.f = -(MouseDeltaY()/10)*#CameraSpeed/2
EndIf
;- Position de la Camera
Height.f = 11 ; TerrainHeight(CameraX(0), CameraZ(0))
RotateCamera(0, MouseY, MouseX, RollZ, #PB_Relative)
;-- Test des collisions
;--- Sauvegarde l'ancienne position
olkdkeyX=CameraX(0)
olkdkeyY=CameraY(0)
olkdkeyZ=CameraZ(0)
;--- Déplace la camera
MoveCamera (0, KeyX, -CameraY(0)+#Hauteur+#Hauteur/2, KeyY)
;--- Regarde si la camera est dans le décor
test=0
For j=0 To 899
If hauteur(j)=0
If ((CameraX(0)+decacam>=posx(j)) And (CameraX(0)-decacam=<posx(j)+100) And (CameraZ(0)+decacam>=posy(j)) And (CameraZ(0)-decacam=<posy(j)+100))
test=1
EndIf
EndIf
Next
If test= 1
;---- Si oui, replace-là à son ancienne position
CameraLocate(0,olkdkeyX, olkdkeyY, olkdkeyZ)
EndIf
RenderWorld()
Start3D()
AffT("KEY UP AND DOWN MOUSE TO MOVE AND TURN",80,6,0,0)
AffT("X "+Str(CameraX(0)),100,6,0,0)
AffT("Y "+Str(CameraY(0)),110,6,0,0)
AffT("Z "+Str(CameraZ(0)),120,6,0,0)
AffT(Str(CountRenderedTriangles())+" TRIANGLES",200,6,0,0)
AffT(Str(Engine3DFrameRate(#PB_Engine3D_Current))+" FPS",210,6,0,0)
Stop3D()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape):
End
;{ Définition du cube
DataSection
IncludeFile ("DefinitionCube.txt")
Labyrinthe:
; -1 = espace vide => pas de mesh
; 00 = obstacle => pas de mesh
; 01 à 64 = brique sans test de collision
; Dessus Dessous devant derrière gauche droite
; 32 16 8 4 2 1
; Devant
;
;
; Droite Gauche
;
;
; Derriere
; Etage 00
Data.w 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Data.w 00,22,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,24,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,19,00,00,18,16,16,16,16,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,20,20,16,16,16,16,16,17,00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,17,00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,17,00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,00,16,16,16,16,16,16,17,00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,17,00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,20,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,18,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,00
Data.w 00,26,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,00
Data.w 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
; Etage 01
Data.w 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Data.w 00,06,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,21,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,33,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,33,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,02,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,17,00
Data.w 00,26,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,00
Data.w 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
EndDataSection
;}