Problem mit Boss und Levelwechsel

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Megamag

Betreff: Problem mit Boss und Levelwechsel

BeitragSo, Jun 08, 2008 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin's (schon) wieder.
Ich habe einige Probleme. In meinem Space-Shooter
möchte ich einen Boss einbauen. Das Problem ist, dass
zwei Gegner am Ende des Levels aus dem Bild fliegen. Ich habe
Code: [AUSKLAPPEN]
if entityx(e1\ent)>20 e1\boss=true

in der Update-Funktion. Die Frage:
Wie kriege ich die Variable "boss" aus der Funktion, um mit ihr
im Hauptprogramm arbeiten zu können?

Bevor der Boss kommt muss im Level alles zerstört werden.
Dazu habe ich die Funktion
Code: [AUSKLAPPEN]
Function destroy()
for s.T_star = Each T_star
freeentity s\ent : delete s
next

for e.Enemy = Each Enemy
freeentity e\ent : delete e
next

;und so weiter für alle Types
end function

Da löscht sich aber über haupt gar nichts. Aber warum?
Danke schonmal im Voraus für Antworten.

Xeres

Moderator

Betreff: Re: Problem mit Boss und Levelwechsel

BeitragMo, Jun 09, 2008 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz4D hat Folgendes geschrieben:
Wie kriege ich die Variable "boss" aus der Funktion, um mit ihr
im Hauptprogramm arbeiten zu können?
Mh... ganz simpel mit Return boss, oder halt gleich Return True.

Blitz4D hat Folgendes geschrieben:
Da löscht sich aber über haupt gar nichts.
Teste, ob die Funktion überhaupt aufgerufen wird, zb. mit debuglog.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Megamag

BeitragMo, Jun 09, 2008 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber wenn ich Return mache, kommt nichts.
Code: [AUSKLAPPEN]
;Codestück zur Veranschaulichung
Graphics3D 640,480
SetBuffer BackBuffer()
Boss = False

While Not KeyHit(1)

text_Func()

Flip
UpdateWorld
RenderWorld
Text 0, 0, "Das ist Boss: " + Boss
Wend
End

Function text_Func()
Boss = True
Return Boss
End Function

Boss ist aber immer 0 (also False).

Und wegen Debuglog:
Wie kann ich mir das anschauen?

Xeres

Moderator

BeitragMo, Jun 09, 2008 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar geht das nicht, wenn du den zurückgelieferten Wert nirgendwo speicherst...
Boss = text_Func()

Achja, in Vollbild wirds Stop besser tun:
Function destroy()
Stop
; [Code]
end function

Das unterbricht das Programm sobald die Funktion aufgerufen wird...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Megamag

BeitragMo, Jun 09, 2008 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ich hab's jetzt so:

Code: [AUSKLAPPEN]

;Die EnemyFunktion
if entityx(cu\ent)>60 Boss1(True)
end function

;Die Boss Funktion
Function Boss1(value)
Return value
End Function

;Hauptschleife
Boss = Boss1(False)


Aber es wird immer nur False angegeben.

Xeres

Moderator

BeitragMo, Jun 09, 2008 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja auch logisch.
Ich weiß ja nicht was du mit der Funktion Boss1 erreichen möchtest, aber sie gibt immer den Wert zurück den du übergeben hast. Vielleicht solltest du eher eine globale Steuervariable benutzen?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Megamag

BeitragMo, Jun 09, 2008 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe keine Ahnung, was ich tun soll.
Ich habe zwei gleiche Types, und wenn einer (beide)
aus dem Raum sind, sprich ihr X größer ist als 20,
soll dann im Hauptprogramm Boss auf True gesetzt werden.
Und ich weiß einfach nicht, wie...

BladeRunner

Moderator

BeitragMo, Jun 09, 2008 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
aha = test(5)
print aha

function test(bla)
    return 5*bla
end function


Wie dir schon gesagt wurde: wenn Du einen Rückgabewert verarbeiten willst musst Du ihn auch speichern.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Megamag

BeitragMo, Jun 09, 2008 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber die Funktion Boss() soll
ja nur True wiedergeben, wenn die X größer
ist als 20 (siehe oben). Die andere Zeit wird False
wiedergegeben. Das ist das Problem.

Firstdeathmaker

BeitragMo, Jun 09, 2008 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function Boss(x)
 if x>20 return true
end function
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

BladeRunner

Moderator

BeitragMo, Jun 09, 2008 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
x=5
print boss(x)
x=25
print boss(x)


function boss(wert)
    if wert >20 then
       return true
    else
       return false
    endif
end function

Wo liegt das Problem?
Solange Du einen integer zurückgibst ist das ohne Probleme lauffähig. Nur wenn Du was anderes zurückgeben willst musst Du im Functíon-Header angeben was zurückgegeben werden soll
function bla$(gna) gibt einen String zurück
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group