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
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
Geh ma hier drauf http://www.autoit.de/index.php?page=Thread&threadID=20612
okay danke für den link ich versteh da zwar ... nicht sehr viel aber das wird schon danke
Kein ding
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>
#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
$y = 0
$Gui = GUICreate("Beispiel", 179, 163, 100,100)
GUISetState(@SW_SHOW)
_GDIPlus_Startup() ;Gdi starten
[/autoit][autoit][/autoit][autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.png")
$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
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)
_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
_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
Was meinst du genau mit bestimmte stellen?
Du könntest dir evtl noch Bilder für Wände suchen diese dann ins script einfügen und dann mit Kollisionen arbeiten aber ich weis nicht wenn das dein
erstes GDI+ script ist dann les dich lieber noch etwas ein
MfG Hellboy
Ich ... habs mir anders überlegt xD
boa soviel arbeit :O
respekt^^ danke für den link schnitzel
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?
Tehe genau soweit bin ich jetzt auch xD bin auch neu in GDI+
Ich verweise mal auf diesen Thread weil das denk ich aufs gleiche hinausläuft
MfG Hellboy
xD freut mich das nicht nur ich dieses problem habe
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 :
#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
$y = 0
$Gui = GUICreate("Beispiel", 179, 163, 100,100)
GUISetState(@SW_SHOW)
_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
$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
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)
_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)
If IsArray ($variable)= True Then
$x = 0
$y = 0
EndIf
WEnd
Func _end ();die Exit funktion
_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
Edit Oscar: Bitte Doppelposts vermeiden (Bearbeiten-Button verwenden)! Spoiler hinzugefügt!
PS: das Ziel gibts noch nicht
So :
#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
$y = 0
$Gui = GUICreate("Beispiel", 179, 163, 100,100)
GUISetState(@SW_SHOW)
_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
$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
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)
_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)
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
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit]Func _end ();die Exit funktion
_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!
Pixelsearch ist wohl die unsicherste und langsamste Methode...
ich weiss... aber wie kann ichs sonst machen ohne so lange komplizierte sachen zu schreiben?
Dazu gibt es im Tutorial ganz am Ende des Spiele Parts ein Beispiel.
Wenn dus nicht verstehst nochmal fragen.
mfg Ubuntu
Zitatich weiss... aber wie kann ichs sonst machen ohne so lange komplizierte sachen zu schreiben?
Du kannst die Koordinaten überprüfen ;). Oder die Region Methode verwenden, aber das verstehst du ja nicht.
Ist das nicht in Ubuntus Tutorial beschrieben?
Dazu gibt es im Tutorial ganz am Ende des Spiele Parts ein Beispiel.
Ja es ist da beschrieben
mfg Ubuntu
Ähm ich weiss nicht was ihr meint könntet ihr vllt den abschnitt mal reinkopieren?