|
You last visited: Today at 07:22
Advertisement
Abenteuerspiel
Discussion on Abenteuerspiel within the AutoIt forum part of the Coders Den category.
10/14/2010, 23:37
|
#16
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
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:
Code:
< Raum > < Raum > < Raum>
< Raum > < Raum > < Raum>
< Raum > < Raum > < Raum>
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.
|
|
|
10/14/2010, 23:43
|
#17
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
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^^
|
|
|
10/14/2010, 23:57
|
#18
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
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
Code:
<gegner1><gegner2><gegner3>
<gegner4><gegner5><gegner6>
<gegner7><gegner8><gegner9>
stell dir das ganze wie ein koordinatensystem vor mit x und y achse...
das ganze könnte man so umsetzn:
Code:
;y = 0
$array[0][0] = "gegner1"
$array[0][1] = "gegner2"
$array[0][2] = "gegner3"
;y = 1
$array[1][0] = "gegner4"
$array[1][1] = "gegner5"
$array[1][2] = "gegner6"
;y = 2
$array[2][0] = "gegner7"
$array[2][1] = "gegner8"
$array[2][2] = "gegner9"
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.
|
|
|
10/15/2010, 00:04
|
#19
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
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?
|
|
|
10/15/2010, 00:06
|
#20
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by rexfox
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.
|
|
|
10/15/2010, 00:15
|
#21
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
wie nur 10 zeilen? die ganzen infos.. wie willste des 10 zeilen machen?? alles hintereinanderschrieben oder was?
bin grad dabei es auszuprobiren so wie ich es denke, und zwar dass ich einzelne gegner hinter das = eines $array
also den ganzen gui dahinterstellen..
verbesser mich ^^ habe wie gsagt noch nie mit arrays gearbeitet
|
|
|
10/15/2010, 00:33
|
#22
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
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...
|
|
|
10/15/2010, 00:47
|
#23
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
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
|
|
|
10/15/2010, 00:53
|
#24
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by rexfox
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.
|
|
|
10/15/2010, 01:13
|
#25
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
okay.. sollte ich das mit den gegnern auch da rein schreibn in else?
und dann imma die bilder und das level ersetzen..
|
|
|
10/15/2010, 01:18
|
#26
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by rexfox
okay.. sollte ich das mit den gegnern auch da rein schreibn in else?
und dann imma die bilder und das level ersetzen..
|
in den else case kommt alles, womit die buttons nichts zu tun haben...
|
|
|
10/15/2010, 01:39
|
#27
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
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
PHP Code:
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3>
$text="1" $level=1 $pic=1 $monsterlevel=1 $monstername=1 Dim $map[3][3] For $y=0 To 2 For $x=0 To 2 $map[$y][$x] = 'Raum'&$y*3+$x+1 Next Next
#Region ### START Koda GUI section ### Form= $karte = GUICreate("Karte", 558, 396, 196, 124) $Lraum = GUICtrlCreateLabel("Du befindest dich im Raum 1", 360, 280, 140, 30) $up= GUICtrlCreateButton("Hoch", 232, 16, 73, 145, BitOR($BS_BITMAP,$WS_GROUP)) GUICtrlSetImage(-1, "C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinhoch.bmp", -1) $down = GUICtrlCreateButton("Runter", 232, 224, 73, 153, BitOR($BS_BITMAP,$WS_GROUP)) GUICtrlSetImage(-1, "C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinrunter.bmp", -1) $left = GUICtrlCreateButton("Links", 96, 160, 137, 65, BitOR($BS_BITMAP,$WS_GROUP)) GUICtrlSetImage(-1, "C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinlinks.bmp", -1) $right = GUICtrlCreateButton("Rechts", 304, 160, 161, 65, BitOR($BS_BITMAP,$WS_GROUP)) GUICtrlSetImage(-1, "C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinrechts.bmp", -1) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form= $gegner = GUICreate("Gegner", 554, 387, 197, 126) $Pgegner = GUICtrlCreatePic("C:\Users\Jan\Pictures\abenteuerbilder\ork.jpg", 24, 64, 193, 257, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) $Label1 = GUICtrlCreateLabel("Ork Level1", 184, 16, 132, 36) GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif") $Bkampf = GUICtrlCreateButton("Kampf", 288, 80, 169, 57, $WS_GROUP) $Bfliehen = GUICtrlCreateButton("Fliehen", 288, 200, 169, 65, $WS_GROUP) GUISetState(@SW_HIDE) #EndRegion ### END Koda GUI section ###
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($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
|
|
|
10/15/2010, 11:53
|
#28
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
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.
|
|
|
10/15/2010, 12:02
|
#29
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
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
|
|
|
10/15/2010, 15:06
|
#30
|
elite*gold: 0
Join Date: Apr 2009
Posts: 85
Received Thanks: 7
|
hätte eine frage : wie speichere ich ein bild in einer variable ? ich speichere einfach immer den pfad mit "", also zb
PHP Code:
$pic="C:\Users\Jan\Pictures\abenteuerbilder\goblin_officer.jpg"
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
|
|
|
All times are GMT +1. The time now is 07:23.
|
|