Page 1 sur 1

Cubefield

Publié : mer. 20/juin/2018 9:57
par bombseb
Salut tout le monde,

Aujourd'hui j'ai refait un truc que j'avais fait il y a longtemps avec une ancienne version de PB, cette version ne marchait plus du tout... PB a beaucoup changé depuis

Avertissement : Déconseillé si vous êtes gerbophobe :D

Code : Tout sélectionner

InitEngine3D() 
InitSprite()
InitKeyboard()

#ScrWidth = 1366 : #ScrHeight = 768 : #BPPx = 4
scr = OpenScreen(#ScrWidth, #ScrHeight,#BPPx * 8,"Cubefield") 

Structure cube
  rotx.b
  roty.b
  rotz.b
EndStructure

Declare GetNewCoord (i)

; Lumière
light = CreateLight(#PB_Any, RGB(25, 25, 180), 0, 0, 0, #PB_Light_Spot)

; --- Initialisation de la camera ---
#CameraFOV = 60
Global cameraID
cameraID = CreateCamera(#PB_Any, 0, 0, 100, 100)
CameraFOV(cameraID, #CameraFOV)
MoveCamera(cameraID, 0, 0, 0, #PB_Absolute)
CameraLookAt(cameraID, 0, 0, 1)
CameraRange (cameraID, 0, 1000)

; --- Initialisation des cubes ---
#NBCubes = 1000
Dim cubes.cube(#NBCubes)
For i = 0 To #NBCubes - 1
  CreateCube(i, Random (5) + 1)
  CreateEntity(i, MeshID(i), #PB_Material_None)
  GetNewCoord (i)  
  cubes(i)\rotx = Random (10) - 5
  cubes(i)\roty = Random (10) - 5
  cubes(i)\rotz = Random (10) - 5
Next

Repeat
  ExamineKeyboard()
  MoveCamera (cameraID, 0, 0, -10)
  RotateCamera (CameraID, 0,0,-2, #PB_Relative)  
  For i = 0 To #NBCubes - 1
    If CheckObjectVisibility(cameraID, EntityID(i))
      RotateEntity(i, cubes(i)\rotx, cubes(i)\roty, cubes(i)\rotz, #PB_Relative)
    Else
      GetNewCoord (i)
    EndIf
  Next
  RenderWorld()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Procedure GetNewCoord(i)
  ; Déplace une entity à une nouvelle position
  MoveEntity(i, Random (1000) - 500, Random (1000) - 500, CameraZ(cameraID) + Random (1000), #PB_Absolute)
EndProcedure

Re: Cubefield

Publié : mer. 20/juin/2018 12:28
par MLD
Salut bombseb
Désolé.
Chez moi plantage sévère. Redémarrage de la machine obligatoire
W10 64b PB 5.62

Re: Cubefield

Publié : mer. 20/juin/2018 12:47
par Micoute
Le père Noël m'a bombardé de cadeaux, mais je n'en ai attrapé aucun.

Re: Cubefield

Publié : mer. 20/juin/2018 12:50
par bombseb
MLD : Merde, tu saurais me dire vers où ca plante ? Si tu active le debug ?

Re: Cubefield

Publié : mer. 20/juin/2018 14:23
par MLD
@bomseb

Pas facile car écran noir et logiciel qui tourne en boucle sans fin.
Mais il semble que ce soit ligne 17 ?
Bon courage

Re: Cubefield

Publié : mer. 20/juin/2018 15:19
par Kwai chang caine
Marche niquel :D (W7 X86 / V5.61 X86)
Nadine, c'est un vrai champs "d'astecubïdes" 8O
Merci du partage 8)

Re: Cubefield

Publié : mer. 20/juin/2018 15:44
par Ar-S
Tourne nickel ici, même en 2560 x 1440 (w10 pb5.62 x64)
@MLD : ajoute ta config en signature, c'est toujours plus pratique pour voir la version de windows et celle de PB.
Tu as essayé en x64 ?

Re: Cubefield

Publié : mer. 20/juin/2018 17:38
par MLD
j'ai fait le teste en PB 32 bits

Re: Cubefield

Publié : jeu. 21/juin/2018 5:31
par bombseb
C'est vrai que j'utilise PB 64bit, il y a peut être un rapport ?

Re: Cubefield

Publié : jeu. 21/juin/2018 8:00
par Ar-S
Je viens de tester en x86, ça passe nickel aussi.
Peut être un soucis de puissance de carte graphique ?

Essaye en sous système opengl, ça tourne très bien aussi.

Re: Cubefield

Publié : jeu. 21/juin/2018 13:27
par PAPIPP
Bonjour à tous.

Pour être en accord avec les caractéristiques de l'écran et utiliser l'espace max.
InitEngine3D()
InitSprite()
InitKeyboard()
NbDesktops = ExamineDesktops()
ScrHeight = DesktopHeight(0)
ScrWidth = DesktopWidth(0)
BPPx = DesktopDepth(0)

scr = OpenScreen(ScrWidth, ScrHeight,BPPx,"Cubefield")

Structure cube
rotx.b
roty.b
rotz.b
EndStructure
Declare GetNewCoord (i)

; Lumière
light = CreateLight(#PB_Any, RGB(25, 25, 180), 0, 0, 0, #PB_Light_Spot)

; --- Initialisation de la camera ---
#CameraFOV = 60
Global cameraID
cameraID = CreateCamera(#PB_Any, 0, 0, 100, 100)
CameraFOV(cameraID, #CameraFOV)
MoveCamera(cameraID, 0, 0, 0, #PB_Absolute)
CameraLookAt(cameraID, 0, 0, 1)
CameraRange (cameraID, 0, 1000)

; --- Initialisation des cubes ---
#NBCubes = 1000
Dim cubes.cube(#NBCubes)
For i = 0 To #NBCubes - 1
CreateCube(i, Random (5) + 1)
CreateEntity(i, MeshID(i), #PB_Material_None)
GetNewCoord (i)
cubes(i)\rotx = Random (10) - 5
cubes(i)\roty = Random (10) - 5
cubes(i)\rotz = Random (10) - 5
Next

Repeat
ExamineKeyboard()
MoveCamera (cameraID, 0, 0, -10)
RotateCamera (CameraID, 0,0,-2, #PB_Relative)
For i = 0 To #NBCubes - 1
If CheckObjectVisibility(cameraID, EntityID(i))
RotateEntity(i, cubes(i)\rotx, cubes(i)\roty, cubes(i)\rotz, #PB_Relative)
Else
GetNewCoord (i)
EndIf
Next
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Procedure GetNewCoord(i)
; Déplace une entity à une nouvelle position
MoveEntity(i, Random (1000) - 500, Random (1000) - 500, CameraZ(cameraID) + Random (1000), #PB_Absolute)
EndProcedure
A+

Re: Cubefield

Publié : ven. 22/juin/2018 4:57
par bombseb
Ah oui c'est vrai j'y avais pas pensé, c'est plus pratique comme ca :D