meinste so??
Spoiler anzeigen
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#Include <Misc.au3>
HotKeySet("{ESC}", "ende")
[/autoit] [autoit][/autoit] [autoit]; Hauptvariablen-------------------------
$f = 0
Global $guix, $guiy
Global $fischx = 200, $fischy = 300, $movex = 10, $movey = 10
; ---------------------------------------
; Guierstellung--------------------------
$gui1 = GUICreate ("Aquarium",(@DesktopWidth), (@DesktopHeight-65),0,0)
GUISetBkColor(0x0000ff,$gui1)
$hintergrund = GUICtrlCreatepic("bilder\hintergrund.gif",0,0,@DesktopWidth,@DesktopHeight-50)
$fisch1 = GUICtrlCreatepic("bilder\fischrechts1.gif",$fischx,$fischy, 120,100)
$futter = GUICtrlCreatePic("bilder\futter.gif",-200,-200,100,100)
GUISetState (@SW_SHOW)
; ---------------------------------------
AdlibEnable("move_fisch", 20)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Hauptfunktion des Guis-----------------
While 1
$c = GUIGetCursorInfo()
$f1pos = ControlGetPos( "Aquarium", "", $fisch1)
$fupos = ControlGetPos( "Aquarium", "", $futter)
$msg = GUIGetMsg()
_RectCollision($f1pos[0], $f1pos[1], $f1pos[0]+200, $f1pos[1]+300, $fupos[0], $fupos[1], $fupos[0]+100, $fupos[1]+100)
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
If _IsPressed("01") and $f = 1 Then
GUICtrlDelete($futter)
$futter = GUICtrlCreatePic("bilder\futter.gif",$c[0]-40,$c[1]-40,100,100)
$f = 1
ElseIf _IsPressed("01") and $f = 0 then
$futter = GUICtrlCreatePic("bilder\futter.gif",$c[0]-40,$c[1]-40,100,100)
$f = 1
Endif
Wend
; ---------------------------------------
; Funktionen-----------------------------
Func ende()
Exit
EndFunc
Func move_fisch()
Select
Case $fischx < 0
GUICtrlSetImage($fisch1,"bilder\fischrechts1.gif")
$movex = Random(0, 10, 1)
Case $fischx > @DesktopWidth - 120
GUICtrlSetImage($fisch1,"bilder\fischlinks1.gif")
$movex = Random(-10, 0, 1)
EndSelect
Select
Case $fischy < 0
$movey = Random(0, 10, 1)
Case $fischy > @DesktopHeight - 100
$movey = Random(-10, 0, 1)
EndSelect
$fischx = $fischx + $movex
$fischy = $fischy + $movey
GUICtrlSetPos($fisch1, $fischx, $fischy)
EndFunc
; ---------------------------------------
;noch unwichtig-------------------------
Func _RectCollision($Rect1X1, $Rect1Y1, $Rect1X2, $Rect1Y2, $Rect2X1, $Rect2Y1, $Rect2X2, $Rect2Y2)
; Prog@ndy
Local Const $tagRECT = "long;long;long;long"
Local $1 = DllStructCreate($tagRECT)
Local $2 = DllStructCreate($tagRECT)
Local $3 = DllStructCreate($tagRECT)
DllStructSetData($1, 1, $Rect1X1)
DllStructSetData($1, 2, $Rect1Y1)
DllStructSetData($1, 3, $Rect1X2)
DllStructSetData($1, 4, $Rect1Y2)
DllStructSetData($2, 1, $Rect2X1)
DllStructSetData($2, 2, $Rect2Y1)
DllStructSetData($2, 3, $Rect2X2)
DllStructSetData($2, 4, $Rect2Y2)
Local $r = DllCall("User32.dll", "int", "IntersectRect", "ptr", DllStructGetPtr($3), "ptr", DllStructGetPtr($1), "ptr", DllStructGetPtr($2))
If @error Then Return SetError(1, 0, 0)
Return $r[0] <> 0
EndFunc ;==>_RectCollision