yxyx ich versuch nicht dasd die figur die bewegbar ist die koordinaten zu bereschen sondern einem festen balken (im script $balken) und will das wenn die figur den balken berührt wieder von vorne ist ich weiss nur nicht wie ich das schreiben soll.
@MrMultibot sei einfach leise wenn du was zu meckern hast behalts für dich ok???
Beiträge von BadBunny
-
-
Nagut wenn das nicht das ist was ich suche , kann mir dann jemand sagen was ich such???!!!
Oder vllt dieses ding was ich suche mal in meinen script einbauen fals das möglich ist.Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GdiPlus.au3>;das include
#include <Misc.au3>
MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit] [autoit][/autoit] [autoit]$x = 0;x und y deklarieren
[/autoit] [autoit][/autoit] [autoit]
$y = 0$Gui = GUICreate("Beispiel", 179, 163, 100,100)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
[/autoit] [autoit][/autoit] [autoit]
$bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
$balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
$ziel = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\ZIEL.gif")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25) and not $x <= 0 ; nach links
$x -= 3
Case _IsPressed(26) and not $y <= 0; nach oben
$y -= 3
Case _IsPressed(27) and $x <= 160 ; nach rechts
$x += 3
Case _IsPressed(28) and $y <= 135 ; nach unten
$y += 3
EndSelect_GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
_GDIPlus_GraphicsDrawImageRect ($buffer1, $ziel, 160, 135, 20,20 )
_GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
Sleep(30)WEnd
[/autoit] [autoit][/autoit] [autoit]Func _end ();die Exit funktion
[/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose ($balken)
_GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
_GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
EndFuncIch hoffe das ist nicht zuviel arbeit das darein zu pflanzen weil sonst braucht ihrs nicht machen.
-
oder muss man dann sogesagt nochmal eine neue "kleinere" bitmap fläsche erstellen und dann so machen dass wenn diese kleinere fläsche "betreten wird" etwas passiert?
-
also dieser befehl
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)ist der buffer aber wie kann ich mit dem einstellen, das bei einer bestimmten stelle / fläsche fals die figur darauf kommt
was passiert??? wie man sehen kann hatte ich diesen buffer auch in meinem script verwendet.
-
ich hab mit das angeschaut und was ich nicht verstanden hab war :
Spoiler anzeigen
[autoit]$iX += $vX
[/autoit]
$iY += $vY
If $iX >= 380 Or $iX <= 0 Then $vX *= -1
If $iY >= 325 Or $iY <= 0 Then $vY *= -1
das ist glaube ich das was ich suche.
Etwas, was einen bestimten befehl ausführt wenn die figur sich an eine rbestimmten stelle befindet oder auf einer bestimmten fläsche -
mir das vllt leicht verständlich zu erklären ... ich hab mir das beispiel angeschaut weiss aber nicht was man dann in dem fall von meinem script eintragen muss...
-
Ich versteh das nicht
-
Also ich weiss wie man so eine Art "spiel" macht aber hab keine Ahung wie das mit dem Buffer funktioniert.
Ich möchte das wenn die "Figur" gegen den Balken trifft man von vorne anfangen mussSpoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GdiPlus.au3>;das include
#include <Misc.au3>
MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit] [autoit][/autoit] [autoit]$x = 0;x und y deklarieren
[/autoit] [autoit][/autoit] [autoit]
$y = 0$Gui = GUICreate("Beispiel", 179, 163, 100,100)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
[/autoit] [autoit][/autoit] [autoit]
$bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
$balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
$ziel = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\ZIEL.gif")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25) and not $x <= 0 ; nach links
$x -= 3
Case _IsPressed(26) and not $y <= 0; nach oben
$y -= 3
Case _IsPressed(27) and $x <= 160 ; nach rechts
$x += 3
Case _IsPressed(28) and $y <= 135 ; nach unten
$y += 3
EndSelect_GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
_GDIPlus_GraphicsDrawImageRect ($buffer1, $ziel, 160, 135, 20,20 )
_GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
Sleep(30)WEnd
[/autoit] [autoit][/autoit] [autoit]Func _end ();die Exit funktion
[/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose ($balken)
_GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
_GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
EndFuncBitte um schnelle Hilfe
-
Weil ich finde nichts wirklich brauchbares im tutoriel (Das anscheinend jetzt wieder größer ist^^)
-
Ähm ich weiss nicht was ihr meint könntet ihr vllt den abschnitt mal reinkopieren?
-
ich weiss... aber wie kann ichs sonst machen ohne so lange komplizierte sachen zu schreiben?
-
So :
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GuiConstants.au3>
#include <GdiPlus.au3>;das include
#include <Misc.au3>
MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit] [autoit][/autoit] [autoit]$x = 0;x und y deklarieren
[/autoit] [autoit][/autoit] [autoit]
$y = 0$Gui = GUICreate("Beispiel", 179, 163, 100,100)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
[/autoit] [autoit][/autoit] [autoit]
$bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
$balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
$ziel = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\ZIEL.gif")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25) and not $x <= 0 ; nach links
$x -= 3
Case _IsPressed(26) and not $y <= 0; nach oben
$y -= 3
Case _IsPressed(27) and $x <= 160 ; nach rechts
$x += 3
Case _IsPressed(28) and $y <= 135 ; nach unten
$y += 3
EndSelect_GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
_GDIPlus_GraphicsDrawImageRect ($buffer1, $ziel, 160, 135, 20,20 )
_GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
Sleep(30)$variable = Pixelsearch (128, 160, 227, 161, 0xFFFFFF)
[/autoit] [autoit][/autoit] [autoit]
If IsArray ($variable)= True Then
$x = 0
$y = 0
EndIf
$variable1 = PixelSearch (263, 261, 281, 279, 0xFFFFFF)
If IsArray ($variable1) = True Then
MsgBox (0,"Win","Du hast es geschafft")
Exit
EndIfWEnd
[/autoit] [autoit][/autoit] [autoit]Func _end ();die Exit funktion
[/autoit] [autoit][/autoit] [autoit][/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose ($balken)
_GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
_GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
EndFunc
Bitte um schnelle lösung weil es soll nicht nur auf meinem Pc spielbar sein.Edit Oscar: Bitte Doppelposts vermeiden (Bearbeiten-Button verwenden)! Spoiler hinzugefügt!
-
PS: das Ziel gibts noch nicht
-
Also ich hab ein wenig rumexperimentiert und hab das jetzt so eingestellt das man wieder bei 0,0 anfängt wenn man den schwarzen balken berührt (hab ich mit pixelsearch gemacht)
aber das geht nur wenn der gui nicht verschoben wird weil die kordinaten vom gesammten desktop sind und nicht nur im gui wie find ich die herraus und wie kann ich einstellen dasd Pixelsearch nach den koordinaten (x, y) im gui guckt???
also Hier ist das was ich bisjetzt gemacht hab :Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GuiConstants.au3>
#include <GdiPlus.au3>;das include
#include <Misc.au3>
MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit] [autoit][/autoit] [autoit]$x = 0;x und y deklarieren
[/autoit] [autoit][/autoit] [autoit]
$y = 0$Gui = GUICreate("Beispiel", 179, 163, 100,100)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
[/autoit] [autoit][/autoit] [autoit]
$bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
$balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25) and not $x <= 0 ; nach links
$x -= 3
Case _IsPressed(26) and not $y <= 0; nach oben
$y -= 3
Case _IsPressed(27) and $x <= 160 ; nach rechts
$x += 3
Case _IsPressed(28) and $y <= 135 ; nach unten
$y += 3
EndSelect_GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
_GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
Sleep(30)$variable = Pixelsearch (128, 160, 227, 161, 0xFFFFFF)
[/autoit] [autoit][/autoit] [autoit]
If IsArray ($variable)= True Then
$x = 0
$y = 0EndIf
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _end ();die Exit funktion
[/autoit] [autoit][/autoit] [autoit][/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose ($balken)
_GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
_GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
EndFuncEdit Oscar: Bitte Doppelposts vermeiden (Bearbeiten-Button verwenden)! Spoiler hinzugefügt!
-
xD freut mich das nicht nur ich dieses problem habe
-
hellboy wie könnte man das denn machen das man mit der "figur" die wände nicht berühren kann?
dann muss man doch so schreiben das er an bestimmte stellen nicht hin kommt oder?wie geht das in "einfacher" verion?
-
Ich ... habs mir anders überlegt xD
boa soviel arbeit :O
respekt^^ danke für den link schnitzel -
ich weiss nicht wie aber.. irgenwie hab ichs verstanden!!! Und wo wir gerade dabei sind, also das is der script (besteht zu 99.99% aus dem aus dem tutoriel nur die bilder sind von mir xD), und wie könnt man das machen z.b. wie bei pacman das man nur bestimte stellen erreischen kann?
z.B. in einem labyrinth ud das da noch andere figuren rumrennen? Bitte um schnelle antworten und sag schonmal danke^^
[autoit]#include <GuiConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <GdiPlus.au3>;das include
#include <Misc.au3>OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit][autoit][/autoit][autoit]$x = 0;x und y deklarieren
[/autoit][autoit][/autoit][autoit]
$y = 0$Gui = GUICreate("Beispiel", 179, 163, 100,100)
[/autoit][autoit][/autoit][autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup() ;Gdi starten
[/autoit][autoit][/autoit][autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.png")
[/autoit][autoit][/autoit][autoit]
$bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\hintergrund.gif")
$height = _GDIPlus_ImageGetHeight($figur)
$width = _GDIPlus_ImageGetWidth($figur)
$verhaelnis = $height / $width
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)While 1
[/autoit][autoit][/autoit][autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case _IsPressed(25) and not $x <= 0; ------------- geändert -------------
$x -= 3
Case _IsPressed(26) and not $y <= 0; ------------- geändert -------------
$y -= 3
Case _IsPressed(27) and $x <= 160; ------------- geändert -------------
$x += 3
Case _IsPressed(28) and $y <= 125; ------------- geändert -------------
$y += 3
EndSelect_GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
[/autoit][autoit][/autoit][autoit]
_GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,10, 10 * $verhaelnis)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
Sleep(30)WEnd
[/autoit][autoit][/autoit][autoit]Func _end();die Exit funktion
[/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
_GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
EndFunc -
okay danke für den link ich versteh da zwar ... nicht sehr viel aber das wird schon danke
-
Hey
Ich habe mir ein paar der treads angeguckt und bin öffters auf sogenannte GDI+ scripts gestoßen und hab gemerkt das es was mit bilder zu tun hat und sachen die sich bewegen etc.könnte mir jemand das pls erklären?
schonmal danke im vorraus