Map auswahl aber wie?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

NoUser

Betreff: Map auswahl aber wie?

BeitragSa, Jul 18, 2009 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal

hab da folgenes problem.. ich möchte zum start einen ordner auslesen und mir anzeigen lassen was für maps (in dem fall sind das nur bilder) drinne sind. funktioniert auch so halbwegs.. nur etwas sehr umständlich.. naja am betsen ich poste mal meinen ganzen code dann seht ihr ja selbst das problem ^^

BlitzBasic: [AUSKLAPPEN]
AppTitle "Lol xD"
Include "inc/GetImageSize.bb"
.start
Cls
Graphics 400, 300, 32, 2
Color 255, 255, 255
Print "Menü: q = Quit"
Print " "
Print "Verfügbare Karten"
Print ""
Verz = ReadDir("welten/")
Repeat Datei$ = NextFile$(Verz)
If Datei$ = "" Then Exit
If FileType("welten/" + Datei$) = 1 Print Datei$
Forever
CloseDir Verz
Print " "
Print "Bitte ohne " + Chr$( 34 ) + ".png" + Chr$( 34 ) + " angeben"
Print " "
PlayWorld$ = Input( "Welche Karte soll geladen werden? " )
If PlayWorld$ = "q" End

Global XImageSize = GetImageSize( "welten/"+PlayWorld+".png",0 )
Global YImageSize = GetImageSize( "welten/"+PlayWorld+".png",1 )

Graphics XImageSize, YImageSize, 32, 2
SetBuffer BackBuffer( )

sTimer = CreateTimer( 60 )

World = LoadImage( "welten/"+PlayWorld$+".png" )

WorldData = ReadFile( "welten/data/"+PlayWorld$+".txt" )
Global xMouse = ReadLine( WorldData )
Global yMouse = ReadLine( WorldData )
CloseFile WorldData

HidePointer
MoveMouse xMouse, yMouse

Repeat
Text XImageSize / 2, YImageSize / 2, "Linke Maustaste um anzufangen!", 1, 1
Text XImageSize / 2, YImageSize / 2 + 15, "Esc um abzubrechen", 1, 1
Text XImageSize / 2, YImageSize / 2 + 30, "Leertaste um Level neu auszuwählen", 1, 1
If KeyHit ( 1 )
End
Else
If KeyHit ( 57 ) Gosub start
EndIf
Until MouseHit( 1 )

Global farbe
Global r
Global g
Global b

While Not KeyHit( 1 )
Cls
DrawImage World, 0, 0
LockBuffer BackBuffer( )
farbe = ReadPixelFast( MouseX(), MouseY() )
r = ( farbe And $FF0000 ) / $10000
g = ( farbe And $FF00 ) / $100
b = farbe And $FF
UnlockBuffer BackBuffer( )
Color 255, 0, 0
Rect MouseX(), MouseY(), 3, 3
Color 255, 255, 255
Color 255,0,255
If r = 0 And g = 0 And b = 0 Then Delay 1500 MoveMouse xMouse, yMouse
If r = 0 And g = 255 And b = 0 And MouseDown( 1 ) Then xMouse = MouseX() yMouse = MouseY() Text XImageSize/2 , 10, "Save!", 1
If r = 255 And g = 0 And b = 0 Then Text XImageSize/2 , 10, "Gewonnen!", 1 Text XImageSize / 2, 25, "Maustate drücken um weiterzumachen", 1
If r = 255 And g = 0 And b = 0 And MouseHit( 1 ) Then Gosub start
WaitTimer sTimer
Flip 0
Wend
End


ja ich weiß is garantiert nicht der schönste code und wirklich viel ist daran auch nich selbst gemacht.. irgendwie is das meiste aus beispielen zusammen geschustert, aber so will ich wissen wie was funktioniert...

naja jetz zum ursprünglichen problem.. da wo ich das verzeichnis auslese, würde ich am besten mit type irgendwie die sachen speichern um sie besser auslesen zu lassen... aber ich blick types mal garnicht ^^ vielleicht könnte mir da ja jemand helfen Very Happy


ps: bitte nich haun.. is alles sehr sehr n00big xD

achja https://www.blitzforum.de/upload/file.php?id=6282 mal das ganze mit ner beispielkarte Very Happy

Xeres

Moderator

