Seite 1 von 8

Blitz Basic Funktionen in PB

Verfasst: 25.12.2009 18:58
von NathanielBlack
Bin seit gestern(Heillig Abend) stolzer Besitzer von Pure Basic.

Ich habe schon einen Pong-Klon geschrieben und das Beispiel SPiel mit den Fässern abschießen.^^

Ich habe davor immer in Blitz Basic(Demoversion) geproggt und suche momentan das was in BB "Function" hieß in PB.#

Vielleicht kann mir jemand der BB kennt/kann sagen was ich brauche.

mit freundlichen Grüßen,
NathanielBlack, euer neuer Member :D


Typo im Titel korrigiert - Kaeru fecit

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 19:07
von Kaeru Gaman
Willkommen an Board!

in PureBasic wird nicht zwischen Subroutinen und Funktionen unterschieden.
für beides wird Procedure verwendet, die kann auch einen Rückgabewert haben.

Code: Alles auswählen

Procedure Mult( a.d, b.d )
  Protected result
  result = a * b
  ProcedureReturn result
EndProcedure

a = Mult( 3,4 )
Debug a

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 19:17
von NathanielBlack
Danke, leiber Kaeru Gaman :praise:

Geht auch eine "Prozedur" ohne Parameter?

Also eine die nur ein paar If Blöcke hat weiterleitet zu anderen oder eine die If-Blöcke hat und Texte sowie Sachen auf den Buffer malt?

Mit "ProcedureReturn" führe ich eine vorher geschriebene Prozedur aus?


danke im Vorraus,
NathanielBlack

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 19:21
von Kaeru Gaman
nein, mit ProcedureReturn definierst du den Rückgabewert der Procedure und verläßt sie.
wenn eine Proc nichts zurückgeben soll, kannst du den komplett weglassen.
und ja, klar kann eine Proc auch ohne Parameter gebaut werden, gib ihr einfach leere Klammern.
aufgerufen/ausgeführt wird eine Proc durch die Nennung ihres Namens, als wäre es ein neuer Befehl.

je nachdem was du innerhalb einer Proc machen willst, achte drauf, dass sie ihren eigenen Scope hat.
also, variablen von außerhalb sind innerhalb nicht bekannt und umgekehrt.
werte die du brauchst musst du also als parameter übergeben.
einige wenigen, die oft gebraucht werden, kannst du auch als Shared oder Global definieren.

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 21:02
von NathanielBlack
Danke!
Ich komme irgendwie nicht weiter. Wäre nett, wenn mir irgendjemand helfen könnte. Hier mein Code:

Code: Alles auswählen

InitSprite()
InitKeyboard()

OpenScreen(800,600,16,"Test")
Procedure FreeGame()
    ExamineKeyboard()
    ClearScreen(RGB(0,0,0))
    StartDrawing(ScreenOutput())
    DrawText(0,0,"JuhU!")
    StopDrawing()
EndProcedure 

Repeat
FreeGame()

Until KeyboardPushed(1)
End


    
Das mit DrawText hab ich sowieso noch net verstanden.

Und nochmal danke im Vorraus,
NathanielBlack

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 21:36
von Kaeru Gaman
welche PB-Version benutzt du denn?
nur info-halber, damit wir wissen, wie wir am besten weiterhelfen...
das kann jetzt nämlich verschiedene Ursachen haben.

wenn du ne Box geschenkt bekommen hast, wirds wohl die 4.00 sein...?
beim Kauf per Download wärs die aktuelle 4.40

Infos über Versionen und Verkaufswege:
http://www.purebasic.fr/german/viewtopi ... =9&t=10604

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 21:36
von man-in-black
Ich glaub du hast ein Flipbuffers() vergessen



Code: Alles auswählen

Procedure FreeGame()
    ClearScreen(RGB(0,0,0))
    StartDrawing(ScreenOutput())
    DrawText(0,0,"JuhU!")
    StopDrawing()
    FlipBuffers();                    <----------------- Dort sollte er hin
    ExamineKeyboard()
EndProcedure 

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 21:41
von NathanielBlack
Danke, hat endlich geklappt.

Kann mir eigentlich jemand mal sagen, wieso die RGB Farben bei mir net so funzen wie sie sollten?

Code: Alles auswählen

   ClearScreen(RGB(0,0,0))
Ich hab in einem Tut gesehen(Handbuch das bei PB dabei liegt) das das auch so geht:

Code: Alles auswählen

   ClearScreen(0,0,0)
Wieso geht es bei mir net? Der startet das Programm noch nicht einmal, wenn ich das schreibe.

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 21:47
von Kaeru Gaman
yo ich war erst etwas abgelengt von dem DX7/DX9/Screendrawing Problem, deswegen hatte ich nach der Version gefragt.

@MiB
übrigens, es besteht keine notwendigkeit das ExamineKeyboard ans Ende des Durchlauf zu setzen, also solltest du das in deinem Beispiel auch nicht tun.
ändere stets nur das, was fehlerhaft oder problematisch ist.

Nathaniel
das wurde geändert, früher musste man bei Clearscreen die drei Farbkanäle einzeln angeben,
inzwischen verlang der Befehl den selben standartisierten Farbcode wie alle anderen Befehle.
du brauchst nämlich die RGB() funktion nicht unbedingt, du kannst den 24bit Farbwert auch direkt hinschreiben,
oder die Farbe von einer Funktion zurückgeben lassen.

Re: Blitz Basic Funktionen in BP

Verfasst: 25.12.2009 21:51
von man-in-black
@Kaeru Gaman

mhh,

dachte, dass es übersichtlicher ist alle Blöcke (z.B. Mausabfragen, Tastatur...) auch zusammenzuhalten.
is ja auch wurst^^