fb:porticula NoPaste
Tutorial in Form eines kommentierten Quelltexts
Uploader: | helloworld |
Datum/Zeit: | 29.07.2010 10:00:00 |
' Kurze Zusammenfassung der wichtigsten
' Freebasic-Anweisungen und -Befehle
' Zeilen die mit einem ' beginnen, sind Kommentare und werden ignoriert,
' darin kann man Beschreibungen einfügen oder "Notizen"
' Etwas in Bindestrichen, z.B. -variablenname- muss im Code
' ersetzt werden (z.B. durch den gewünschten Variablenamen)
'
' Jeder Befehl steht in Freebasic in einer Zeile, will man mehrere in eine Zeile schreiben,
' muss man nach jedem Befehl einen Doppelpunkt einfügen
' -- Variablen --
'
' Variablen speichern einen bestimmten Wert und haben verschiedene Typen
' die wichtigsten sind:
' - "string" für Zeichenketten/Texte
' - "integer" für Ganzzahlen
' - "single" oder "double" für Kommazahlen
' Variablen werden wie folgt definiert:
' dim -variablenname- as -typ-
' ODER:
' dim as -typ- -variablenname-
'
' Beispiel:
dim meintext as string
dim as integer meinezahl
' Variablen kann man mit
' -variablenname- = -wert-
' einen bestimmten Wert zuweisen
meintext = "Hallo!" ' Strings/Texte werden im Code in doppelten Anführungszeichen geschrieben
meinezahl = 5
' natürlich kann man auch damit rechnen, bzw. Texte "zusammenhängen" (mit + oder mit &)
' das funktioniert auch mit Variablen
meintext = "Hallo!"+" Wie gehts?"
meintext = "Text " + meintext
meinezahl = 10
meinezahl = 20 / meinezahl ' der / bedeutet "geteilt durch", möglich sind auch:
' +, -, *,
' -- Befehle aka Funktionen --
'
' Jede Funktion hat einen Namen und optional Argumente, also Werte, die ihr übergeben werden.
' Dabei können die Argumente direkt im Code stehen oder in einer Variable gespeichert sein.
' Beispiel:
print "Hallo!" ' der name der Funktion ist "print", das Argument der Text "Hallo!"
print meintext ' Hier wird als Argument die Variable meintext angegeben
' Wenn eine Funktion mehrere Argumente erwartet, muss man diese durch ein Komma trennen.
' Man kann einzelne davon weglassen, Bsp:
input meintext
' Hier eine Liste an wichtigen Funktionen und ihren Zwecken
print "Text" ' Gibt einen Text am Bildschirm aus
cls ' = Clear Screen. Leert die Textausgabe oder das Grafikfenster
input "Wie heißt du? ", meintext ' gibt einen Text aus, und lässt den Benutzer einen Wert eingeben,
' welcher in der nach dem Komma angegebenen Variablen gespeichert wird
sleep 1000 ' sleep -zeit-, -abbrechbar-
' Macht eine -zeit- millisekunden lange Pause, wenn für -abbrechbar- 1 angegeben wird,
' kann man die Pause mit einem Tastendruck beenden
sleep ' Wenn nichts angegeben wird, wartet sleep einfach auf einen beliebigen Tastendruck
' -- Graphic Funktionen --
'
screen 0 ' screen -modus- (und noch ein paar mehr unwichtige Parameter, die komplett weggelassen werden können)
' Bestimmt die Ausgabeart, modus ist eine zahl. Mögliche Werte:
' 0 - Textmodus (entspricht dem Weglassen der Screen-Anweisung)
' 16 - Grafikfenster 640x480 Pixel
' 19 - Grafikfenster 800x600 Pixel
color 12,2 ' color -vordergrundfarbe-, -hintergrundfarbe-
' Setzt die Vorder und Hintergrundfarbe der Textausgabe (akzeptiert jeweils 0-15)
' wird die Grafikausgabe benutzt kann man auch rgb-Farben mit der rgb-Funktion angeben
'rgb(255,0,0)' rgb(-rotwert-,-grünwert-, -blauwert-)
' Gibt eine Farbe zurück, die einzelnen Werte müssen zwischen 0-255 liegen
' rgb(255,0,0) -> rot, rgb(0,255,0) -> grün, rgb(0,0,0) -> Schwarz, rgb (255,255,255) -> weiß, usw.
pset (10,10), rgb(255,0,0) ' pset (-xposition-,-yposition-), -farbe-
' Setzt den Pixel an der angegebenen Position auf -farbe-
' (die farbe lässt sich zb mit der rgb-Funktion bestimmen, wird sie weggelassen gilt der letzte "color"-aufruf)
line (10,10)-(100,100), rgb(255,0,0) ' line (-startx-, -starty-)-(-endx-, -endy-), -farbe-, -modus-
' zeichnet eine Linie vom Pixel -startx-, -starty- zum Pixel -endx-, -endy-, in -farbe-
' wird modus weggelassen, wird eine Linie gezeichnet,
line (1,1)-(10,10), rgb(255,0,0),B ' setzt man ein B (ohne Anführungszeichen) wird ein Rechteck gezeichnet,
' ein BF zeichnet ein gefülltes Rechteck
' -- Bedingte Ausführung --
'
' mit der if-Abfrage kann man bestimmte Befehle nur dann ausführen, wenn eine Bedingung erfüllt ist
' Die Syntax ist folgende:
'
' if -bedingung- then
' ... (hier kann beliebig viel normaler Code stehen)
' elseif -andere bedingung- then
' ... (hier kann beliebig viel normaler Code stehen)
' else
' ... (hier kann beliebig viel normaler Code stehen)
' end if
'
' Der Besseren Lesbarkeit werden Befehle zwischen den einzelnen Teilen von if/select oder Schleifen
' meist um eine bestimmte Zahl von Leerzeichen oder Tabulatoren eingerückt.
'
' Mit elseif kann man eine weitere Bedingung angeben (auch mehrere elseif, wenn gewünscht)
' Der Code in else wird ausgeführt, wenn weder die if-Bedingung noch die elseif-Bedingungen zutreffen
' Die elseif- und else-Teile können auch weggelassen werden.
' Noch ein Wort zu den Bedingungen, diese können z.B. aus einem Vergleich bestehen,
' die können folgendermaßen aussehen:
'
' -variableodereinText/eineZahl- -vergleichsoperator- -variableodereinText/eineZahl-
'
' Ein paar Beispiele für solche Bedingungen, die zwischen if und then stehen können:
' meinezahl > 2 bedeutet: ist der Wert in meinezahl größer als 2?
' meinezahl >= 2 bedeutet: ist der Wert in meinezahl größer als 2 oder genau 2?
' meinezahl < 2 bedeutet: ist der Wert in meinezahl kleiner als 2?
' meinezahl <= 2 bedeutet: ist der Wert in meinezahl kleiner als 2 oder genau 2?
' meinezahl = 2 bedeutet: ist der Wert in meinezahl genau 2?
' meinezahl <> 2 bedeutet: ist der Wert in meinezahl nicht 2? ( meinezahl kann zb 1 oder 3 sein)
' Für Texte funktioniert nur folgendes:
' meintext = "hallo"
' meintext <> "hallo"
if 5 > 2 then
print "Natürlich ist 5 größer als 2!!!"
end if
meintext = "geheimespasswort"
' hier ein ganz ausführliches Beispiel
if meintext = "geheimespasswort" then
print "Richtiges Passwort!"
elseif meintext = "geheimespasswort2" then
print "Auch dieses Passwort ist richtig!"
else
print "Das Passwort ist falsch!"
end if
' Die 'select case'-Abfrage
'
' select case -variable-
' case -wert1-:
' ...
' case -wert2-:
' ...
' case else:
' end select
'
' Dies ist eine vereinfachte Version einer if .. elseif-Bedingung, mit der man
' eine bestimmte Variable auf viele Werte gleichzeitig prüfen kann.
' Hier das obige if...elseif Beispiel in select case Schreibweise
select case meintext
case "geheimespasswort":
print "Richtiges Passwort!"
case "geheimespasswort2":
print "Auch dieses Passwort ist richtig!"
case else:
print "Das Passwort ist falsch!"
end select
' Wenn man nicht auf Gleichheit prüfen will, kann man IS verwenden
' Beispiel:
select case meinezahl
case 5:
print "Die Zahl ist 5"
case IS > 5:
print "Die Zahl ist größer als 5"
case else:
print "Die Zahl ist weder 5 noch größer als 5"
end select
' -- Schleifen --
'
' Schleifen sind dazu da, etwas sich wiederholen zu lassen.
'
' do
' ...
' loop
' ist die einfachste und wiederholt sich unendlich oft
' mit dem Befehl EXIT kann man sie aber abbrechen, nach dem exit
' muss der Name der Schleife stehen:
'# exit loop
do
print "Ich höre nicht von alleine auf!"
' ein "exit do" hier würde die Schleife abbrechen, so dass sie nur ein einziges Mal durchlaufen wird
exit do
loop
' do ... loop kann auch mit "until" eine Bedingung angeben, dabei läuft die Schleife solange,
' bis die Bedingung zutrifft.
' Nach jedem Schleifendurchlauf wird diese Bedingung überprüft
' folgendes Beispiel läuft 10mal, bis die Schleife beendet wird:
meinezahl = 1
do
print meinezahl ' gib die Zahl aus
meinezahl = meinezahl + 1 ' erhöht meinezahl um 1
' meinezahl += 1 ist eine Abkürzung davon
loop until meinezahl = 10
' diese Schleife wird immer einmal durchlaufen, bevor sie die Bedingung überprüft,
' soll die Schleife nur dann gestartet werden, wenn die Bedingung zutrifft,
' kann man den "until ..." Teil stattdessen hinter das "do" schreiben
meinezahl = 1
do until meinezahl = 10
print meinezahl ' gib die Zahl aus
meinezahl = meinezahl + 1 ' erhöht meinezahl um 1
loop
' Eine Alternative zur do...loop Schleife ist die while-Schleife, dabei wird
' die Schleife solange ausgeführt, bis die Bedingung nicht mehr zutrifft
' Syntax:
'
' while -bedingung-
' ...
' wend
'
' Beispiel:
meinezahl = 1
while meinezahl < 10
print meinezahl
meinezahl += 1
wend
' Die For-Schleife
' Diese Schleife ist ähnlich wie die select-case Abfrage eine Abkürzung
' von den oben gezeigten Schleifen, die eine bestimmte Variable (hier: meinezahl)
' hoch oder runterzählen, bis ein bestimmter Wert erreicht ist
'
' Syntax:
' FOR -variablenname- = -startwert- TO -endwert- STEP -einzelschritt-
' ...
' NEXT
'
' Somit kann die do-until Schleife über obiger while-Schleife so als for-Schleife geschrieben werden:
' Wie man sehen kann, ist das wesentlich kürzer.
' Dabei kann man das "step 1" sogar weglassen, es wird nur benötigt, wenn nicht in Einer-Schritten gezählt wird
for meinezahl = 1 to 10 step 1
print meinezahl
NEXT