Vektor Tanks

Übersicht Sonstiges Projekte

Neue Antwort erstellen

 

krux

Betreff: Vektor Tanks

BeitragSa, März 12, 2005 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Ganzer Code für ein Panzerspiel nur aus Vektoren

BlitzBasic: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer ()

P = 2 ;Spielerzahl

Global n ;Aktuell zu berechnender Spieler

Dim dir#(P) ;Richtung
Dim aim#(P) ;Schussrichtung
Dim speed#(p) ;Geschwindigkeit
Dim PosX#(p) ;Spieler X Koordinate
Dim PosY#(p) ;Spieler Y Koordinate
Dim Markx#(p) ;X Position des Fadenkreutzes
Dim Marky#(p) ;Y Position des Fadenkreutzes
Dim CanonX#(p) ;Kanonen X Koordinate
Dim CanonY#(p) ;Kanonen Y Koordinate
Dim Rueckstoss#(p) ;Rückstoß
Dim Expx(p) ;Explosions-x-Koordinate
Dim Expy(p) ;Explosions-x-Koordinate
Dim Score(p) ;Punkte
Dim Energy(p) ;Lebensanzeige
Dim Explrad(p) ;Explosionsradius
Dim altx(p) ;Koordinaten für Explosion
Dim alty(p)
Dim neux(p)
Dim neuy(p)


Global a
Global Aiming ;Status für P2
Global Driving ;Status für P2
Global DirM# ;Winkel zum Fadenkreuz für P2

For n = 1 To 2
PosX(n)=Rnd(10,1014)
PosY(n)=Rnd(10,758)
Energy(n)=100

Next


MoveMouse 512,384



While Not KeyHit(1)
Cls
;**** Temp Steuerung ***********************************************************

If KeyHit ( 74) Then energy(1) = energy(1) - 10
If KeyHit (181) Then energy(2) = energy(2) - 10

;**** Steuerung P1 *************************************************************

If energy(1) > 0

If KeyDown(72) And speed(1) < 1 ;Beschleunigen
Speed(1) = Speed(1) + 0.01
ElseIf KeyDown(76) And Speed(1) > -0.5
Speed(1) = Speed(1) - 0.01
Else
Speed(1) = Speed(1) /1.01 ;Langsamer werden beim
EndIf ;Nicht-Beschleunigen

If KeyDown(75) Then
Dir(1) = Dir(1)-speed(1) ;Lenkung abhängig von der
Aim(1) = Aim(1)-speed(1) ;Geschwindigkeit
EndIf

If KeyDown(77) Then
Dir(1) = Dir(1)+speed(1)
Aim(1) = Aim(1)+speed(1)
EndIf

If KeyDown(71) Then Aim(1)=Aim(1)-1 ;Kanone drehen
If KeyDown(73) Then Aim(1)=Aim(1)+1

If KeyHit(57) And Rueckstoss(1) <= 0 Then Boom(1) ;Feuer Frei


Markx(1) = PosX(1) + ( Cos ( aim(1))) * 80 ;Fadenkreut setztzen
Marky(1) = PosY(1) + ( Sin ( aim(1))) * 80

EndIf



;**** Steuerung P2 *************************************************************

If energy(2) > 0

DirM = ATan2 (MarkY(2)-PosY(2),MarkX(2)-PosX(2))
If DirM < 0 DirM = DirM + 360

If MouseHit(1) Then ;Aktiviert/Deaktiviert die
If Aiming = 0 Then ;Bewegung der Kanone
Aiming = 1
Else
Aiming = 0
EndIf
EndIf

If MouseHit(2) Then ;Aktiviert/Deaktiviert die
Driving = Driving +1 ;Bewegung des Panzers
If Driving > 2 Then Driving = 1
EndIf

If MouseDown(1) And MouseDown (2) Then Driving = 0;Bei Gleichzeitigem drück
;beider Maustasten stop
MarkX(2) = MouseX()/6.4 - 80
MarkY(2) = MouseY()/4.8 - 80

DirM = ATan2 (MarkY(2),MarkX(2))
If DirM < 0 DirM = DirM + 360

If Sqr(MarkX(2)^2+MarkY(2)^2) > 80 Then
MarkX(2) = Cos(DirM) * 80
MarkY(2) = Sin(DirM) * 80
MoveMouse (MarkX(2)+80)*6.4,(MarkY(2)+80)*4.8
EndIf

MarkX(2) = MarkX(2)+PosX(2)
MarkY(2) = MarkY(2)+PosY(2)

