Minispiel

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Blitzcoder

Newsposter

Betreff: Minispiel

BeitragSo, Okt 22, 2006 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich habe vorhin etwas herumgebastelt. Herausgekommen ist folgendes. Es ist nichts tolles, aber es demonstriert Anfängern vielleicht etwas Winkel und die Funktion von sin/cos und wie man so eine Steuerung programmiert.

Lenken: Pfeil links/rechts
Gas: Pfeil hoch
Bremse: Pfeil runter
Auf die Maus losgehen: Linke Maustaste

Es sind noch ein paar Bugs drin, teilweise bleibt an der Wand kleben usw.

Update! Details siehe unten.


Code: [AUSKLAPPEN]
Graphics 800,600,0,2

Global x#=400
Global y#=300
Global winkel#=0
Global speed#=2
Global linie_x2, linie_y2
Global mauswinkel
Global autopilot
Global automaxspeed=10
Global feuerdichte=3
Global feuer_length=25
Global feuer_winkel=20

;Type für den Feuerstrahl-----
Type Tline                   
   Field x, y                 
   Field zeit                 
   Field Length               
   Field winkel               
End Type                     
;-----------------------------

;Zufall und Puffer------
SeedRnd MilliSecs();    |
SetBuffer BackBuffer(); |
;-----------------------

;#########--Hauptschleife--####################################################################################
While Not KeyDown(1)

   ;Tasten abfragen-----------------------
   If KeyDown(203) Then winkel=winkel-4;Drehen
   If KeyDown(205) Then winkel=winkel+4;Drehen
   
   If KeyDown(200) Then speed=speed+0.1;Speed ändern
   If KeyDown(208) Then speed=speed-0.03;Speed ändern
   ;Tasten abfragen-----------------------
   
   ;Winkel korrigieren----------------------
   If winkel>360 Then winkel=winkel-360
   If winkel<0 Then winkel=360+winkel
   ;Winkel korrigieren----------------------
   
   ;Feuerstreifen zeichnen-----
   If KeyDown(200) Then
      gas(x,y,winkel)
   EndIf
   ;Feuerstreifen zeichnen-----
   
   ;Feuerstreifen zeichnen-----------------------------------------
   For tmp.Tline = Each Tline
      Color 200,200,0
      linie tmp\x, tmp\y, tmp\Length, tmp\winkel+90
      Color 200,0,0
      linie linie_x2, linie_y2, tmp\Length, tmp\winkel+90
      tmp\zeit=tmp\zeit+1
      If tmp\zeit=6 Then Delete tmp
   Next
   ;Feuerstreifen zeichnen-----------------------------------------
   
   ;Speed anpassen--------------------
   If speed>0 Then speed=speed-0.03
   If speed<0 Then speed=0
   ;Speed anpassen--------------------
   
   ;Schiff zeichnen------------
   Color 255,255,255
   rechteck x,y,10,30,winkel
   ;Schiff zeichnen------------
   
   ;Schiffspositionen anpassen----
   y=y+Sin(winkel-90)*speed
   x=x+Cos(winkel-90)*speed
   ;Schiffspositionen anpassen----
   
   ;Abprallen an den Wänden----------
   If x<10 Then winkel=360-winkel
   If x>790 Then winkel=360-winkel
   
   If y>590 Then winkel=180-winkel
   If y<10 Then winkel=180-winkel
   ;Abprallen an den Wänden----------
   
   ;Autopilot bei Maustaste----------------------------------------------------------------------
   autopilot=mousedown(1)

   If autopilot=1 Then
      
      ;Speed anpassen----------------
      speed=speed+0.03
      If speed<automaxspeed Then
         speed=speed+0.1
         gas(x,y,winkel)
      EndIf
      ;Speed anpassen----------------
      
      
      mauswinkel=ATan2(MouseX()-x,y-MouseY())+360;Winkel berechnen
      
      ;Winkel korrigieren---------------------------------
      If mauswinkel>360 Then mauswinkel=mauswinkel-360
      If mauswinkel<0 Then mauswinkel=360+mauswinkel
      ;Winkel korrigieren---------------------------------
      
      ;Winkel anpassen---------------------------
      If winkel>mauswinkel Then
         If Abs(winkel-mauswinkel)>180 Then
            winkel=winkel+4
         Else
            winkel=winkel-4
         EndIf
      EndIf
      
      If winkel<mauswinkel Then
         If Abs(winkel-mauswinkel)>180 Then
            winkel=winkel-4
         Else
            winkel=winkel+4
         EndIf
      EndIf
      ;Winkel anpassen---------------------------

   EndIf
   ;Autopilot bei Maustaste----------------------------------------------------------------------
   
   ;---Infos anzeigen
   Text 0,0,"Speed: "+speed
   Text 0,15,"X: "+x
   Text 0,30,"Y: "+y
   Text 0,45,"Winkel: "+winkel
   ;---Infos anzeigen
   
   ;----------------------
   Flip;Puffer vertauschen
   Cls;Bildschirm löschen
   ;-----------------------
