3D Snake, echt Klasse
Übersicht
BlitzBasic
Blitz3D
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
BlitzBasic
Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group
