
Je pense maigres tout qu'il faut attacher un prim invisible mais je ne sais pas quelle méthode employer.
Je suis preneur de vos idées. Merci

ouais, parce que là je ne vois pas à quoi ça peut servir.falsam a écrit :Exemple à suivre ......
Controler un node avec les touches du clavier et gérer les collisions.comtois a écrit :ouais, parce que là je ne vois pas à quoi ça peut servir.
La fameuse méthode à l'arrache ... j'ai lu récemment le commentaire d'un ingénieur développement logicielsfalsam a écrit :Le code à l'arrache arrive
Dans mon précédent emploi, envoyé en mission chez un client, pour débuguer un code source fait par un stagiaire, j'ai eu droit à un préambule qui m'a tout de suite mis dans l'ambiance :
Code : Tout sélectionner
/*programme fait selon les normes de la methodologie "larache" certifiee iso 1664, suite a un cahier des charges, des specifications techniques et une documentation rediges selon la meme méthode*/
Moi c'est pire que ça. Je ne l'ai même pas imaginé sur papier.comtois a écrit :La fameuse méthode à l'arrache ... j'ai lu récemment le commentaire d'un ingénieur développement logiciels:
"Dans mon précédent emploi, envoyé en mission chez un client, pour débuguer un code source fait par un stagiaire, j'ai eu droit à un préambule qui m'a tout de suite mis dans l'ambiance :
/*programme fait selon les normes de la methodologie "larache" certifiee iso 1664,
suite a un cahier des charges, des specifications techniques et une documentation
rediges selon la meme méthode*/"
Code : Tout sélectionner
EnableExplicit
;-
;- // Skeleton Module
DeclareModule Skeleton
Declare SkeletonCreate(Body.s, x, y, z)
Declare SkeletonSetBounce(Entity, BounceY.f, BounceStep.f, StartY.f=#PB_Ignore)
Declare.f SkeletonGetBounce(Entity)
Declare SkeletonSetPosition(Entity, x.f, y.f, z.f)
Declare SkeletonIsWait(Entity)
Declare SkeletonIsSit(Entity)
Declare SkeletonIsRun(Entity)
Declare SkeletonAnimationPlay(Entity, Animation.s, Flag = #PB_Default)
EndDeclareModule
Module Skeleton
;- Private
Structure Angle
x.f
y.f
z.f
EndStructure
Structure NodeParameter
IdNode.i
IdEntity.i
x.f
y.f
z.f
Width.i
Height.i
Rotation.Angle
RotationMin.Angle
RotationMax.Angle
RotationSense.i
RotationStep.f
EndStructure
Structure Node
IdNode.i
Head.NodeParameter
Body.NodeParameter
LShoulder.NodeParameter
RShoulder.NodeParameter
LHip.NodeParameter
RHip.NodeParameter
Wait.b
Run.b
Fly.b
Sit.b
HandUp.b
Jump.b
JumpTimer.f
JumpSens.i
BounceY.f
BounceStep.f
BounceSense.i
y.f
EndStructure
Global NewMap Skeleton.Node()
Procedure SkeletonSetDefault(Entity)
FindMapElement(Skeleton(), Str(Entity))
Skeleton()\Head\Rotation\y = 0
If Skeleton()\HandUp = #False
Skeleton()\RShoulder\Rotation\x = 210
Skeleton()\RShoulder\Rotation\z = -10
Skeleton()\LShoulder\Rotation\x = 210
Skeleton()\LShoulder\Rotation\z = 10
EndIf
Skeleton()\Head\RotationSense = 1
Skeleton()\RShoulder\RotationSense = 1
Skeleton()\LShoulder\RotationSense = -1
If SkeletonIsSit(Node) = #False
Skeleton()\LHip\Rotation\x = 180
Skeleton()\RHip\Rotation\x = 180
Skeleton()\LHip\RotationSense = 1
Skeleton()\RHip\RotationSense = -1
EndIf
EndProcedure
;-Public
Procedure SkeletonCreate(Body.s, x, y, z)
Protected Node, Texture, Mesh, Entity
;Create Skeleton Container
;Texture manuel avec une couche alpha (Fond blanc)
Texture = CreateTexture(#PB_Any,128,128)
StartDrawing(TextureOutput(Texture))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,128,128, RGBA(255, 255, 255, 0))
StopDrawing()
Material = CreateMaterial(#PB_Any, TextureID(Texture))
MaterialBlendingMode(Material, #PB_Material_AlphaBlend)
SetMaterialColor(Material, #PB_Material_DiffuseColor, RGBA(255, 2255, 255, 0))
Mesh = LoadMesh(#PB_Any, Body)
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material), x, y, z)
AddMapElement(Skeleton(), Str(Entity))
Node = CreateNode(#PB_Any, 0, 0, 0)
Skeleton()\IdNode = Node
;General skeleton structure
Skeleton()\Head\IdNode = CreateNode(#PB_Any, 0, 2.5, 0)
Skeleton()\Body\IdNode = CreateNode(#PB_Any, 0, 1.5, 0)
Skeleton()\LShoulder\IdNode = CreateNode(#PB_Any, -0.7, 2, 0)
Skeleton()\RShoulder\IdNode = CreateNode(#PB_Any, 0.7, 2, 0)
Skeleton()\LHip\IdNode = CreateNode(#PB_Any, -0.3, 1, 0)
Skeleton()\RHip\IdNode = CreateNode(#PB_Any, 0.3, 1, 0)
AttachNodeObject(Node, NodeID(Skeleton()\Head\IdNode))
AttachNodeObject(Node, NodeID(Skeleton()\Body\IdNode))
AttachNodeObject(Node, NodeID(Skeleton()\LShoulder\IdNode))
AttachNodeObject(Node, NodeID(Skeleton()\RShoulder\IdNode))
AttachNodeObject(Node, NodeID(Skeleton()\LHip\IdNode))
AttachNodeObject(Node, NodeID(Skeleton()\RHip\IdNode))
;Define Head
Skeleton()\Head\IdEntity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 0.7)), #PB_Material_None)
ScaleEntity(Skeleton()\Head\IdEntity, 1, 1, 1, #PB_Absolute)
AttachNodeObject(Skeleton()\Head\IdNode, EntityID(Skeleton()\Head\IdEntity))
Skeleton()\Head\RotationMax\y = 10
Skeleton()\Head\RotationMin\y = -10
Skeleton()\Head\RotationStep = 0.5
Skeleton()\Head\RotationSense = 1
;Define Body
Skeleton()\Body\IdEntity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 1)), #PB_Material_None)
ScaleEntity(Skeleton()\Body\IdEntity, 1, 1.2, 0.5, #PB_Absolute)
AttachNodeObject(Skeleton()\Body\IdNode, EntityID(Skeleton()\Body\IdEntity))
;Define Left Arm
Skeleton()\LShoulder\IdEntity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 1)), #PB_Material_None, 0, 0.5, 0)
ScaleEntity(Skeleton()\LShoulder\IdEntity, 0.3, 1.5, 0.3, #PB_Absolute)
AttachNodeObject(Skeleton()\LShoulder\IdNode, EntityID(Skeleton()\LShoulder\IdEntity))
Skeleton()\LShoulder\RotationMax\x = 260
Skeleton()\LShoulder\RotationMin\x = 160
Skeleton()\LShoulder\RotationStep = 2.0
Skeleton()\LShoulder\RotationSense = -1
;Define Right Arm
Skeleton()\RShoulder\IdEntity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 1)), #PB_Material_None, 0, 0.5, 0)
ScaleEntity(Skeleton()\RShoulder\IdEntity, 0.3, 1.5, 0.3, #PB_Absolute)
AttachNodeObject(Skeleton()\RShoulder\IdNode, EntityID(Skeleton()\RShoulder\IdEntity))
Skeleton()\RShoulder\RotationMax\x = 260
Skeleton()\RShoulder\RotationMin\x = 160
Skeleton()\RShoulder\RotationStep = 2.0
Skeleton()\RShoulder\RotationSense = 1
;Define Left Leg
Skeleton()\LHip\IdEntity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 0.8)), #PB_Material_None, 0, 0.5, 0)
ScaleEntity(Skeleton()\LHip\IdEntity, 0.4, 1.2, 0.6, #PB_Absolute)
AttachNodeObject(Skeleton()\LHip\IdNode, EntityID(Skeleton()\LHip\IdEntity))
Skeleton()\LHip\RotationMax\x = 230
Skeleton()\LHip\RotationMin\x = 130
Skeleton()\LHip\RotationStep = 2.0
Skeleton()\LHip\RotationSense = 1
;Define Right Leg
Skeleton()\RHip\IdEntity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 0.8)), #PB_Material_None, 0, 0.5, 0)
ScaleEntity(Skeleton()\RHip\IdEntity, 0.4, 1.2, 0.6, #PB_Absolute)
AttachNodeObject(Skeleton()\RHip\IdNode, EntityID(Skeleton()\RHip\IdEntity))
Skeleton()\RHip\RotationMax\x = 230
Skeleton()\RHip\RotationMin\x = 130
Skeleton()\RHip\RotationStep = 2.0
Skeleton()\RHip\RotationSense = -1
AttachEntityObject(Entity, "", NodeID(Node))
ProcedureReturn Entity
EndProcedure
Procedure SkeletonSetBounce(Entity, BounceY.f, BounceStep.f, StartY.f=#PB_Ignore)
FindMapElement(Skeleton(), Str(Entity))
Skeleton()\BounceY = BounceY
Skeleton()\BounceStep = BounceStep
If StartY <> #PB_Ignore
Skeleton()\y = StartY
EndIf
EndProcedure
Procedure SkeletonSetPosition(Entity, x.f, y.f, z.f)
FindMapElement(Skeleton(), Str(Entity))
MoveNode(Skeleton()\IdNode, x, y, z, #PB_Relative)
EndProcedure
Procedure.f SkeletonGetBounce(Entity)
FindMapElement(Skeleton(), Str(Entity))
ProcedureReturn Skeleton()\BounceStep
EndProcedure
Procedure SkeletonIsWait(Entity)
FindMapElement(Skeleton(), Str(Entity))
ProcedureReturn Skeleton()\Wait
EndProcedure
Procedure SkeletonIsSit(Entity)
FindMapElement(Skeleton(), Str(Entity))
ProcedureReturn Skeleton()\Sit
EndProcedure
Procedure SkeletonIsRun(Entity)
FindMapElement(Skeleton(), Str(Entity))
ProcedureReturn Skeleton()\Run
EndProcedure
Procedure SkeletonAnimationPlay(Entity, Animation.s, Flag = #PB_Default)
FindMapElement(Skeleton(), Str(Entity))
If Skeleton()\Jump =#True
If Skeleton()\JumpTimer > 0 And Skeleton()\JumpTimer < 20
Skeleton()\JumpTimer + 0.1
If Skeleton()\JumpTimer > 20
Skeleton()\Jump = #False
Skeleton()\LShoulder\Rotation\x = -10
Skeleton()\RShoulder\Rotation\x = -10
Skeleton()\LHip\Rotation\x = 120
Skeleton()\RHip\Rotation\x = 130
EndIf
EndIf
EndIf
Select LCase(Animation)
Case "wait" ;-Define Animation Wait
Skeleton()\Wait = #True
SkeletonSetDefault(Node)
Case "walk" ;-Define Animation Walk
Skeleton()\Wait = #False
If Skeleton()\Head\Rotation\y > Skeleton()\Head\RotationMax\y
Skeleton()\Head\RotationSense = -1
EndIf
If Skeleton()\Head\Rotation\y < Skeleton()\Head\RotationMin\y
Skeleton()\Head\RotationSense = 1
EndIf
If Skeleton()\RShoulder\Rotation\x > Skeleton()\RShoulder\RotationMax \x
Skeleton()\RShoulder\RotationSense = -1
EndIf
If Skeleton()\RShoulder\Rotation\x < Skeleton()\RShoulder\RotationMin\x
Skeleton()\RShoulder\RotationSense = 1
EndIf
If Skeleton()\LShoulder\Rotation\x > Skeleton()\LShoulder\RotationMax\x
Skeleton()\LShoulder\RotationSense = -1
EndIf
If Skeleton()\LShoulder\Rotation\x < Skeleton()\LShoulder\RotationMin\x
Skeleton()\LShoulder\RotationSense = 1
EndIf
If Skeleton()\RHip\Rotation\x > Skeleton()\RHip\RotationMax\x
Skeleton()\RHip\RotationSense = -1
EndIf
If Skeleton()\RHip\Rotation\x < Skeleton()\RHip\RotationMin\x
Skeleton()\RHip\RotationSense = 1
EndIf
If Skeleton()\LHip\Rotation\x > Skeleton()\LHip\RotationMax\x
Skeleton()\LHip\RotationSense = -1
EndIf
If Skeleton()\LHip\Rotation\x < Skeleton()\LHip\RotationMin\x
Skeleton()\LHip\RotationSense = 1
EndIf
Skeleton()\Head\Rotation\y + (Skeleton()\Head\RotationStep * Skeleton()\Head\RotationSense)
If Skeleton()\HandUp = #False
Skeleton()\RShoulder\Rotation\x + (Skeleton()\RShoulder\RotationStep * Skeleton()\RShoulder\RotationSense)
Skeleton()\LShoulder\Rotation\x + (Skeleton()\LShoulder\RotationStep * Skeleton()\LShoulder\RotationSense)
EndIf
Skeleton()\RHip\Rotation\x + (Skeleton()\Rhip\RotationStep * Skeleton()\RHip\RotationSense)
Skeleton()\LHip\Rotation\x + (Skeleton()\LHip\RotationStep * Skeleton()\LHip\RotationSense)
Case "run" ;-Define Animation Run
Skeleton()\Wait = #False
If Skeleton()\Run = #False
Skeleton()\Run = #True
Skeleton()\LShoulder\RotationStep = 4
Skeleton()\RShoulder\RotationStep = 4
Skeleton()\LHip\RotationStep = 4
Skeleton()\RHip\RotationStep = 4
Else
Skeleton()\Run = #False
Skeleton()\LShoulder\RotationStep = 2
Skeleton()\RShoulder\RotationStep = 2
Skeleton()\LHip\RotationStep = 2
Skeleton()\RHip\RotationStep = 2
EndIf
Case "jump" ;-Define Animation Jump
Skeleton()\Wait = #False
Skeleton()\Jump = #True
SkeletonSetDefault(Node)
Case "fly" ;-Define Animation Fly
Skeleton()\Wait = #False
Case "sit"
Skeleton()\Wait = #False
;-Deine Animation Sit
SkeletonSetDefault(Node)
If Skeleton()\Sit = #False
Skeleton()\Sit = #True
Skeleton()\LHip\Rotation\x = -90
Skeleton()\RHip\Rotation\x = -90
Else
SkeletonSetDefault(Node)
Skeleton()\Sit = #False
EndIf
Case "handup" ;-Define Animation HandUp
SkeletonSetDefault(Node)
If Skeleton()\HandUp = #False
Skeleton()\HandUp = #True
Skeleton()\LShoulder\Rotation\x = -10
Skeleton()\RShoulder\Rotation\x = -10
Else
Skeleton()\RShoulder\Rotation\x = 210
Skeleton()\RShoulder\Rotation\z = -10
Skeleton()\LShoulder\Rotation\x = 210
Skeleton()\LShoulder\Rotation\z = 10
Skeleton()\HandUp = #False
EndIf
EndSelect
;-Show animation (Head + Shoulder + Hip)
RotateNode(Skeleton()\Head\IdNode, Skeleton()\Head\Rotation\x, Skeleton()\Head\Rotation\y, Skeleton()\Head\Rotation\z, #PB_Absolute)
RotateNode(Skeleton()\LShoulder\IdNode, Skeleton()\LShoulder\Rotation\x, Skeleton()\LShoulder\Rotation\y, Skeleton()\LShoulder\Rotation\z, #PB_Absolute)
RotateNode(Skeleton()\RShoulder\IdNode, Skeleton()\RShoulder\Rotation\x, Skeleton()\RShoulder\Rotation\y, Skeleton()\RShoulder\Rotation\z, #PB_Absolute)
RotateNode(Skeleton()\LHip\IdNode, Skeleton()\LHip\Rotation\x, Skeleton()\LHip\Rotation\y, Skeleton()\LHip\Rotation\z, #PB_Absolute)
RotateNode(Skeleton()\RHip\IdNode, Skeleton()\RHip\Rotation\x, Skeleton()\RHip\Rotation\y, Skeleton()\RHip\Rotation\z, #PB_Absolute)
;-Update Bounce
Skeleton()\y + Skeleton()\BounceStep
If Skeleton()\y > Skeleton()\BounceY
Skeleton()\BounceStep * -1
EndIf
If Skeleton()\y < 0
Skeleton()\BounceStep * -1
EndIf
EndProcedure
EndModule
;-
;-// Test Area
Enumeration
#Mainform
EndEnumeration
Global WWidth, WHeight, Event.f
Global Camera.i,Texture.i, Material.i, Mesh.i, Ground, Entity.i, TopBuilding, Radius, x, z, Width, Height, Help
Global Player.i, PlayerSpeed.f, n
Global Av1, Av2
UseModule Skeleton
InitEngine3D()
InitKeyboard()
InitSprite()
InitMouse()
InitNetwork()
ReceiveHTTPFile("http://s242132022.onlinehome.fr/Download/image/floor1.jpg", GetTemporaryDirectory()+"floor1.jpg")
ReceiveHTTPFile("http://s242132022.onlinehome.fr/Download/image/building1.jpg", GetTemporaryDirectory()+"building1.jpg")
ReceiveHTTPFile("http://s242132022.onlinehome.fr/Download/image/body2.mesh", GetTemporaryDirectory()+"body2.mesh")
Add3DArchive(GetTemporaryDirectory(), #PB_3DArchive_FileSystem)
OpenWindow(#Mainform,0, 0, 0, 0, "", #PB_Window_SystemMenu | #PB_Window_Maximize)
WWidth = WindowWidth(#Mainform, #PB_Window_InnerCoordinate)
WHeight = WindowHeight(#Mainform, #PB_Window_InnerCoordinate)
OpenWindowedScreen(WindowID(#Mainform),0,0,WWIdth,WHeight,0, 0, 0)
EnableWorldPhysics(#True)
EnableWorldCollisions(#True)
KeyboardMode(#PB_Keyboard_International)
;Ambiance
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -5, 100, 20)
WorldShadows(#PB_Shadow_Additive)
;Ground
Texture = LoadTexture(#PB_Any, "floor1.jpg")
Material = CreateMaterial(#PB_Any,TextureID(Texture))
Ground = CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 100, 100, 10, 10, 20, 20)), MaterialID(Material), 0, 0, 0)
EntityPhysicBody(Ground, #PB_Entity_StaticBody, 2, 0, 1)
;Building
Texture = LoadTexture(#PB_Any, "building1.jpg")
Material = CreateMaterial(#PB_Any, TextureID(Texture))
Mesh = CreateCube(#PB_Any, 1)
TopBuilding = CreateCube(#PB_Any, 1)
For Radius = 0 To 359 Step 10
x = 50 * Cos(Radius * #PI / 180)
z = 30 * Sin(Radius * #PI / 180)
Width = Random(10, 5)
Height = Random(20, 10)
Entity = CreateEntity(#PB_Any, MeshID(TopBuilding), #PB_Material_None, x, Height, z)
ScaleEntity(Entity, 7, 0.20, Width+1)
EntityPhysicBody(Entity, #PB_Entity_StaticBody)
RotateEntity(Entity, 0, 90+Radius, 0)
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material), x, Height/2, z)
ScaleEntity(Entity, 6, Height, Width)
EntityPhysicBody(Entity, #PB_Entity_StaticBody)
RotateEntity(Entity, 0, 90+Radius, 0)
Next
;Block
Mesh = CreateCube(#PB_Any, 8)
For n=1 To 3
Entity = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None, n, 0.3*n, n*2)
ScaleEntity(Entity, 1, 0.05, 1)
EntityPhysicBody(Entity, #PB_Entity_StaticBody)
Next
;camera
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))
MoveCamera(Camera, 2, 50, 15, #PB_Absolute)
;-Create Player
Player = SkeletonCreate("body2.mesh", 10, 2, 20)
EntityPhysicBody(Player, #PB_Entity_BoxBody, 0.5, 0.5, 0.2)
SkeletonSetPosition(Player, 0, -0.50, 0)
;SkeletonSetBounce(Player, 0.2, 0.01)
Av1 = SkeletonCreate("body2.mesh", 10, 2, 0)
EntityPhysicBody(Av1, #PB_Entity_BoxBody, 0.5, 0.5, 0.2)
SkeletonSetPosition(Av1, 0, -0.50, 0)
SkeletonAnimationPlay(Av1, "wait")
SkeletonAnimationPlay(Av1, "walk")
Av2 = SkeletonCreate("body2.mesh", 0, 2, 5)
RotateEntity(Av2, 0, 35, 0)
EntityPhysicBody(Av2, #PB_Entity_StaticBody, 0.5, 0.5, 0.2)
SkeletonAnimationPlay(Av2, "Sit")
SkeletonSetPosition(Av2, 0, -1.50, 0)
;Help
Help = CreateSprite(#PB_Any, WWidth, 20)
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
If ExamineKeyboard()
If KeyboardPushed (#PB_Key_Escape)
Break
EndIf
;En avant ou en arriére
If Not SkeletonIsSit(Player)
If KeyboardPushed (#PB_Key_Up)
If SkeletonIsRun(Player) = #False
PlayerSpeed = -2
Else
PlayerSpeed = -4
EndIf
SkeletonAnimationPlay(Player, "walk")
ElseIf KeyboardPushed (#PB_Key_Down)
If SkeletonIsRun(Player) = #False
PlayerSpeed = 2
Else
PlayerSpeed = 4
EndIf
SkeletonAnimationPlay(Player, "walk")
Else
SkeletonAnimationPlay(Player, "wait")
PlayerSpeed = 0
EndIf
;A gauche ou à droite
If KeyboardPushed (#PB_Key_Left)
RotateEntity(Player, 0, 1.5, 0, #PB_Relative)
ElseIf KeyboardPushed (#PB_Key_Right)
RotateEntity(Player, 0, -1.5, 0, #PB_Relative)
EndIf
;Run
If KeyboardReleased (#PB_Key_R)
SkeletonAnimationPlay(Player, "run")
EndIf
;Jump
If KeyboardReleased (#PB_Key_Space)
ApplyEntityImpulse(Player, 0, 3, 0, 0, 1, 0)
EndIf
Else
PlayerSpeed = 0
EndIf
;Sit
If KeyboardReleased (#PB_Key_S)
SkeletonAnimationPlay(Player, "sit")
If SkeletonIsSit(Player) = #True
SkeletonSetPosition(Player, 0, -0.80, 0)
Else
SkeletonSetPosition(Player, 0, 0.80, 0)
EndIf
EndIf
;Hand Up
If KeyboardReleased (#PB_Key_H)
SkeletonAnimationPlay(Player, "handup")
EndIf
EndIf
If Not SkeletonIsSit(Player)
If PlayerSpeed <> 0
DisableEntityBody(Player, 0) ;Bug Fix
MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
EndIf
CameraFollow(Camera, EntityID(Player), 45, EntityY(Player)+4, 6, 0.01, 0.01)
Else
CameraFollow(Camera, EntityID(Player), 220, EntityY(Player)+1, 8, 0.01, 0.01)
EndIf
EntityLookAt(Av1, EntityX(Player), EntityY(Av1), EntityZ(Player))
MoveEntity(Av1, 0, 0, -1.5, #PB_Absolute|#PB_Local)
SkeletonAnimationPlay(Av1, "walk")
;ClearScreen(RGB(0, 0, 0))
RenderWorld(50)
StartDrawing(SpriteOutput(Help))
Box(0, 0, WWidth, 20, RGBA(178,34,34,255))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5,2,"S: Sit - R: Run - H:Hand Up - Space : Jump")
StopDrawing()
DisplaySprite(Help, 0, WHeight-20)
FlipBuffers()
ForEver
;Delete files
DeleteFile(GetTemporaryDirectory()+"floor1.jpg")
DeleteFile(GetTemporaryDirectory()+"building1.jpg")
DeleteFile(GetTemporaryDirectory()+"body2.mesh")
Bravo tu as mérité ton certificatfalsam a écrit :Le code est mis en jour.
Sachant que la reconnaissance silencieuse ne sert à personne et qu'il faut remercier les hommes le moins possible parce que la reconnaissance qu'on leur témoigne les persuade aisément qu'ils en font trop !, tu te contenteras d'un simple mercicomtois a écrit :Bravo tu as mérité ton certificat