BPS #25: Lesbar Laden - Auswertung

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Xeres

Moderator

Betreff: BPS #25: Lesbar Laden - Auswertung

BeitragMo, Okt 15, 2012 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das war die Aufgabe

Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern.

Diskussion
Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen.

Nächste Aufgabe
In einer Woche wird die Musterlösung nach editiert und in 2 die nächste Aufgabe eingestellt.

Viel Spaß & viel Erfolg!

Musterlösung:
BlitzMax: [AUSKLAPPEN]
SuperStrict
'* Variablen mit Standardwerten:
Global User:String = "None", gfx_w:Int = 256, gfx_h:Int = 256, Vol:Int = 100
'* Die Datei Auslesen:
LoadInfo("File.txt")

'* Anzeigen:
Graphics(gfx_w, gfx_h)
DrawText("+" + User + "+", gfx_w *.5, gfx_h *.5)
DrawText("+" + Vol + "+", gfx_w *.5, gfx_h *.5 + 15)
Flip(0)
WaitKey()
End

Function LoadInfo(FileName:String)
'* Datei öffnen
Local File:TStream = ReadFile(FileName)
'* Falls die Datei nicht geöffnet werden konnte, beenden
If File = Null Then Return

Repeat
'* Aktuelle Zeile einlesen
Local l:String = ReadLine(File)

'* Trenne links vom Gleichheitszeichen.
Local Pos:Int = Instr(l, "=")
Local name:String = Trim(Left(l, Pos - 1))

'DebugLog("+"+name+"+")

'Interpretiere, welche Variable(n) geladen werden sollen
Select name
Case "UserName"
'* Der String ist in Anführungszeichen eingefasst.
'* Wir suchen also beide Positionen:
Local p1:Int = Instr(l, Chr(34))
Local p2:Int = Instr(l, Chr(34), p1 + 1)
'* Dann Schneiden wir die Variable aus der mitte heraus (ohne die Anführungszeichen)
User = Mid(l, p1 + 1, p2 - p1 - 1)
'DebugLog("UserName: "+name)

Case "Graphics"
'* Die Zahlen sind nur durch ein Komma getrennt
Local pos2:Int = Instr(l, ",")
'* Wir trennen vom Gleichheitszeichen zum Komma...
gfx_w = Int(Trim(Mid(l, Pos + 1, pos2 - Pos - 1)))
'* Und nach dem Komma bis zum Ende der Zeile
gfx_h = Int(Trim(Mid(l, pos2 + 1, Len(l) - pos2)))
'DebugLog("Graphics: "+gfx_w+" x "+gfx_h)

Case "Volume"
'* Vom Gleichheitszeichen bis zum Ende der Zeile
Vol = Int(Trim(Mid(l, Pos + 1, Len(l) - Pos)))
'DebugLog("Volume: "+Vol)
End Select

Until File.Eof()
'* Nicht vergessen, die Datei wieder zu schließen!
File.Close()
End Function
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)

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group