Cubefield

Programmation d'applications complexes
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Cubefield

Message 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
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Cubefield

Message par MLD »

Salut bombseb
Désolé.
Chez moi plantage sévère. Redémarrage de la machine obligatoire
W10 64b PB 5.62
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Cubefield

Message par Micoute »

Le père Noël m'a bombardé de cadeaux, mais je n'en ai attrapé aucun.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Re: Cubefield

Message par bombseb »

MLD : Merde, tu saurais me dire vers où ca plante ? Si tu active le debug ?
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Cubefield

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Cubefield

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cubefield

Message 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 ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Cubefield

Message par MLD »

j'ai fait le teste en PB 32 bits
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Re: Cubefield

Message par bombseb »

C'est vrai que j'utilise PB 64bit, il y a peut être un rapport ?
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Cubefield

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Cubefield

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Re: Cubefield

Message par bombseb »

Ah oui c'est vrai j'y avais pas pensé, c'est plus pratique comme ca :D
Répondre