theguy0000 Posted November 21, 2006 Posted November 21, 2006 I'm sure it's something obvious, but my brain is dead right now. expandcollapse popup#include <GUIConstants.au3> #include <Array.au3> Global $cHoverID[2], $Global_cHID = 0, $cHoverActive = 0, $cHClicked = 0, $White = 1 #include <GUIConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("AForm1", 122, 74, 290, 110) $ButtonW = GUICtrlCreateButton("White", 16, 8, 89, 25, 0) $ButtonB = GUICtrlCreateButton("Black", 16, 40, 89, 25, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $ButtonB $play_color = "black" $opponent = "white" ExitLoop Case $ButtonW $play_color = "white" $opponent = "black" ExitLoop EndSwitch WEnd Global $squares[65] Global $MarblePics[65] $gui = GUICreate("AutoIt Reversi", 600, 595) For $y = 1 To 8 For $x = 1 To 8 $i = (8* ($y - 1)) + $x $squares[$i] = "" $MarblePics[$i] = GUICtrlCreatePic("square.bmp", coord($x), coord($y), 60, 60) _ControlHover(2, $gui, $MarblePics[$i]) $squares[$i] = "" Next Next PlaceMarble("white", 3, 3) PlaceMarble("black", 3, 4) PlaceMarble("black", 4, 3) PlaceMarble("white", 4, 4) Global $square_buttons[65] GUISetState() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop $Over = _ControlHover(0, $gui) If $Over = 1 Then $TempID = @extended For $i = 1 To 64 If $MarblePics[$i] = $TempID Then If $squares[$i] = "" Then GUICtrlSetImage($TempID, "hover.bmp") $squares[$i] = "hover" EndIf Else If $squares[$i] = "hover" Then GUICtrlSetImage ($MarblePics[$i], "square.bmp") $squares[$i] = "" EndIf EndIf Next EndIf $Over2 = _ControlHover(1, $gui) If $Over2 = 1 Then $TempID2 = @extended For $i = 1 To 64 If $MarblePics[$i] = $TempID2 Then If $squares[$i] = "hover" Then PlaceMarble ($play_color, squareX($i), squareY($i)) EndIf EndIf Next EndIf WEnd Func coord($num) If $num < 1 Or $num > 8 Then SetError(1) Return 0 EndIf Return ($num * 60) + 5 EndFunc ;==>coord Func PlaceMarble($color, $x, $y) Local $square = (8* $y) + $x+1 If $square < 1 Or $square > 64 Then Return 0 $MarblePics[$square] = GUICtrlSetImage($MarblePics[$square], $color & ".bmp") GUICtrlSetState(-1, $GUI_SHOW) AddTaken($squares[$square], 1) $squares[$square] = $color Capture ($x, $y) Return 1 EndFunc ;==>PlaceMarble Func ReverseMarble($x, $y) Local $square = (8*($y - 1))+$x If $squares[$square] = "" Then Return 0 Switch $squares[$square] Case "white" PlaceMarble("black", $x, $y) Case "black" PlaceMarble("white", $x, $y) EndSwitch EndFunc ;==>ReverseMarble Func squareX($num) $ret = 0 Do $num -= 1 $ret += 1 Until Round($num / 8) = $num / 8 Return $ret EndFunc ;==>squareX Func squareY($num) $num -= squareX($num) Return ($num / 8) EndFunc ;==>squareY Func Capture ($x, $y) Local $X2, $Y2, $num, $capt_num, $num2, $capt_num2 $capt_num=0 ;capture up If $y > 2 Then $Y2 = $y-1 $X2 = $x $num = (8*($Y2-1))+$X2 If $squares[$num] = $opponent Then For $i = $y-2 To 1 $num2 = (8*($i-1))+$X2 If $squares[$num2] = $play_color Then $capt_num2 = $y-$i-1 For $ii = $y-1 To $y-$capt_num2 ReverseMarble ($x, $y) $capt_num += 1 Next EndIf Next EndIf EndIf EndIf ; AddTaken by Valuater Func AddTaken($place, $add = 0) For $i = 1 To UBound($squares) -1 If $squares[$i] = $place Then Return SetError( -1, 0) If $squares[$i] = "" And $add = 1 Then $squares[$i] = $place Return SetError( 1, 1) EndIf If $squares[$i] = "" Then ExitLoop Next Return SetError( 2, 2) EndFunc ;ControlHover by Valuater #region _ControlHover; ;=============================================================================== ; UDF Name: _ControlHover.au3 ; ; Version v1.2.0 Sept 25, 2006, built with Autoit 3.2.1.3 ; ; Author: Valuater, Robert M ; ; Contributions: marfdaman(Marvin), RazerM, Quaizywabbit(AnyGUI). ; ; Email: <Valuater [at] aol [dot] com> ; ; Use: Enable Mouse/Hover Over Control Events ;=============================================================================== ;=============================================================================== ; ; Function Name: _ControlHover() ; Description: Enable Mouse/Hover Over Control Events ; Find if Mouse is over a known control ; Find if a Mouse has Clicked on a known control ; Add, Remove, or Verify the control within the known control list ; Parameter(s): $cH_Mode [default] 0 = Find if Mouse is over a known control ; [optional] 1 = Find if a Mouse has Clicked on a known control ; 2 = Add a control to the known control list ; 3 = Remove a control from the known control list ; 4 = Verify a control is in the known control list ; $cH_hWin [optional] - Window handle as returned by GUICreate() ; [preferred] - Window handle to save CPU usage and speed of _ControlHover() ; - and Avoid array errors for "non-active window" ; $cH_hCntrl [required] - Control ID to Add, Remove, or Verify the control within the known control list ; [not used] - to find if a mouse is over or has clicked on a known control ; Requirement(s): #include<Array.au3> ; Return Value(s): ; $cH_Mode 0 or 1 ; On Success Return = 1 @error = 0, @extended = Current known control ; While Success Return = "" ; On Failure: Return = 0 @error = 1, @extended = Last known control ; $cH_Mode 2, 3, or 4 ; On Success Return = 1 @error = 0, @extended = Function's return line number ; All $cH_Mode's ; On Error: Return = Description of the error ; @error = -1, @extended = Function's return line number ; Author(s): Valuater, Robert M ; ;=============================================================================== Func _ControlHover($cH_Mode = 0, $cH_hWin = "", $cH_hCntrl = "") Local $cH_i, $cH_Data If Not @Compiled Then Opt("TrayIconDebug", 1) ; 1=debug line info Select Case $cH_Mode = 0 Or $cH_Mode = 1 ; 0 = Check if mouse is over a control, 1 = Check if mouse clicked on a control ; Developer did not add any controls before the function mode 0 or 1 was called If UBound($cHoverID) = 2 Then ConsoleWrite("*** _ControlHover() Error *** " & @CRLF & "No Controls were Added" & @CRLF) If $cH_hWin = "" Then $cH_Data = GUIGetCursorInfo() ; Get cursor data from the active window Else If Not WinActive($cH_hWin) Then Return SetError(-1, 1, "Window not active") ; Dont waist CPU if the known window is not active $cH_Data = GUIGetCursorInfo($cH_hWin) ; Get cursor data from the known window EndIf If Not IsArray($cH_Data) Then Return SetError(-1, 2, "Window not found") ; A readable GUI window was not found For $cH_i = 1 To UBound($cHoverID) - 1 ; Search the known controls for the currently hovered control If $cH_Data[4] = $cHoverID[$cH_i] Then ; Mouse is over a current known control ; Mode 1 - check for a Click on a known control If $cH_Mode And $cH_Data[2] = 1 And Not $cHClicked Then $cHClicked = 1 Return SetError(0, $cHoverID[$Global_cHID], 1) ; Mouse clicked on current control ElseIf $cH_Mode And $cH_Data[2] <> 1 And $cHClicked Then $cHClicked = 0 Return SetError(1, $cHoverID[$Global_cHID], 0) ; Release clicked current control EndIf If $cH_Mode Then Return SetError("", "", "") ; Mouse is still over last known control and may click again ; Mode 0 & 1 If $cHoverID[$cH_i] = $cHoverID[$Global_cHID] And $cHoverActive Then Return SetError("", "", "") ; Mouse is still over last known control If $cHoverActive Then $cHoverActive = 0 Return SetError(1, $cHoverID[$Global_cHID], 0) ; Release Active - Mouse is over a new known control EndIf $cHoverActive = 1 $cHoverID[$Global_cHID] = $cHoverID[$cH_i] ; Re-set the current control to the new known control Return SetError(0, $cHoverID[$Global_cHID], 1) ; Mouse is over the new-current known control EndIf Next ; hover control not found in the known control list If $cHoverActive Then If $cH_Mode And $cHClicked Then ; check - Release clicked current control $cHClicked = 0 Return SetError(1, $cHoverID[$Global_cHID], 0) ; Release clicked current control EndIf If $cH_Mode Then Return SetError("", "", "") ; Protect the release of the active control $cHoverActive = 0 Return SetError(1, $cHoverID[$Global_cHID], 0) ; Release Active - Mouse is over a new unknown control EndIf If $cH_Mode And $cHClicked Then $cHClicked = 0 Return SetError(1, $cHoverID[$Global_cHID], 0) ; Release clicked current control EndIf Return SetError("", "", "") Case $cH_Mode = 2 ; Add the new control to the known control list If $cH_hCntrl = "" Then Return SetError(-1, 8, "Control not provided #1") ; The control ID was not given _ArrayAdd($cHoverID, $cH_hCntrl) ; Add the control to the known control array If @error Then Return SetError(-1, 9, "Control not added") ; Control not added to the known control list Return SetError(0, 10, 1) ; ; Control was added to the known control list Case $cH_Mode = 3 ; Remove the control from the known control list If $cH_hCntrl = "" Then Return SetError(-1, 11, "Control not provided #2") ; The control ID was not given _ArrayDelete($cHoverID, $cH_hCntrl) ; Delete the control from the known control array list If @error Then Return SetError(-1, 12, "Control not removed") ; Control not deleted from the known control list Return SetError(0, 13, 1) ; Control was deleted from the known control list Case $cH_Mode = 4 ; Verify if control is in the known control list If $cH_hCntrl = "" Then Return SetError(-1, 14, "Control not provided #3") ; The control ID was not given _ArraySearch($cHoverID, $cH_hCntrl) ; Search to verify if control is in the known control list If @error Then Return SetError(-1, 15, "Control not found") ; Control was not found in the known control list Return SetError(0, 16, 1) ; Control was found in the known control list Case Else Return SetError(-1, 17, "$cH_Mode incorrect") ; $cH_Mode has an incorrect value EndSelect Return SetError(-1, 18, "Unknown Error") ; Error is Unknown EndFunc ;==>_ControlHover #endregion I get a syntax error line 153, which I can't figure out, since line 153 only has "EndFunc"... The cake is a lie.www.theguy0000.com is currentlyUP images.theguy0000.com is currentlyUP all other *.theguy0000.com sites are DOWN
dandymcgee Posted November 21, 2006 Posted November 21, 2006 Lol, your brain sure is dead man.... line 152 says "EndIf" not "EndFunc" there's your error . - Dan [Website]
theguy0000 Posted November 21, 2006 Author Posted November 21, 2006 Lol, your brain sure is dead man.... line 152 says "EndIf" not "EndFunc" there's your error . LOL thanks The cake is a lie.www.theguy0000.com is currentlyUP images.theguy0000.com is currentlyUP all other *.theguy0000.com sites are DOWN
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now