Feste Werte als Funktionsparameter?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Feste Werte als Funktionsparameter?

BeitragDo, Nov 18, 2004 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ehm, ich möchte gerne folgendes wissen:
Kann man feste Syntax Werte von BB, einer Funktion als Parameter übergeben und sie später dann direkt ausführen?
Ich denke das geht nicht, aber fragen wollte ich nochmal.
Hier mal nen Pseudo:
Code: [AUSKLAPPEN]

Graphics 640,480
SetBuffer BackBuffer()

Repeat
Cls

Test(End)

Flip
Until KeyHit(1):End

Function Test(befehl)
   befehl ;beenden
End Function    


MFG Very Happy
~ Hey Ho Let's Go ~
 

feider

ehemals "Decelion"

BeitragDo, Nov 18, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das geht nicht.
 

Timo

BeitragDo, Nov 18, 2004 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, geht schon, ist aber sehr langsam. Man kann es mit Strings machen...
Pseudocode:

Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

Repeat
Cls

Test("End")

Flip
Until KeyHit(1):End

Function Test(befehl$)
befehl = upper(befehl)
  select befehl
    case "END"
      end
    case "..."
     ...
  end select
End Function
 

Blitzkrieg Bop

BeitragDo, Nov 18, 2004 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo Timo, das ist klar Very Happy
Ich wollte ja grad verhindern, das der übergebende Parameter als Selektor genutzt wird.
Deswegen sprach ich auch, von der direkten Abfrage.
Zitat:

...und sie später dann direkt ausführen?

Aber trotzdem danke Timo.
Smile
~ Hey Ho Let's Go ~

sbrog

BeitragDo, Nov 18, 2004 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
So was nennt man Funktionspointer, da man in Blitz aber nicht mit Pointern arbeiten kann, geht das nicht. Mit Blitzmax wirds gehen Very Happy
 

Blitzkrieg Bop

BeitragDo, Nov 18, 2004 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach...
Du meinst diese Übergabe, festgelegter Befehle?
~ Hey Ho Let's Go ~

sbrog

BeitragDo, Nov 18, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
keine Ahnung, obs mit festgelegten Befehlen auch geht. Auf jeden Fall kann man einen Pointer auf eine eigene Funktion übergeben ,also

pseudo code :

Code: [AUSKLAPPEN]

befehl(ende)

function befehl(befehl)
     befehl
end function

function ende()
   end
end function




ob man auch einen festgelegten Befehl,benutzen kann, also auch
befehl(end) schreiben kann, weiß ich nicht[/code]
 

Timo

BeitragDo, Nov 18, 2004 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
warum willst du denn eine Function erstellen, die eine (beliebige) Funktion ausführt?

Code: [AUSKLAPPEN]
end

ist doch einfacher als
Code: [AUSKLAPPEN]
dothis(end)

oder? Smile

Jolinah

BeitragDo, Nov 18, 2004 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja vielleicht meint er sowas:

Code: [AUSKLAPPEN]


// Bin mir nicht mehr sicher ob die definition so richtig geschrieben ist ;)
void (*pfnStatus) (void);


pfnStatus = walk;


void walk(void)
{
  if(Player_gesehen == true)
    pfnStatus = attack;
  else if(health <= 50)
    pfnStatus = flee;
}

void attack(void)
{
  Attack();
  pfnStatus = walk;
}

void flee(void)
{
  Lauf_davon();
  if(health > 50) pfnStatus = walk;
}




Wäre zum Beispiel für ne KI etc. sehr praktisch Smile Da kann sich immer der Status ändern und dann wird nur die Funktion aufgerufen auf die der Funktionszeiger zeigt.
  • Zuletzt bearbeitet von Jolinah am Do, Nov 18, 2004 23:42, insgesamt einmal bearbeitet
 

Dreamora

BeitragDo, Nov 18, 2004 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist aktuell nicht möglich, da es in Blitz aktuell weder Delegates noch Funktionspointer gibt. wird aber gemäss angaben mit Blitz Max dann möglich sein
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Blitzkrieg Bop

BeitragFr, Nov 19, 2004 0:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Timo hat Folgendes geschrieben:
warum willst du denn eine Function erstellen, die eine (beliebige) Funktion ausführt?

Code: [AUSKLAPPEN]
end

ist doch einfacher als
Code: [AUSKLAPPEN]
dothis(end)

oder? Smile


Jo, das mit dem End war nur ein simples Beispiel.
Wollte ja nur allgemein wissen, ob das geht! Smile

Jolinah hat Folgendes geschrieben:
Naja vielleicht meint er sowas:

Code: [AUSKLAPPEN]


// Bin mir nicht mehr sicher ob die definition so richtig geschrieben ist ;)
void (*pfnStatus) (void);


pfnStatus = walk;


void walk(void)
{
  if(Player_gesehen == true)
    pfnStatus = attack;
  else if(health <= 50)
    pfnStatus = flee;
}

void attack(void)
{
  Attack();
  pfnStatus = walk;
}

void flee(void)
{
  Lauf_davon();
  if(health > 50) pfnStatus = walk;
}




Wäre zum Beispiel für ne KI etc. sehr praktisch Smile Da kann sich immer der Status ändern und dann wird nur die Funktion aufgerufen auf die der Funktionszeiger zeigt.


Naja...
Ich hatte nur ne fixe Idee für ne hübsche Routine bekommen und da kam mir die Frage auf.

Dreamora hat Folgendes geschrieben:
Das ist aktuell nicht möglich, da es in Blitz aktuell weder Delegates noch Funktionspointer gibt. wird aber gemäss angaben mit Blitz Max dann möglich sein


Okay, danke Dreamora. Nun weiß ich ja bescheid. 8)
Dank an alle und hoffen auf BMax Wink Razz
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group