Comment faire un jeu de lancer de dés en 3D
Re: Comment faire un jeu de lancer de dés en 3D
Ah ouais sympa en effet ^^
			
			
									
									Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
						Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment faire un jeu de lancer de dés en 3D
si ça foire, commenter "WorldShadows..."
			
			
									
									
						Code : Tout sélectionner
Procedure.f POM(v.f)
    ProcedureReturn (Random(v*1000)-v*500)/500
EndProcedure
Procedure create_dice(mesh,taille.f)
    Protected i,j,k,kk,    num
    Protected.f vi,vj,vk,u,v
    
    CreateMesh(mesh)
    For kk=0 To 2
        For k=0 To 1
            AddSubMesh()
            For i=0 To 1
                For j=0 To 1
                    vi=(i-0.5)*taille
                    vj=(j-0.5)*taille
                    vk=(k-0.5)*taille
                    u=i*(k*2-1)
                    v=j
                    Select kk
                        Case 0:MeshVertex(vi,vk,vj,u,v,0)
                        Case 1:MeshVertex(-vk,vi,vj,u,v,0)
                        Case 2:MeshVertex(vi,vj,-vk,u,v,0)
                    EndSelect
                Next
            Next
            If k
                MeshFace(0,1,2)
                MeshFace(1,3,2)
            Else
                MeshFace(2,1,0)
                MeshFace(2,3,1)
            EndIf
            SetMeshMaterial(mesh,MaterialID(num+1),num)
            num+1
        Next
    Next       
    FinishMesh(1)
    NormalizeMesh(mesh)
