Radios Type Zerstörung
Übersicht

![]() |
Raiden93Betreff: Radios Type Zerstörung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute,
ich wollte mal gerne Wissen wie ich es hinkriegen könnte Dinge(Types z.b Häuser) die in einem Bestimmten Radius sind zu Löschen ?. Ich habe dazu mal ein kleines Test Spielchen Programmiert: Code: [AUSKLAPPEN] Type HausTyp
Field X,Y End Type Global Haus.HausTyp Graphics 800,600,32,2 SetBuffer BackBuffer () Global FPS_Timer = CreateTimer (60) ;Tesla Global TeslaSTR = 25 Global TeslaX = 400-TeslaSTR Global TeslaY = 300-TeslaSTR Repeat Cls Steuerung () Zeichnen () Tesla () Flip (1) WaitTimer (FPS_Timer) Until KeyHit (1) Function Steuerung () If MouseHit (1) Haus.HausTyp = New HausTyp Haus\X = MouseX()-16 Haus\Y = MouseY()-16 End If End Function Function Zeichnen () ;Tesla Color 255,0,0 Oval TeslaX,TeslaY,TeslaSTR,TeslaSTR ;Häuser For Haus.HausTyp = Each HausTyp Color 120,50,0 Rect Haus\X,Haus\Y,32,32,1 Next End Function Function Tesla () If KeyDown (57) TeslaSTR = TeslaSTR +6 TeslaX = TeslaX -3 TeslaY = TeslaY -3 End If End Function |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
für alle Objekte innerhalb eines best. Radius um MitteX/MitteY gilt:
Code: [AUSKLAPPEN] ( MitteX -ObjektX )^2 + ( MitteY -ObjektY )^2 < Radius^2
bedeutet für dein Spiel: BlitzBasic: [AUSKLAPPEN] Function Zeichnen () |
||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ahh danke super ![]() Code: [AUSKLAPPEN] (Haus\X+16 - MitteX)^2 + ( Haus\Y+16 - MitteY)^2 < Radius^2 Then
|
||
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Midimasters Ansatz ist im Prinzip richtig, ich verstehe allerdings nicht, warum er die Typeinstanzen nicht einfach löscht? :/ Dazu benutzt man generell den Delete ![]() BlitzBasic: [AUSKLAPPEN] ... Was Midimeister macht ist, ein "zerstörtes" Gebäude blau zu zeichnen. Ist beim nächsten Schleifendurchlauf MitteX/MitteY woanders, geht die Information verloren und das Haus wird wieder rötlich gezeichnet. Allgemein: Delete ![]() BlitzBasic: [AUSKLAPPEN] Type A MfG, Darth |
||
Diese Signatur ist leer. |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@darth
![]() und du siehst ja, dass noch "Hinschau-Bedarf" war. Raiden musste nämlich die Genauigkeit noch erhöhen. Dazu war es ja ganz gut, dass die Gebäude nicht DELETEd wurden.... ![]() @raiden93 ich denke mal, du hattest es schon verstanden, wie ich es meinte... ![]() |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nicht ^2 benutzen. Mach sowas mit *, das ist bedeutend schneller. | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich es mit * mache Funktioniert es nicht so^^. Code: [AUSKLAPPEN] (Haus\X+16 - MitteX)*2 + ( Haus\Y+16 - MitteY)*2 < Radius*2)
|
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst auch um ein ^ zu ersetzen 2 mal das selbe multiplizieren, heißt:
Code: [AUSKLAPPEN] (Haus\X+16 - MitteX)*(Haus\X+16 - MitteX) + ( Haus\Y+16 - MitteY)*( Haus\Y+16 - MitteY) < Radius*Radius)
![]() mfg CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@fireballFlame
tja, so ist das wenn man den Unwissenden nur Brocken hinwirft.... @raiden93 dann nimm doch wieder BlitzBasic: [AUSKLAPPEN] (Haus\X+16 - MitteX)^2 |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
^ <- Steht für "hoch"
Hoch 2 zb bedeutet, das Zahl * Zahl gerechnet wird (^3 wäre dann Zahl*Zahl*Zahl) - Steht das ganze in einer klammer, müssten wir auch die Klammern hoch-2 rechnen zb. Vielleicht hat dich die schreibweise verwirrt, lässt sich (zumindest im Matheheft ^^) auch mit x²+y²=z² schreiben ![]() |
||
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ah ok ![]() EDIT: Ich habe mal damit man auch sieht das ich lerne mein Versuch erhöht ![]() Code: [AUSKLAPPEN] Type HausTyp
Field X,Y End Type Global Haus.HausTyp Type BombeTyp Field X,Y Field Durchmesser Field Count, TimerCache End Type Global Bombe.BombeTyp AppTitle "Atombombs" Graphics 800,600,32,2 SetBuffer BackBuffer () Global FPS_TIMER = CreateTimer (60) Repeat Cls Steuerung () Haus_Zeichnen () Bombe_Zeichnen () Bombe_Explodieren () Bombe_Destroy () Flip (0) WaitTimer (FPS_TIMER) Until KeyHit (1) Function Steuerung () If MouseHit (1) Haus.HausTyp = New HausTyp Haus\X = MouseX ()-16 Haus\Y = MouseY ()-16 End If If MouseHit (2) Bombe.BombeTyp = New BombeTyp Bombe\X = MouseX ()-10 Bombe\Y = MouseY ()-10 Bombe\Durchmesser = 20 End If End Function Function Haus_Zeichnen () For Haus.HausTyp = Each HausTyp Color 150,50,0 Rect Haus\X, Haus\Y, 32, 32, 1 Next End Function Function Bombe_Zeichnen () For Bombe.BombeTyp = Each BombeTyp Color 255,0,0 Oval Bombe\X, Bombe\Y, Bombe\Durchmesser, Bombe\Durchmesser, 1 Next End Function Function Bombe_Explodieren () For Bombe.BombeTyp = Each BombeTyp If MilliSecs()>Bombe\TimerCache+1000 Bombe\TimerCache = MilliSecs() Bombe\Count = Bombe\Count +1 End If If Bombe\Count < 3 Bombe\Durchmesser = Bombe\Durchmesser +2 Bombe\X = Bombe\X -1 Bombe\Y = Bombe\Y -1 Else Delete Bombe Exit End If Next End Function Function Bombe_Destroy () For Bombe.BombeTyp = Each BombeTyp Local BombeMitteX = Bombe\X + Bombe\Durchmesser/2 Local BombeMitteY = Bombe\Y + Bombe\Durchmesser/2 Local BombeRadius = Bombe\Durchmesser/2 For Haus.HausTyp = Each HausTyp If (Haus\X+16 - BombeMitteX)^2 + (Haus\Y+16 - BombeMitteY)^2 < BombeRadius^2 Delete Haus Exit End If Next Next End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group