Salut !
j'ai un petit problem avec Dream
voila le listing ci dessous
ecrit une phrase dans une image, scane la phrase et creer un tableau de points relatif a l'ecriture "Blanche" de la phrase
ensuite je lance dream, et je lui fait afficher des cubes, en fonction du tableau precedement crée !
cela marche .. mais
voici la code et apres je pose le blem
Code : Tout sélectionner
; Init different modules
; Fichiers Include
; voir le dreamotion3d.pbi pour le details des commandes reconnu
Dim tableau(1024,15)
Enumeration
#fenetre
#Police
#curseur
#image
EndEnumeration
Structure cube
numero.l
x.f
Y.f
z.f
EndStructure
Dim cube.cube(1000)
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
SetCurrentDirectory("media/")
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(#fenetre, 0, 0,EcranX,EcranY, "hello",#PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
Result = OpenWindowedScreen(WindowID(#fenetre) ,0,0, EcranX,EcranY, 1, 0,0)
CreateImage(#image,1024,768,32)
StartDrawing( ImageOutput(#image))
DrawText(0, 0, "Dreamotion3d Votre Moteur 3D" ,RGB(255,255,255),RGB(0,0,0))
For Y =0 To 15
For x=0 To 1024
tableau(x,Y)=Point(x,Y)
Next x
Next Y
StopDrawing()
CloseWindow(#fenetre)
IncludePath "D:\PureBasic\dobro\Exemple Perso\3Dreammotion\Samples\Include\"
IncludeFile "D:\PureBasic\dobro\Exemple Perso\3Dreammotion\Samples\include\d3dx9.pbi"
IncludeFile "D:\PureBasic\dobro\Exemple Perso\3Dreammotion\Samples\include\dreamotion3d.pbi"
; demarre le moteur 3D
DM_Graphics3D(1024,768, 32, #False, #False) ; Initialize graphic windows
*Camera = DM_CreateCamera(#Null) ; on cree une camera
For Y =0 To 15
For x=0 To 1024
If tableau(x,Y)<>0
; creer un Cube
nb=nb+1
cube=DM_CreateCube.l(#Null) ; on peut creer un Cube
scalex.f=4: scaley.f=4: scalez.f=4
DM_ScaleEntity(cube, scalex.f, scaley.f, scalez.f);
posxe.f =x*10
posye.f=Y*10
posze.f=0
cube(nb)\x=posxe.f
cube(nb)\Y=posye.f
cube(nb)\z=posze.f
DM_PositionEntity(cube, cube(nb)\x, cube(nb)\Y, cube(nb)\z)
EndIf
Next x
Next Y
; **************** bouger la camera ********************
;- bouger camera
poz.f=500 ; avance/recule ; pour le terrain
posy.f=-100
DM_MoveEntity(*Camera, posx,posy,poz); on recule la camera
Rouge=0
Vert=10
Bleu=0
DM_CameraClsColor(*Camera, Rouge, Vert, Bleu) ; on choisi une couleur de fond
rotxc.f=-20 ; oui de la tete
rotyc.f=150; non de la tete
rotzc.f=180; droite gauche pour un avion
DM_TurnEntity(*Camera, rotxc.f, rotyc.f, rotzc.f)
; ****** Lumiere *****************
; cree une petite lumière, type POINT
;-creer une lumiere
light = DM_CreateLight(1, Null)
Red.w=255
Green.w=10
Blue.w=100
Alpha.w=2
DM_LightColor(light, Red.w, Green.w, Blue.w, Alpha.w) ; change la couleur de la lumiere
; *********************************
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
Quit=1
ElseIf KeyboardPushed(#PB_Key_Up )
poz=1
DM_MoveEntity(*Camera, 0,0,0.8); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Down )
poz=-1
DM_MoveEntity(*Camera, 0,0,-0.8); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Left )
;rotx.f=30 ; oui de la tete
rotyc.f= rotyc.f+0.8; non de la tete
;rotz.f=0; droite gauche pour un avion
DM_RotateEntity(*Camera, rotxc.f, rotyc.f, rotzc.f)
ElseIf KeyboardPushed(#PB_Key_Right )
; rotx.f=30 ; oui de la tete
rotyc.f=rotyc.f-0.8; non de la tete
; rotz.f=0; droite gauche pour un avion
DM_RotateEntity(*Camera, rotxc.f, rotyc.f, rotzc.f)
EndIf
If MouseButton(#PB_MouseButton_Left)
Quit=1
EndIf
DM_TurnEntity(*Camera, -MouseDeltaY()/8,- MouseDeltaX()/8,0)
translatex.f=-0.2
translatey.f=0
translatez.f=0
; For nume=0 To nb
; cube(nume)\x=cube(nume)\x-0.2
; DM_TranslateEntity(cube, cube(nume)\x, cube(nume)\Y, cube(nume)\z, glob.b=#False)
; Next nume
;
; Render c'es ce qui permet de voir le resultat !
DM_BeginScene()
DM_RenderWorld()
DM_EndScene()
; *************************************
Until Quit=1
DM_ClearGraphics()
End
le blem je voulais faire bouger tous ces cubes crées pour faire un scroll
dans le sens des X (des -X pour etre exacte)
pour ça au moment de la creation, je n'ai eu aucun mal a mettre les emplacements de mes cubes dans une structure "Cube\x,Cube\y,Cube\z"
mon problem concerne l'indice du cube
en effet tu utilise non pas une variable mais un pointeur pour indicer les objets
me voila bien embarassé
je voulais faire une truc du genre
Code : Tout sélectionner
For nume=0 To nb
cube(nume)\x=cube(nume)\x-0.2
DM_TranslateEntity(cube(nume)\numero, cube(nume)\x, cube(nume)\Y, cube(nume)\z, glob.b=#False)
Next nume
note le "cube(nume)\numero" comme on le fait en purebasic
mais avec ces satanés pointeurs, c'est pas pratique
car actuellement comment creer a la volée une pleiyade de Cube
qui auraient chacun un numero diferencié
de façon ace qu'on puisse les bougers en utilisant une boucle par exemple ?
Franchement si vous pouviez rendre ce moteur accessible aux variables
tableaux, structure , a la place de ces pointeurs , se serai un grand pas !!
si cela devai rester en l'etat, je ne serai plus trop interressé par ce moteur
Je prefere te le dire franchement, ce system de pointeur est ANTI CONVIVIALE au possible
imagine si les index n'etaient pas des pointeurs, nous pourrions
aisement traiter des lots d'objets, faire des tris, sans ce prendre la tete
vous devez avoir une bonne raison d'utiliser les pointeurs, mais
c'est pas genial a appliquer ...
Faut dire qu'en plus je suis pas tres a l'aise avec les pointeurs,
comme la majorité des programmeurs Basic d'ailleurs
nous avions bien VARPTR , mais qui s'en souviens encore
