Blitz Basic Funktionen in PB

Anfängerfragen zum Programmieren mit PureBasic.
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Blitz Basic Funktionen in PB

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Blitz Basic Funktionen in BP

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in BP

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Blitz Basic Funktionen in BP

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in BP

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Blitz Basic Funktionen in BP

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Blitz Basic Funktionen in BP

Beitrag 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 
(hab alles, kann alles, weiß alles!!^^)

Bild
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Re: Blitz Basic Funktionen in BP

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Blitz Basic Funktionen in BP

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Blitz Basic Funktionen in BP

Beitrag 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^^
(hab alles, kann alles, weiß alles!!^^)

Bild
Antworten