Minispiel
Übersicht

![]() |
BlitzcoderNewsposterBetreff: Minispiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
jopp ne nette Spielerei, ich hab bei Speed 530 nur noch ein teil gesehen, also als würde der sich auf der stelle drehen ![]() |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich finde es toll....... ![]() |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Coole Sache, sieht aus wie ne wildgewordene Feuerwerksrakete. ![]() |
||
°_° °.° °~° °v° .. -.- |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ich habe eben etwas weitergemacht. Oben kann man nun etwas mehr einstellen, ausserdem habe ich Kommentare gesetzt (Ich weiss nicht warum) ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group