Wend
;#########--Hauptschleife--####################################################################################

End;Beenden





;##################################---Funktionen---############################################################
Function Linie(linie_x1,linie_y1,linie_length, linie_winkel=0)
   linie_x2=cos(linie_winkel)*linie_length+linie_x1
   linie_y2=sin(linie_winkel)*linie_length+linie_y1
   Line linie_x1,linie_y1,linie_x2,linie_y2
End Function

Function rechteck(rechteck_x,rechteck_y,rechteck_width,rechteck_height,rechteck_winkel#)
   rechteck_x1=-rechteck_width/2*Cos(rechteck_winkel)-(-rechteck_height/2)*Sin(rechteck_winkel)+rechteck_x
   rechteck_y1=-rechteck_width/2*Sin(rechteck_winkel)+(-rechteck_height/2)*Cos(rechteck_winkel)+rechteck_y

   rechteck_x2=+rechteck_width/2*Cos(rechteck_winkel)-(-rechteck_height/2)*Sin(rechteck_winkel)+rechteck_x
   rechteck_y2=+rechteck_width/2*Sin(rechteck_winkel)+(-rechteck_height/2)*Cos(rechteck_winkel)+rechteck_y

   rechteck_x3=+rechteck_width/2*Cos(rechteck_winkel)-(rechteck_height/2)*Sin(rechteck_winkel)+rechteck_x
   rechteck_y3=+rechteck_width/2*Sin(rechteck_winkel)+(rechteck_height/2)*Cos(rechteck_winkel)+rechteck_y

   rechteck_x4=-rechteck_width/2*Cos(rechteck_winkel)-(rechteck_height/2)*Sin(rechteck_winkel)+rechteck_x
   rechteck_y4=-rechteck_width/2*Sin(rechteck_winkel)+(rechteck_height/2)*Cos(rechteck_winkel)+rechteck_y

   Line rechteck_x1,rechteck_y1,rechteck_x2,rechteck_y2
   Line rechteck_x2,rechteck_y2,rechteck_x3,rechteck_y3
   Line rechteck_x4,rechteck_y4,rechteck_x3,rechteck_y3
   Line rechteck_x4,rechteck_y4,rechteck_x1,rechteck_y1
End Function

Function gas(gas_x,gas_y,gas_winkel)
   For tmp2=1 To feuerdichte
      tmp.Tline = New Tline
      tmp\x=gas_x
      tmp\y=gas_y
      tmp\Length=feuer_length+Rand(-5,5)
      tmp\zeit=0
      tmp\winkel=gas_winkel+Rand(-feuer_winkel,feuer_winkel)
   Next
End Function


MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
  • Zuletzt bearbeitet von Blitzcoder am Sa, Okt 28, 2006 22:26, insgesamt 2-mal bearbeitet

Schranz0r

BeitragMo, Okt 23, 2006 3:34
Antworten mit Zitat
Benutzer-Profile anzeigen
jopp ne nette Spielerei, ich hab bei Speed 530 nur noch ein teil gesehen, also als würde der sich auf der stelle drehen Very Happy
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 

Phlox

BeitragFr, Okt 27, 2006 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde es toll....... Very Happy

TheMatrix

BeitragFr, Okt 27, 2006 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Coole Sache, sieht aus wie ne wildgewordene Feuerwerksrakete. Very Happy
°_° °.° °~° °v° .. -.-

Blitzcoder

Newsposter

BeitragSa, Okt 28, 2006 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich habe eben etwas weitergemacht. Oben kann man nun etwas mehr einstellen, ausserdem habe ich Kommentare gesetzt (Ich weiss nicht warum) Shocked

Und wenn man die Linke Maustaste gedrückt hällt, steuert das "Ding" automatisch auf den Mauszeiger los und beschleunigt bis zum maxspeed (Oben einstellbar)

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

X0r

BeitragSo, Okt 29, 2006 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Is ja alles ganz nett, aber darauf kann man auch selber kommen. Was schon für einige Interessant wäre:
Winkelgenauer Abprall zwischen Schiff und einer Line/Rect/Oval.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group