theguy0000 Posted November 21, 2006 Share 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 Link to comment Share on other sites More sharing options...
dandymcgee Posted November 21, 2006 Share Posted November 21, 2006 Lol, your brain sure is dead man.... line 152 says "EndIf" not "EndFunc" there's your error . - Dan [Website] Link to comment Share on other sites More sharing options...
theguy0000 Posted November 21, 2006 Author Share 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 Link to comment Share on other sites More sharing options...
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