BeitragSa, Jul 18, 2009 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Goto so zur programmsteuerung zu benutzen endet früher oder später im Wirrwar. Packe alle Programmteile in Funktionen und entscheide in der Hauptschleife mit einer Steuervariable, was ausgeführt werden soll.
Die Karten kannst du 1x am Programmstart einlesen, indem zu mit new eine neue Typeinstanz erzeugst wenn die Datei existiert und statt mit Print den Dateinamen auszugeben, speicherst du den im Type ab.
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)
 

NoUser

BeitragSa, Jul 18, 2009 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das mit goto/gosub weiß ich.. aber ich habs irgendwie nich gebacken bekommen das ganze zeuch in ne schleife zu packen so das es auch wie gewünscht funktioniert...

und das mit den Types kapier ich ja eben leider vorne wie hinten nicht...

würd mich freun wenn sich jemand dazu erbarmt den code so zu richten wie er (in euren augen) gehört... hoffe mal das ich das dann vllt. so kapiere ^_^'

Xeres

Moderator

BeitragSa, Jul 18, 2009 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche es doch mal nach diesem System:
BlitzBasic: [AUSKLAPPEN]
Local timer = CreateTimer(60)

Const Game_State_MENU=0, Game_State_PLAY=1
Global Game_State=Game_State_MENU ;Das Spiel startet im Menu

Repeat

Select Game_State
Case Game_State_MENU
Run_Menu()
Case Game_State_PLAY
Run_Play()
End Select

Flip(0)
WaitTimer(timer)
Cls
Until KeyHit(1)
End


Function Run_Menu()

End Function

Function Run_Play()

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)
 

NoUser

BeitragSa, Jul 18, 2009 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
ich dachte das geht nicht in der hauptschleife die auflösung zu ändern?

aber wenn ich in de menu funktion erst graphics ermittle wie soll das funktionieren?

Xeres

Moderator

BeitragSa, Jul 18, 2009 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Was hindert dich, den Grafikmodus vor der Hauptschleife zu setzen?

Edit:
Wenn du natürlich in dem Menü unbedingt einen anderen Grafikmodus brauchst, wechselst du den, wenn du auch den Game_State änderst. Die Bilder musst du dann auch immer neu laden.
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)

hazumu-kun

BeitragSa, Jul 18, 2009 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man bei Loadimage als flag 1 setzt bleiben die Bilder auch nach ändern der Auflösung erhalten.
Sind aber bei Änderungen (Drehen, Skalieren, usw.) sehr langsam.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Nicdel

BeitragSa, Jul 18, 2009 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Was allerdings nur auf BlitzPlus zutrifft...
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

NoUser

BeitragMo, Jul 20, 2009 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ok.. ich denk mal ich hab mich da vllt. falsch ausgedrückt. sorry.
also mit

BlitzBasic: [AUSKLAPPEN]
Verz = ReadDir("welten/") 
Repeat Datei$ = NextFile$(Verz)
If Datei$ = "" Then Exit
If FileType("welten/" + Datei$) = 1 Print Datei$
Forever
CloseDir Verz
Print " "
Print "Bitte ohne " + Chr$( 34 ) + ".png" + Chr$( 34 ) + " angeben"
Print " "
PlayWorld$ = Input( " " )

Global XImageSize = GetImageSize( "welten/"+PlayWorld+".png",0 )
Global YImageSize = GetImageSize( "welten/"+PlayWorld+".png",1 )

Graphics XImageSize, YImageSize, 32, 2


wird ja die größe meiner Graphics ermittelt.. was ja ausserhalb der hauptschleife wenn ich da mit goto zurückspringe auch wunderbar funktioniert, aber wenn ich das innerhalb der hauptschleife reinmache kann doch die Graphics nicht mehr während das programm läuft geändert werden, oder? Hab das zumindestens gedacht mal irgendwo gelesen zu haben.

mpmxyz

BeitragMo, Jul 20, 2009 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, das funktioniert schon.
Du musst nur daran denken, dass jedes Bild, das du geladen hattest, bei "Graphics" aus dem Speicher gelöscht wird.
Das heißt, dass du alle Bilder, die du aber weiterhin brauchst, neu laden musst.
Wenn man aber mit dieser Bedingung klar kommt, ist es wunderbar möglich, die Auflösung im Spiel zu ändern.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group