Création d'un jeu 2D (Gestion lumière, ...)
Publié : dim. 18/déc./2011 12:54
Salut tout le monde
Je voudrais me lancer dans la conception d'un mini-jeu où le personnage qu'on incarne se déplace dans un monde en 2D. Je pense que la principale difficulté va surtout être dans la gestion de la lumière ... Je voudrais au final obtenir un résultat semblable à celui la : http://www.mojang.com/notch/j4k/l4kd/ Est-ce réalisable ? Le langage Basic est il adapté pour faire ceci ?
Voici une image explicative :

Merci d'avance
Pour le moment, j'ai "réussi" à faire ça, après une journée de travail ( oui, je sais c'est peu
). La direction à la souris lag énormément chez moi, je ne comprends pas
De plus, la collision est buggée puisque un simple contact avec un mur fige le joueur. Pour la collision, j'ai essayais d'utiliser un "calque" en noir et blanc pour détecter la collision simplement quand il y a du blanc :
Les images :


by Typhoon

Je voudrais me lancer dans la conception d'un mini-jeu où le personnage qu'on incarne se déplace dans un monde en 2D. Je pense que la principale difficulté va surtout être dans la gestion de la lumière ... Je voudrais au final obtenir un résultat semblable à celui la : http://www.mojang.com/notch/j4k/l4kd/ Est-ce réalisable ? Le langage Basic est il adapté pour faire ceci ?
Voici une image explicative :

Merci d'avance

Pour le moment, j'ai "réussi" à faire ça, après une journée de travail ( oui, je sais c'est peu


Code : Tout sélectionner
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
#player=0
#ply = 1
#map = 2
#col = 3
ox = 800/2
oy= 600/2
x=ox
y=oy
v = 3
OpenWindow(0,0,0,800,600,"Zombie Land v0.1", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
CreateSprite(#Ply,30,10,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(#Ply))
Box(0,0,30,10,#Blue)
StopDrawing()
CreateSprite3D(#player,#ply)
UsePNGImageDecoder()
If LoadImage(#map,"map.png")=0 : Debug "Error load : map.png" : EndIf
If LoadImage(#col,"col.png")=0 : Debug "Error load : col.png" : EndIf
CreateSprite(5,800*2,600*2)
StartDrawing(SpriteOutput(5))
DrawImage(ImageID(#col),0,0,800*2,600*2)
StopDrawing()
Repeat
ExamineMouse()
ExamineKeyboard()
mx = MouseX()
my = MouseY()
Repeat
event = WindowEvent()
If event = #PB_Event_CloseWindow
End
EndIf
Until event=0
If SpritePixelCollision(#ply,ox,oy,5,x,y)
col=1
Else
col=0
EndIf
If KeyboardPushed(#PB_Key_Up) And col<>1
y+v
EndIf
If KeyboardPushed(#PB_Key_Down) And col<>1
y-v
EndIf
If KeyboardPushed(#PB_Key_Right) And col<>1
x-v
EndIf
If KeyboardPushed(#PB_Key_Left) And col<>1
x+v
EndIf
If mx-ox <>0 : calc = (my-oy)/(mx-ox) : EndIf
ang = Degree(ATan(calc)) + 90
If (my < oy And mx < ox) Or (my > oy And mx < ox)
ang + 180
Else
ang + 360
EndIf
FlipBuffers()
ClearScreen(#Black)
StartDrawing(ScreenOutput())
DisplayTransparentSprite(5,x,y)
DrawImage(ImageID(#map),x,y,800*2,600*2)
Circle(MouseX(),MouseY(),2,#Red)
StopDrawing()
Start3D()
RotateSprite3D(#Player,ang,#PB_Absolute)
DisplaySprite3D(#player,800/2,600/2)
Stop3D()
ForEver


by Typhoon