If Aiming = 1 Then
;Richtet Kanone dem Ziel-
If aim(2)+1 > DirM Then aim(2) = aim(2) - 1 ;visier aus
If aim(2)-1 < DirM Then aim(2) = aim(2) + 1
If aim(2) - 180 > DirM Then aim(2) = aim(2) + 2
If aim(2) + 180 < DirM Then aim(2) = aim(2) - 2

EndIf

If Driving = 1 Then
If speed(2) < ((MarkX(2)-PosX(2))^2+(MarkY(2)-PosY(2))^2)^0.5/80
Speed(2) = speed(2)+0.01
ElseIf speed(2) > ((MarkX(2)-PosX(2))^2+(MarkY(2)-PosY(2))^2)^0.5/80
Speed(2) = speed(2)-0.01
EndIf

If dir(2)+1 > DirM Then ;Dreht den Panzer in Rich-
dir(2) = dir(2) - Speed(2) ;tung des Visiers
aim(2) = aim(2) - Speed(2)
EndIf

If dir(2)-1 < DirM Then
dir(2) = dir(2) + Speed(2)
aim(2) = aim(2) + Speed(2)
EndIf

If dir(2) - 180 > DirM Then ;Wenn eine drehung über
dir(2) = dir(2) + 2*Speed(2) ;den 360° Winkel kürzer
aim(2) = aim(2) + 2*Speed(2) ;ist muss dieser genommen
EndIf ;werden (2fach speed weil
;die erst falsche Richtung
If dir(2) + 180 < DirM Then ;ausgeglichen werden muss)
dir(2) = dir(2) - 2*Speed(2)
aim(2) = aim(2) - 2*Speed(2)
EndIf
ElseIf Driving = 2
If speed(2) < ((MarkX(2)-PosX(2))^2+(MarkY(2)-PosY(2))^2)^0.5/80
Speed(2) = speed(2)+0.01
ElseIf speed(2) > ((MarkX(2)-PosX(2))^2+(MarkY(2)-PosY(2))^2)^0.5/80
Speed(2) = speed(2)-0.01
EndIf
Else
Speed(2) = Speed(2) /1.01 ;Langsamwerden beim Nicht-
EndIf ;Beschleinigen

If MouseHit(3) And Rueckstoss(2) <= 0 Then Boom(2) ;Bei Mittlerer Mausteste Feuern

EndIf

;*******************************************************************************
;**** Grafik Bildaufbau und Rest ***********************************************
;*******************************************************************************

For n = 1 To P

For s.schuss = Each schuss

If s.schuss\lifetime > 0 ;Projektion der Kanonen-
s\x = s\x+Cos(s\dir)*s\speed
s\y = s\y+Sin(s\dir)*s\speed

Oval s\x-3,s\y-3,6,6

s\lifetime = s\lifetime - 1
If s\lifetime <= 0 Then Delete s
EndIf
Next

If Rueckstoss(n) > 0 Rueckstoss(n) = Rueckstoss(n) - 0.05


CanonX(n) = PosX(n) - Cos(aim(n)) * Rueckstoss(n) ;Setztz Koordinaten um ei-
CanonY(n) = PosY(n) - Sin(aim(n)) * Rueckstoss(n) ;nen Rückstoß zu erzeugen.


If aim(n) > 360 Then aim(n) = aim(n) - 360 ;Setzt Winkel in den Be-
If aim(n) < 0 Then aim(n) = aim(n) + 360 ;reich von 0-360

If dir(n) > 360 Then dir(n) = dir(n) - 360
If dir(n) < 0 Then dir(n) = dir(n) + 360

Fahren()

If energy(n) <= 0 Then respawn

VehicleZeichnen

AnzeigenZeichnen

Next

Delay 5
;* Kollisionen *****************************************************************


For i = 1 To (p)
For s.schuss = Each schuss

If ((Posx(i)-s\x)^2+(Posy(i)-s\y)^2)^0.5 < 10 Then
energy(i) = energy(i) - 5
If energy(i) <= 0 Then score(s\owner) = score(s\owner) + 1
Delete s
EndIf

Next
Next


;*******************************************************************************
Flip
Wend

End

;*******************************************************************************
;******************************** Funktionen ***********************************
;*******************************************************************************

Function Mark(x,y)
Plot x,y
Line x-10,y,x-5,y
Line x+10,y,x+5,y
Line x,y-10,x,y-5
Line x,y+10,x,y+5
End Function



