Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 20:53

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Abenteuerspiel

Discussion on Abenteuerspiel within the AutoIt forum part of the Coders Den category.

Reply
 
Old 10/14/2010, 23:37   #16
 
lolkop's Avatar
 
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.
lolkop is offline  
Old 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^^
rexfox is offline  
Old 10/14/2010, 23:57   #18
 
lolkop's Avatar
 
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.
lolkop is offline  
Old 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?
rexfox is offline  
Old 10/15/2010, 00:06   #20
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by rexfox View Post
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.
lolkop is offline  
Old 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
rexfox is offline  
Old 10/15/2010, 00:33   #22
 
lolkop's Avatar
 
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...
lolkop is offline  
Old 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
rexfox is offline  
Old 10/15/2010, 00:53   #24
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by rexfox View Post
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.
lolkop is offline  
Old 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..
rexfox is offline  
Old 10/15/2010, 01:18   #26
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by rexfox View Post
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...
lolkop is offline  
Old 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"558396196124)
$Lraum GUICtrlCreateLabel("Du befindest dich im Raum 1"36028014030)
$upGUICtrlCreateButton("Hoch"2321673145BitOR($BS_BITMAP,$WS_GROUP))
GUICtrlSetImage(-1"C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinhoch.bmp", -1)
$down GUICtrlCreateButton("Runter"23222473153BitOR($BS_BITMAP,$WS_GROUP))
GUICtrlSetImage(-1"C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinrunter.bmp", -1)
$left GUICtrlCreateButton("Links"9616013765BitOR($BS_BITMAP,$WS_GROUP))
GUICtrlSetImage(-1"C:\Users\Jan\Pictures\abenteuerbilder\pfeilkleinlinks.bmp", -1)
$right GUICtrlCreateButton("Rechts"30416016165BitOR($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"554387197126)
$Pgegner GUICtrlCreatePic("C:\Users\Jan\Pictures\abenteuerbilder\ork.jpg"2464193257BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Label1 GUICtrlCreateLabel("Ork Level1"1841613236)
GUICtrlSetFont(-1204000"MS Sans Serif")
$Bkampf GUICtrlCreateButton("Kampf"2888016957$WS_GROUP)
$Bfliehen GUICtrlCreateButton("Fliehen"28820016965$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($cid128)
EndFunc

Func Enable
($cid)
    If 
GUICtrlGetState($cid) = 144 Then GUICtrlSetState($cid64)
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=And $x=0 Then
        GUISetState
(@SW_SHOW,$gegner)
        
$pic="C:\Users\Jan\Pictures\abenteuerbilder\goblin_officer.jpg"
        
$monsterlevel=1
        $monstername
="Goblin"
        
EndIf
EndFunc 
rexfox is offline  
Old 10/15/2010, 11:53   #28
 
lolkop's Avatar
 
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.
lolkop is offline  
Old 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
rexfox is offline  
Old 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
rexfox is offline  
Reply




All times are GMT +1. The time now is 20:53.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.