EndProcedure
Define.f mousex,mousey,keyx,keyz,a,da
Define i,j,ex,ey,txt.s
InitEngine3D():InitSprite():InitKeyboard():InitMouse()
OpenWindow(0, 0, 0, 0,0, "souris + fleche - espace pour relancer",#PB_Window_Maximize)
ex=WindowWidth (0,#PB_Window_InnerCoordinate)
ey=WindowHeight(0,#PB_Window_InnerCoordinate)
OpenWindowedScreen(WindowID(0), 0, 0, ex, ey, 0, 0, 0)
CreateCamera(0, 0, 0, 100, 100):MoveCamera(0,0,10,-16)
CreateLight(0,$ffffff, 5, 5, 0)
AmbientColor($444444)
CameraBackColor(0,$0)
CameraLookAt(0,0,1,0)
LightAttenuation(0, 100,0.4)
; ----------------------------------------- table
CreateTexture(10,256,256)
StartDrawing(TextureOutput(10))
For i=0 To 255
    For j=0 To 255
        Plot(i,j,Random(150,100)*$000100)
    Next
Next
StopDrawing()
CreateMaterial(10,TextureID(10))
ScaleMaterial(10,0.2,0.2)
CreateCylinder(10,8,0.2,64,1,1)
CreateEntity(10,MeshID(10),MaterialID(10)):CreateEntityBody(10,#PB_Entity_StaticBody,1,0.1,1)
CreateTube(11,8,7.5,2,64,1)
CreateEntity(11,MeshID(11),MaterialID(10)):CreateEntityBody(11,#PB_Entity_StaticBody,1,0.1,1)
; ----------------------------------------- dés
LoadFont(0, "Arial", 200)
For i=1 To 6
    CreateTexture(i,256,256)
    StartDrawing(TextureOutput(i))
    BackColor($ff)
    FrontColor($ffff)
    Box(0,0,256,256,$ff)
    DrawingFont(FontID(0))
    txt=Str(i)
    DrawText((256-TextWidth(txt))/2,(256-TextHeight(txt))/2,txt)
    StopDrawing()
    CreateMaterial(i,TextureID(i))
Next
Create_dice(0,1)
For i=0 To 4
    CreateEntity(i,MeshID(0),#PB_Material_None):CreateEntityBody(i,#PB_Entity_BoxBody,1,0.5,1)
Next   
WorldShadows(#PB_Shadow_Modulative)
Procedure drop_dice()
    Protected i
    For i=0 To 4
        MoveEntity(i,pom(1),10+i*2,pom(1),#PB_Absolute)
        ApplyEntityTorqueImpulse(i,pom(1),pom(1),pom(1),#PB_Local )
    Next
EndProcedure
drop_dice()
Repeat
    ExamineMouse()
    MouseX = -MouseDeltaX() *  0.05
    MouseY = -MouseDeltaY() *  0.05
    ExamineKeyboard()
    If KeyboardReleased(#PB_Key_Space):drop_dice():EndIf
    keyx=(-Bool(KeyboardPushed(#PB_Key_Left)<>0)+Bool(KeyboardPushed(#PB_Key_Right)<>0))*0.1
    keyz=(-Bool(KeyboardPushed(#PB_Key_Down)<>0)+Bool(KeyboardPushed(#PB_Key_Up   )<>0)+MouseButton(1)-MouseButton(2))*0.1+MouseWheel()*1
    RotateCamera(0, MouseY, MouseX, 0, #PB_Relative):MoveCamera  (0, KeyX, 0, -keyz)
    RenderWorld()
    FlipBuffers()   
Until WindowEvent() = #PB_Event_CloseWindow Or KeyboardReleased(#PB_Key_Escape) Or MouseButton(3)Re: Comment faire un jeu de lancer de dés en 3D
bjr Guillot
très très chouette, vraiment excellent
merci pour le partage
Cordialement
			
			
									
									
						très très chouette, vraiment excellent
merci pour le partage
Cordialement
Re: Comment faire un jeu de lancer de dés en 3D
Super cool !
Mais pourquoi Worldshadow() plante ?
			
			
									
									Mais pourquoi Worldshadow() plante ?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
						Version de PB : 6.00LTS - 64 bits
- falsam
- Messages : 7334
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment faire un jeu de lancer de dés en 3D
Bonjour Fig. Parce que a priori tu n'as pas DirectX9.Fig a écrit :Mais pourquoi Worldshadow() plante ?
Si ton ordinateur est sous Windows 10, l'environnement DirectX9 n'est pas installé et DirectX11 ou DirectX12 n'est pas rétrocompatible avec DirectX9
Deux solutions : Installer DirectX9c ou Bien dans les options de compilation, activé OpenGl en sous-system.
J'ai déja évoqué ce souci ici https://www.purebasic.fr/french/viewtop ... 17#p206117
Je ne sais pas si ce souci peut être régler en natif

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM 
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
						Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment faire un jeu de lancer de dés en 3D
Worldshadow() ne semble pas être présent dans la rubrique Bug report.
Donc ça peut durer encore longtemps...
			
			
									
									
						Donc ça peut durer encore longtemps...
Re: Comment faire un jeu de lancer de dés en 3D
Guillot... Que dire... Comme d'habitude tu gère de la 3D  
 
Bravo bel exemple. Merci du partage 
 
@falsam
C'est surement compliqué, mais purebasic ne peux pas rendre les fonctions compatibles DX11 et + ?
@++
			
			
									
									 
 Bravo bel exemple. Merci du partage
 
 @falsam
C'est surement compliqué, mais purebasic ne peux pas rendre les fonctions compatibles DX11 et + ?
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
						GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Comment faire un jeu de lancer de dés en 3D
je pense qu'il faut passer à une version plus récente d'ogre
je sais pas à partir de quand c'est compatible DX11 dans la ligné ogre 1.x (actuellement 1.12)
			
			
									
									
						je sais pas à partir de quand c'est compatible DX11 dans la ligné ogre 1.x (actuellement 1.12)
Re: Comment faire un jeu de lancer de dés en 3D
Whaaahooo c'est pas mal ça merci Guillot !  
			
			
									
									
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
						Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Comment faire un jeu de lancer de dés en 3D
Doux euphémisme....Shadow a écrit :Whaaahooo c'est pas mal ça merci Guillot !
 
 C'est splendide, merci du partage