Function VehicleZeichnen()
If Energy(n) > 0 Then
Local ax,ay,bx,by,cx,cy,dx,dy ;punkte

;Fadenkreutz

Mark(MarkX(n),MarkY(n))

;Gestell
ax = Posx(n) + ( Cos(dir(n)- 30) * 15 )
ay = Posy(n) + ( Sin(dir(n)- 30) * 15 )
bx = Posx(n) + ( Cos(dir(n)-150) * 15 )
by = Posy(n) + ( Sin(dir(n)-150) * 15 )
cx = Posx(n) + ( Cos(dir(n)-210) * 15 )
cy = Posy(n) + ( Sin(dir(n)-210) * 15 )
dx = Posx(n) + ( Cos(dir(n)-330) * 15 )
dy = Posy(n) + ( Sin(dir(n)-330) * 15 )

Line ax,ay,bx,by
Line bx,by,cx,cy
Line cx,cy,dx,dy
Line dx,dy,ax,ay


;Kanone
ax = CanonX(n) + ( Cos(aim(n)- 8) * 20 )
ay = CanonY(n) + ( Sin(aim(n)- 8) * 20 )
bx = CanonX(n) + ( Cos(aim(n)-135) * 3 )
by = CanonY(n) + ( Sin(aim(n)-135) * 3 )
cx = CanonX(n) + ( Cos(aim(n)-225) * 3 )
cy = CanonY(n) + ( Sin(aim(n)-225) * 3 )
dx = CanonX(n) + ( Cos(aim(n)-352) * 20 )
dy = CanonY(n) + ( Sin(aim(n)-352) * 20 )

Line ax,ay,bx,by
Line bx,by,cx,cy
Line cx,cy,dx,dy
Line dx,dy,ax,ay
ElseIf Explrad(n) < 255
Explrad(n) = Explrad(n) + 3

Color 255-explrad(n),255-explrad(n),255-explrad(n)

;oval expx(n)-explrad(n),expy(n)-explrad(n),explrad(n)*2-3,explrad(n)*2-3,0

For a = 0 To 36

altx(n) = expx(n) + Cos(a*10+Explrad(n)/2) * Explrad(n) * 0.7
alty(n) = expy(n) + Sin(a*10+Explrad(n)/2) * Explrad(n) * 0.7

If a > 0 Then Line altx(n),alty(n),neux(n),neuy(n)

neux(n) = expx(n) + Cos(a*10-Explrad(n)) * Explrad(n) * 0.9
neuy(n) = expy(n) + Sin(a*10-Explrad(n)) * Explrad(n) * 0.9


Line altx(n),alty(n),neux(n),neuy(n)

Next

For a = 0 To 36

altx(n) = expx(n) + Cos(a*10-Explrad(n)/2) * Explrad(n) * 1
alty(n) = expy(n) + Sin(a*10-Explrad(n)/2) * Explrad(n) * 1

If a > 0 Then Line altx(n),alty(n),neux(n),neuy(n)

neux(n) = expx(n) + Cos(a*10-Explrad(n)/2) * Explrad(n) * 1.1
neuy(n) = expy(n) + Sin(a*10-Explrad(n)/2) * Explrad(n) * 1.1


Line altx(n),alty(n),neux(n),neuy(n)

Next

Color 255,255,255

EndIf
End Function

Function AnzeigenZeichnen()
Text 10,30*n-13,score(n)
Rect 10,30*n,104,15,0
Rect 12,30*n+2,Energy(n),11,0
End Function

Function Fahren()
Posx(n)=Posx(n)+Cos(dir(n))*speed(n)
Posy(n)=Posy(n)+Sin(dir(n))*speed(n)
End Function

Function Boom(Pl)

For i = 0 To 20
s.schuss = New schuss
s\x = Posx(pl) + Cos(aim(pl)) * 20
s\y = Posy(pl) + Sin(aim(pl)) * 20
s\speed = Rnd (4,6)
s\dir = Rnd(aim(pl)-10,aim(pl)+10)
s\Lifetime = Rnd (80,210)
s\owner = pl
Rueckstoss(pl) = 5
Next

End Function

Function Respawn()

If Explrad(n) = 0 Then
expx(n) = PosX(n)
expy(n) = Posy(n)
Posx(n) = -1000
Posy(n) = -1000
EndIf


If Explrad(n) = 255 Then
PosX(n)=Rnd(10,1014)
PosY(n)=Rnd(10,758)
Energy(n)=100
Explrad(n) = 0
Speed(n) = 0
dir(n) = 0
Aim(n) = 0
If n = 2 Then
driving = 0
Aiming = 0
EndIf
EndIf

