3D Snake, echt Klasse
Übersicht

MadMentalBetreff: 3D Snake, echt Klasse |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey,
Da ich mich noch nie wirklich mit 3D-Programmierung auseinandergesetzt habe, habe ich mich einfach mal dran gesetzt um einen 3D-Snake Klon zu schreiben ![]() Er funktioniert auch wunderbar, ich wollte euch nur fragen, was ich besser machen könnte und wie ihr ihn findet. Es sind wirklich bemerkenswerte Effekte zu sehen. Hier der Code: (habe versucht übersichtlich zu schreiben, was nicht gerade meine Stärke ist xD) Code: [AUSKLAPPEN] ;--------------------------------- ; so dann versuche ich es einmal..| ; mein erstes 3d-game | ; -- MadMental -- | ;--------------------------------- Graphics3D 800,600,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() timer = CreateTimer(60) Global cam = CreateCamera() PositionEntity cam,10,15,-7 TurnEntity cam,35,0,0 ;das snake spielfeld Dim feld(19,19) feld(0,0) = 1 ;plane Global plane = CreatePlane() EntityAlpha plane,.7 Global plane_brush ;zufällige farben für das plane Global plane_rot = Rnd(255):Global plane_rot_add = -1 Global plane_green = Rnd(255):Global plane_green_add = 1 Global plane_blau = Rnd(255):Global plane_blau_add = -1 ;licht licht = CreateLight() PositionEntity licht,10,10,10 ;das fressen .. mjamjam Global fress_x = Rnd(1,19) Global fress_z = Rnd(1,19) Global fress_cube = CreateCube() fress_brush = CreateBrush(100,0,0) PaintMesh fress_cube,fress_brush PositionEntity fress_cube,fress_x,1,fress_z ;spiegeln.. jaa xDd spiegel1 = CreateMirror() PositionEntity spiegel1,0,0,20 TurnEntity spiegel1,90,0,0 spiegel2 = CreateMirror() PositionEntity spiegel2,20,0,0 TurnEntity spiegel2,90,90,0 spiegel3 = CreateMirror() PositionEntity spiegel3,0,0,0 TurnEntity spiegel3,90,90,0 ;dann der schlangenkopf Global score = 0 Global kopf_x = 10 Global kopf_z = 10 Global richtung = 1;1 = oben, 2 = links, 3 = unten, 4 = rechts Global kopf_cube = CreateSphere(80) PositionEntity kopf_cube,kopf_x,1,kopf_z kopf_brush = CreateBrush(0,255,0) PaintMesh kopf_cube,kopf_brush Global ms = MilliSecs() ;alle 200 ms einmal bewegen ;der schlangenkörper Type koerper Field x Field z Field cube End Type ;einen hauptschlangen cube, wo andere von "klonen" Global koerper_cube = CreateCube() Global koerper_brush = CreateBrush() PaintMesh koerper_cube,koerper_brush ScaleEntity koerper_cube,.5,.5,.5 HideEntity koerper_cube ;am anfang mit 3 koerperteilen anfangen :) For i = 0 To 2 neues_koerper_teil() Next trisrender = 0 While Not KeyHit(1) move() randomize_plane() RenderWorld Color 100,100,100 Rect 0,0,100,40,1 Color 255,255,255 Text 5,5,"Punkte: "+score trisrender = TrisRendered() Text 5,15,"Tris:"+trisrender Flip WaitTimer(timer) Wend Function move() If KeyDown(200) ;nach oben If richtung <> 3 richtung = 1 EndIf EndIf If KeyDown(203) ;nach links If richtung <> 4 richtung = 2 EndIf EndIf If KeyDown(208) ;nach unten If richtung <> 1 richtung = 3 EndIf EndIf If KeyDown(205) ;nach oben If richtung <> 2 richtung = 4 EndIf EndIf If (MilliSecs() - ms) > 200 Then ms = MilliSecs() bewege_koerper() If richtung = 1 Then kopf_z = kopf_z + 1 If richtung = 2 Then kopf_x = kopf_x - 1 If richtung = 3 Then kopf_z = kopf_z - 1 If richtung = 4 Then kopf_x = kopf_x + 1 ;damit man nich aus ner "map" kann If kopf_x > 19 Then kopf_x = 0 If kopf_x < 0 Then kopf_x = 19 If kopf_z > 19 Then kopf_z = 0 If kopf_z < 0 Then kopf_z = 19 PositionEntity kopf_cube,kopf_x,1,kopf_z For k.koerper = Each koerper If (k\x = kopf_x) And (k\z = kopf_z) Then End Next ;dann das fressen überprüfen :D .. hört sich iwie seltsam an If (kopf_x = fress_x) And (kopf_z = fress_z) neues_koerper_teil() score = score + 1 fress_x = Rnd(1,19): fress_z = Rnd(1,19): PositionEntity fress_cube,fress_x,1,fress_z EndIf EndIf End Function Function bewege_koerper() k.koerper = First koerper FreeEntity k\cube Delete k.koerper k.koerper = New koerper k\x = kopf_x k\z = kopf_z k\cube = CopyEntity(koerper_cube) PositionEntity k\cube,k\x,1,k\z End Function Function neues_koerper_teil() k.koerper = New koerper k\x = kopf_x k\z = kopf_z k\cube = CopyEntity(koerper_cube) PositionEntity k\cube,k\x,1,k\z End Function Function randomize_plane() plane_rot = plane_rot + plane_rot_add plane_green = plane_green + plane_green_add plane_blau = plane_blau + plane_blau_add If plane_rot < 1 Then plane_rot_add = plane_rot_add * -1 If plane_green < 1 Then plane_green_add = plane_green_add * -1 If plane_blau < 1 Then plane_blau_add = plane_blau_add * -1 If plane_rot > 254 Then plane_rot_add = plane_rot_add * -1 If plane_green > 254 Then plane_green_add = plane_green_add * -1 If plane_blau > 254 Then plane_blau_add = plane_blau_add * -1 plane_brush= CreateBrush(plane_rot,plane_green,plane_blau) PaintEntity plane,plane_brush End Function End Mal sehen, was ihr davon haltet. Die Steuerung ist mit den Pfeiltasten. MM |
||
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Muss das nicht in ein anderes Forum? Ich glaub Codearchiv ![]() |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
- Ändere die diskreten Schritte der Schlange in weiche Bewegungen um.
- mach das Spiegeln weg, das irritiert nur - Die Kameraperspektive sollte vielleicht etwas höher liegen? und welche bemerkenswerten Effekte meinst du? weiterhin viel Erfolg! |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
MadMental |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Firstdeathmaker das mit weichen bewegungen hatte ich schonmal versucht, nur leider fehlt mir der "Denkanstoß" dafür... Ich meine mit bemerkenswerten Effekte die wechselnde Farbe des Planes und die tollen 3 Spiegel ![]() Danke dir, MM |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group