also die idee ist ganz nett... nur wäre es viel lustiger, wenn man nicht nur 2 räume hätte.
das ganze kann man recht schön in ein array packen, und sich so eine einfache 2d welt aufbauen.
zb würde ein $raum[3][3] array schon diese struktur bilden:
hier könnte mann sich dann per vor, zurück, links, rechts durchzappen...
das ganze wäre dann auch deutlich leichter aufzubauen. man könnte alles in einer for schleife laufen lassen, und hätte quasi ein 7-8 zeilen tool :P
desweiteren ist zb das level noch bugged. dadurch das man gegner mehrmals besiegen kann, kann man deutlich höhere level erreichen, es wird aber immer nur level 3 angezeigt.
ich habe von den arrays keine ahnung 0.o und des mit dem level 3 ist absicht , damit man sich ebn net beliebig hoch lvlt .. ausserdem hätte des in dem spiel null sinn XD du musst einfach zuerst zur spinne und dann zum ork XD uh mist spiellösung gegebn XD
könnteste des mit den arrays mir mal per pn erklären oder vllt gleich ein TUT machen für alle? XD nein will dich zu nix zwingen überlegs dir^^
naja das was ich dir gegeben habe, ist ein einfaches 2d array.
du denkst dir halt ne gegner struktur aus, und überträgst die ins array...
nochmal am 3er quadrat beispiel
wenn du jetzt sagst du hast $y und $x als werte in deinem $array[$y][$x], kannst du den buttons dann einfache funktionen wie runter ($y+=1), hoch ($y-=1), rechts ($x+=1) oder links ($x-=1) zuweisen.
im hintergrund lässt du dann einfach eine funktion laufen, die $x und $y checkt, und so den aktuellen raum darstellt.
uff aba da die ganzen gegner reinzumachn ist ordentlich arbeit XD
kp ob ich da bock zu hab XD des wird dann aber 3 mal so lang wie mein momentaner script oder?
uff aba da die ganzen gegner reinzumachn ist ordentlich arbeit XD
kp ob ich da bock zu hab XD des wird dann aber 3 mal so lang wie mein momentaner script oder?
dein script wäre so etwa 10zeilen lang...
der vorteil an der nutzung von arrays ist, das man sich sehr viel schreibarbeit erspart.
habe doch eig schon gesagt wies aussehn müsste...
hier mal an nem kleinen beispiel, wie mans aufbauen könnte:
Code:
Dim $map[3][3]
For $y=0 To 2
For $x=0 To 2
$map[$y][$x] = 'Gegner'&$y*3+$x+1
Next
Next
GUICreate('Map')
$label = GUICtrlCreateLabel('Du befindest dich im Moment'&@CRLF&' im Raum von Gegner1', 130 , 150)
$up = GUICtrlCreateButton('Hoch', 150, 50, 100)
$down = GUICtrlCreateButton('Runter', 150, 260, 100)
$right = GUICtrlCreateButton('Rechts', 280, 150, 100)
$left = GUICtrlCreateButton('Links', 20, 150, 100)
GUISetState()
Global $x=0
Global $y=0
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $up
$y-=1
Case $down
$y+=1
Case $right
$x+=1
Case $left
$x-=1
Case Else
SetButtons()
SetText($label, 'Du befindest dich im Moment'&@CRLF&' im Raum von '&$map[$y][$x])
EndSwitch
WEnd
Func SetText($cid, $text)
If GUICtrlRead($cid) <> $text Then GUICtrlSetData($cid, $text)
EndFunc
Func Disable($cid)
If GUICtrlGetState($cid) <> 144 Then GUICtrlSetState($cid, 128)
EndFunc
Func Enable($cid)
If GUICtrlGetState($cid) = 144 Then GUICtrlSetState($cid, 64)
EndFunc
Func SetButtons()
If $x=0 Then
Disable($left)
Else
Enable($left)
EndIf
If $x=2 Then
Disable($right)
Else
Enable($right)
EndIf
If $y=0 Then
Disable($up)
Else
Enable($up)
EndIf
If $y=2 Then
Disable($down)
Else
Enable($down)
EndIf
EndFunc
habe mal noch eine funktion eingebaut, die dafür sorgt, das man nicht aus dem array hinaus schießen kann...
jetzt müsste man natürlich noch ein gleichgroßes array für die level der gegner einbauen, und das eigene level mit angeben, und schon wäre das ganze realisiert auf einer einfachen 2d map...
okay.. also zuerst überblicke ich einige sachn net XD
also ich wollte es jetzt so lösen das es zu jedem "raum" ein gui , indem man ein bild des monsters , level und kampf, fliehen sieht ,gibt und der rest imma gehidet wird und eine variable die anzeigt , ob der raum schon betreten wurde und dann den raum anders darstellt ..
dieses
PHP Code:
Case Else
SetButtons()
SetText($label, 'Du befindest dich im Moment'&@CRLF&' im Raum von '&$map[$y][$x])
wann wird des denn ausgelöst ? immer oder wann^^
und ich glaub ich übernehm größtenteils deine struktur und baue meine elemente ein XD
okay.. also zuerst überblicke ich einige sachn net XD
also ich wollte es jetzt so lösen das es zu jedem "raum" ein gui , indem man ein bild des monsters , level und kampf, fliehen sieht ,gibt und der rest imma gehidet wird und eine variable die anzeigt , ob der raum schon betreten wurde und dann den raum anders darstellt ..
dieses
PHP Code:
Case Else
SetButtons()
SetText($label, 'Du befindest dich im Moment'&@CRLF&' im Raum von '&$map[$y][$x])
wann wird des denn ausgelöst ? immer oder wann^^
und ich glaub ich übernehm größtenteils deine struktur und baue meine elemente ein XD
wozu soviele guis?
die bilder der gegner kannst du doch auch in einem 2d array speichern...
genau wie die controls wenns sein muss. musst halt immer nur das anzeigen, was gerade aktiv ist...
nun zum Else Case... du hast ja eine switch abfrage auf GuiGetMsg() gesetzt.
dh jedes mal wenn die main While schleife durchlaufen wird, guckt GuiGetMsg() ob eines der in den Cases aufgeführten handles aktiv geworden ist. ist das für eines der fall, so wird die aktion des Cases ausgeführt. wenn keiner der Fälle aktiv war, wird der Else Case ausgeführt.
dh das ganze wird immer aktiv, wenn kein button gedrückt wurde. mit anderen worten ist das die funktion von der ich gesprochen hatte, die im hintergrund immer guckt wo befinde ich mich gerade, und das im gui anzeigt.
also.. ^^
komem net ganz zurecht mit dem bilder und text tauschen
und deine variable $text, die bei deinem script net deklariert war , wollte er bei meinem fortgesetzten script auf einmal deklariert ham.. is wahrscheinlich alles falsch was ich bisher gmacht hab ich poste es trotzdem mal XD
While 1 Switch GUIGetMsg() Case -3 Exit Case $up $y-=1 Case $down $y+=1 Case $right $x+=1 Case $left $x-=1 Case Else SetButtons() SetText($Lraum, 'Du befindest dich im Moment'&@CRLF&' im '&$map[$y][$x]) Setpicandtxt($pic,$monsterlevel,$monstername) EndSwitch WEnd
Func SetText($cid, $text) If GUICtrlRead($cid) <> $text Then GUICtrlSetData($cid, $text) EndFunc
Func Disable($cid) If GUICtrlGetState($cid) <> 144 Then GUICtrlSetState($cid, 128) EndFunc
Func Enable($cid) If GUICtrlGetState($cid) = 144 Then GUICtrlSetState($cid, 64) EndFunc
Func SetButtons() If $x=0 Then Disable($left) Else Enable($left) EndIf If $x=2 Then Disable($right) Else Enable($right) EndIf If $y=0 Then Disable($up) Else Enable($up) EndIf If $y=2 Then Disable($down) Else Enable($down) EndIf EndFunc
Func Setpicandtxt($pic, $monsterlevel, $monstername) If $y=0 And $x=0 Then GUISetState(@SW_SHOW,$gegner) $pic="C:\Users\Jan\Pictures\abenteuerbilder\goblin_officer.jpg" $monsterlevel=1 $monstername="Goblin" EndIf EndFunc
ich verstehe weder warum du jetzt schonwieder mit 2 guis arbeitest, noch warum du schonwieder ohne arrays arbeitest... wollte dir eig nur zeigen, das man das ganze mit arrays deutlich einfacher, übersichtlicher, eleganter und vorallem effizienter lösen kann, als so wie du das da versuchst.
naja wenn du lieber ohne arbeiten willst dann tuh das. ich hab eigentlich schon mehr als notwendig gezeigt wie man das ganze umsetzn kann. sry aber du wirst von mir nicht wie von den anderen dein vorgekautes tool bekommen -.-
bin schon der ansicht, das es reichen sollte, die idee zu erklären. für die umsetzung sollte immer der coder selbst verantwortlich sein.
okay sry^^ aber guis muss ich doch einsetzten wenn ich eine grafische oberfläche haben will^^? ich wollte jetzt mit 2 guis arbeiten, einer, in dem immer das jeweilige monster gezeigt wird oder gesagt wird und einer , indem die buttons zum bewegen sind.. und mit guictrlsetdata halt immer den monstergui ersetzten mit anderen bildern und text..
sind 2 guis^^ naja ich schlag mich mal weiter durch^^ i-wann kann ich es so gut wie der rest XD
aber dann hab ich immer ein leeres bildfenster.. also i-was stimmt da net
in der autoithilfe steht gar nix über bilder als variable speichern und google hat auch net geholfen..
@lolkop ich hoffe so etwas gehört zu den fragen, die man als reativ selbständiger coder fragen darf ^^
hoffe auf antwort und sry wegn doppelpost aber wenn ich nur edite liest es niemand XD