End Function

Type schuss
Field x#
Field y#
Field speed#
Field dir#
Field Lifetime
Field owner
End Type


Es gibt jetzt Kollisionen Punktezähler Lebensenergiebalken Explosionen und Respawns, Jetzt steht dem Deathmatch nichts mehr im weg. ja und man ballert jetzt mit ner Shotgun !!!

Der eine Steuert nur mit Maus der Andere Mit Num 4 bis 9 und Leertaste
  • Zuletzt bearbeitet von krux am Di, März 15, 2005 19:18, insgesamt 5-mal bearbeitet

Lord_Vader

BeitragSa, März 12, 2005 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey is zwar net viel aber arbeite weiter dran, die steuerung is keine schlechte idee Wink

Artemis

BeitragSa, März 12, 2005 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
cool!!!!!
nur die mausbewegungen gehen recht schwer!!!

Hagbard

BeitragSa, März 12, 2005 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

super! Ich find die Steuerung spitze, auch mit der Maus.
Bin gespannt...

mfg Blacky
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 15:58, insgesamt einmal bearbeitet

Diablo

BeitragSa, März 12, 2005 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
jau echt nicht schlecht!! Wink
www.pb-software.de.vu

Meine Entwicklungsseite

stfighter01

BeitragSa, März 12, 2005 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
witzige idee die steuerung

aber man müsste noch eine möglichkeit haben den panzer geradeaus weiterzubewegen, und mit der maus zu zielen, dann wärs perfekt
Wink

mfg stfighter
Denken hilft!
 

krux

BeitragSa, März 12, 2005 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
stfighter01 hat Folgendes geschrieben:
witzige idee die steuerung

aber man müsste noch eine möglichkeit haben den panzer geradeaus weiterzubewegen, und mit der maus zu zielen, dann wärs perfekt
Wink

mfg stfighter


Ok ist in Bearbeitung

Ebola33

BeitragSa, März 12, 2005 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Steuerung ist interessant, sehr gut gemacht.
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Waveblue

BeitragSo, März 13, 2005 1:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessante Steuerung, is aber unspielbar für Besitzer älterer Mäuse ohne mittlere Maustaste!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

stfighter01

BeitragSo, März 13, 2005 1:37
Antworten mit Zitat
Benutzer-Profile anzeigen
es gibt keine mäuse ohne mittlerer maustaste mehr!
hats nicht mehr zu geben!

kauf nen neue Laughing

mfg stfighter
Denken hilft!

Digi_

BeitragSo, März 13, 2005 2:08
Antworten mit Zitat
Benutzer-Profile anzeigen
lol? geh mla in nen laden, dort wirst du bestimmt eine für 5euro finden
und schau dir mal die macmaus an, die hat nicht mal zwei maustasten Laughing
How many people can read hex if only you and dead people can read hex?
 

getlose

BeitragSo, März 13, 2005 2:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@stfighter

Zitat:
Interessante Steuerung, is aber unspielbar für Besitzer älterer Mäuse ohne mittlere Maustaste!


man kann nicht davon ausgehen das man sich
mal eben neues computer-equipment kaufen kann,
zumal geld immer knapp ist. :)

stfighter01

BeitragSo, März 13, 2005 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ist schon klar das es mit dem geld nicht überall so rosig aussieht.
aber wenn man einen PC mit > 500MHZ zuhause stehen hat dann zahlt sich eine maus mit 3 tasten schon aus.
jedes spiel jede anwendung unterstützt sie.
Denken hilft!
 

konstantin

BeitragSo, März 13, 2005 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ihr seid doch alle doof. habe erst zu weihnachten eine maus mit scrollrad/mittlerer maustaste bekommen. habe die taste vorher auch noch nie vermisst - und ich arbeite mit 1.5GHz notebook und 1GHz desktop.
 

krux

BeitragDi, März 15, 2005 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
hab den Code nochmal geändert und jetzt is man mit so ner art shotgun bewaffnet

diGGa

GruppenKaspar

BeitragSo, März 20, 2005 3:10
Antworten mit Zitat
Benutzer-Profile anzeigen
cooles game Wink nur kann man aus dem bildschirm rausfahren?

DivineDominion

BeitragSo, März 20, 2005 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe einen Laptop mit Touchpad und daher nur 2 Tasten. Sehr ärgerlich, vor allem beim Scrollen immer Confused
christian.tietze@gmail.com - https://christiantietze.de
macOS

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group