#SingleInstance force #NoTrayIcon #NoEnv SetBatchLines, -1 ;__________________ Move1 = 3,9 Move2 = 10 Move3 = 1,11 Move4 = 6,16 Move5 = 17 Move6 = 4,18 Move7 = 9,21 Move8 = 10,22 Move9 = 1,7,11,23 Move10= 2,8,12,24 Move11= 3,9,13,25 Move12= 10,26 Move13= 11,27 Move14= 16 Move15= 17 Move16= 4,14,18,28 Move17= 5,15,19,29 Move18= 6,16,20,30 Move19= 17 Move20= 18 Move21= 7,23 Move22= 8,24 Move23= 9,21,25,31 Move24= 10,22,26,32 Move25= 11,23,27,33 Move26= 12,24 Move27= 13,25 Move28= 16,30 Move29= 17 Move30= 18,28 Move31= 23,33 Move32= 24 Move33= 25,31 ;__________________ Gui, Color, D2B48C Gui, Font, s50 cB22222, WebDings Gui, Margin, 5,5 Loop,33 { If A_Index in 1,4,28,31 xPos = m+144 Else If A_Index in 7,14,21 xPos = m Else xPos = +5 Gui, Add, Text, x%xPos% v%A_Index% gClick, g } Gui, Show,,PegS NewGame: Gui, Font, cD3D3D3 GuiControl, Font, 17 open = 17 click = 1 moves = 0 return GuiClose: ExitApp Click: If (A_GuiControl = LastPeg) { Gui, Font, cB22222 GuiControl, Font, %A_GuiControl% LastPeg= click = 1 return } If A_GuiControl in %open% { If click = 1 return If A_GuiControl not in % Move%LastPeg% return skip := Skip(LastPeg,A_GuiControl) If skip in %open% return Gui, Font, cB22222 GuiControl, Font, %A_GuiControl% temp= Loop, Parse, open, `, { count := A_Index If (A_LoopField = A_GuiControl) continue temp .= A_LoopField "," } Gui, Font, cD3D3D3 GuiControl, Font, %LastPeg% GuiControl, Font, %skip% open := temp LastPeg "," skip moves++ If GameOver() { count := 32 - count Gui, +OwnDialogs MsgBox,68,PegS ,% "Game Over.`n`n" "Moves:" A_Tab moves "`nPegs:" A_Tab count "`n`nPlay Again?" IfMsgBox, No ExitApp IfMsgBox, Yes { Gui, Font, cB22222 Loop,33 GuiControl, Font, %A_Index% GoTo, NewGame } } click = 1 return } If click = 2 return click = 2 Gui, Font, c800000 GuiControl, Font, %A_GuiControl% LastPeg := A_GuiControl return Skip(from,to) { skip := from - to If skip in 2,14 skip := from - (skip//2) Else If skip in -2,-14 skip := to + (skip//2) Else If skip in 8,12 { If from < 19 skip := from - (skip//2) -1 Else skip := from - (skip//2) +1 } Else If skip in -8,-12 { If from < 16 skip := to + (skip//2) -1 Else skip := to + (skip//2) +1 } Return, skip } GameOver() { global Loop,33 { If A_Index in %open% continue red := A_Index Loop, Parse, Move%red%, `, If A_LoopField in %open% { skip := Skip(red,A_LoopField) If skip in %open% continue Return, 0 } } Return, 1 }