Topher Posted May 21, 2012 Posted May 21, 2012 (edited) Remember when you were a kid (if you are as ancient as I) and there were these cheap plastic puzzles of sliding squares that you were suppose to get in the right order?Well this is that EnjoyVersion 1.01Cosmetic and Platform changesPlastic Sliding Puzzle.au3 Edited May 23, 2012 by Topher Venix and JScript 2 [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
water Posted May 21, 2012 Posted May 21, 2012 Wow, great game! Reminds me when I was young too. Great implementation! Took me 168 moves - I know I'm a bit rusty My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Topher Posted May 21, 2012 Author Posted May 21, 2012 Thank you. When my score passes 16 or so I've so badly messed it up that I never get it. So I am impressed. [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
JohnOne Posted May 21, 2012 Posted May 21, 2012 (edited) Great, thanks for share. As I recall there were only <edit>15</edit> slats in the square puzzles I ever solved Edited May 21, 2012 by JohnOne AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
Topher Posted May 22, 2012 Author Posted May 22, 2012 As I recall there were only <edit>15</edit> slats in the square puzzles I ever solved In my mind it was so clearly a 5x5 grid, but in looking for a picture to turn into an icon they were all as you said 4x4. [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
water Posted May 22, 2012 Posted May 22, 2012 I remember that I had two of these puzzles. One was 4x4 and the other was 4x6 or even 4x7. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
funkey Posted May 22, 2012 Posted May 22, 2012 Nice! Eukalyptus made some similar with pictures. You need a picture with 440x440 pixels. expandcollapse popup#include <GUIConstantsEx.au3> #include <Array.au3> #include <File.au3> #include <GDIPlus.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) Global $iTile = 0, $iSize, $hLabel[5][5], $aField[5][5][3] Global $aFiles = _FileListToArray(@ScriptDir, "*.jpg", 1) _ArrayCombine($aFiles, _FileListToArray(@ScriptDir, "*.bmp", 1)) _ArrayCombine($aFiles, _FileListToArray(@ScriptDir, "*.tif", 1)) _ArrayCombine($aFiles, _FileListToArray(@ScriptDir, "*.gif", 1)) _ArrayCombine($aFiles, _FileListToArray(@ScriptDir, "*.png", 1)) If Not IsArray($aFiles) Or $aFiles[0] < 1 Then MsgBox(0, "Error", "No pics found") Exit EndIf _GDIPlus_Startup() Global $hImage, $iWidth, $iHeight Global $hPenWhite = _GDIPlus_PenCreate(0x44FFFFFF, 2) Global $hPenBlack = _GDIPlus_PenCreate(0x44000000, 2) Global $hBrushBK = _GDIPlus_BrushCreateSolid(0xFF6C99B4) Global $hGui = GUICreate("SchiebePuzzle", 452, 500) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") GUISetOnEvent($GUI_EVENT_RESTORE, "_ReDraw") GUISetBkColor(0x6C99B4) GUICtrlCreateLabel("", 4, 4, 444, 444) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, 0x558097) GUICtrlCreateLabel("", 6, 6, 442, 442) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, 0x88B8D8) GUICtrlCreateLabel("", 6, 6, 440, 440) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, 0x6C99B4) GUICtrlCreateLabel("Anzahl der Felder:", 10, 468, 90, 20) Global $hInput = GUICtrlCreateInput(3, 100, 465, 30, 20, $ES_READONLY) GUICtrlCreateUpdown(-1) GUICtrlSetLimit(-1, 5, 2) GUICtrlSetOnEvent(-1, "_SetTile") GUICtrlCreateButton("Mischen", 160, 465, 80, 20) GUICtrlSetOnEvent(-1, "_Randomize") GUICtrlCreateButton("Neues Bild", 260, 465, 80, 20) GUICtrlSetOnEvent(-1, "_LoadRandomImage1") GUICtrlCreateButton("Beenden", 360, 465, 80, 20) GUICtrlSetOnEvent(-1, "_Exit") GUISetState() Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui) GUIRegisterMsg($WM_PAINT, '_Redraw') _LoadRandomImage() _SetTile() While 1 Sleep(100) WEnd Func _MoveField() Local $iX, $iY, $iNX, $iNY, $iDir For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 If $hLabel[$i][$j] = @GUI_CtrlId Then $iX = $i $iY = $j ExitLoop 2 EndIf Next Next If $aField[$iX][$iY][2] <> 2 Then Return $iNX = $iX $iNY = $iY Select Case $iX > 0 And $aField[$iX - 1][$iY][2] = 0 $iNX = $iX - 1 $iDir = 1 Case $iX < $iTile - 1 And $aField[$iX + 1][$iY][2] = 0 $iNX = $iX + 1 $iDir = 2 Case $iY > 0 And $aField[$iX][$iY - 1][2] = 0 $iNY = $iY - 1 $iDir = 3 Case $iY < $iTile - 1 And $aField[$iX][$iY + 1][2] = 0 $iNY = $iY + 1 $iDir = 4 EndSelect For $i = 0 To $iSize Step 5 Switch $iDir Case 1 _DrawField($iX, $iY, -$i, 0) Case 2 _DrawField($iX, $iY, $i, 0) Case 3 _DrawField($iX, $iY, 0, -$i) Case 4 _DrawField($iX, $iY, 0, $i) EndSwitch Sleep(10) Next $aField[$iNX][$iNY][0] = $aField[$iX][$iY][0] $aField[$iNX][$iNY][1] = $aField[$iX][$iY][1] $aField[$iNX][$iNY][2] = $aField[$iX][$iY][2] $aField[$iX][$iY][2] = False GUICtrlSetBkColor($hLabel[$iX][$iY], 0x6C99B4) _DrawField($iNX, $iNY) _SetFreeField() EndFunc ;==>_MoveField Func _LoadRandomImage1() _WinAPI_RedrawWindow($hGui) _LoadRandomImage() _ReDraw() EndFunc ;==>_LoadRandomImage1 Func _LoadRandomImage($Orig = False) Local $iRandom = Random(1, $aFiles[0], 1) If $iRandom = 0 Or $aFiles[0] = 1 Then $iRandom = 1 If $Orig = False Then $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "" & $aFiles[$iRandom]) $iWidth = _GDIPlus_ImageGetWidth($hImage) $iHeight = _GDIPlus_ImageGetHeight($hImage) For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 GUICtrlSetCursor($hLabel[$i][$j], 2) $aField[$i][$j][0] = $i * $iSize $aField[$i][$j][1] = $j * $iSize $aField[$i][$j][2] = 1 Next Next $aField[0][0][2] = 0 $aField[1][0][2] = 2 $aField[0][1][2] = 2 GUICtrlSetCursor($hLabel[1][0], 0) GUICtrlSetCursor($hLabel[0][1], 0) EndFunc ;==>_LoadRandomImage Func _Randomize() GUIRegisterMsg($WM_PAINT, '') Local $iX = 0, $iY = 0, $iNX, $iNY, $iDir For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 If $aField[$i][$j][2] = 0 Then $iX = $i $iY = $j ExitLoop 2 EndIf Next Next For $c = 1 To 500 Do $iNX = $iX $iNY = $iY $iDir = Random(1, 4, 1) Select Case $iDir = 2 And $iX > 0 $iNX = $iX - 1 Case $iDir = 1 And $iX < $iTile - 1 $iNX = $iX + 1 Case $iDir = 4 And $iY > 0 $iNY = $iY - 1 Case $iDir = 3 And $iY < $iTile - 1 $iNY = $iY + 1 EndSelect Until $iX <> $iNX Or $iY <> $iNY $aField[$iX][$iY][0] = $aField[$iNX][$iNY][0] $aField[$iX][$iY][1] = $aField[$iNX][$iNY][1] $aField[$iX][$iY][2] = $aField[$iNX][$iNY][2] $aField[$iNX][$iNY][2] = False GUICtrlSetBkColor($hLabel[$iNX][$iNY], 0x6C99B4) _DrawField($iX, $iY) $iX = $iNX $iY = $iNY Next _ReDraw() _SetFreeField() GUIRegisterMsg($WM_PAINT, '_Redraw') EndFunc ;==>_Randomize Func _SetFreeField() For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 GUICtrlSetCursor($hLabel[$i][$j], 2) If $aField[$i][$j][2] <> 0 Then $aField[$i][$j][2] = 1 Next Next For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 If $aField[$i][$j][2] = False Then If $i > 0 Then GUICtrlSetCursor($hLabel[$i - 1][$j], 0) $aField[$i - 1][$j][2] = 2 EndIf If $i < $iTile - 1 Then GUICtrlSetCursor($hLabel[$i + 1][$j], 0) $aField[$i + 1][$j][2] = 2 EndIf If $j > 0 Then GUICtrlSetCursor($hLabel[$i][$j - 1], 0) $aField[$i][$j - 1][2] = 2 EndIf If $j < $iTile - 1 Then GUICtrlSetCursor($hLabel[$i][$j + 1], 0) $aField[$i][$j + 1][2] = 2 EndIf EndIf Next Next EndFunc ;==>_SetFreeField Func _DrawField($x, $y, $iOX = 0, $iOY = 0) If $aField[$x][$y][2] = False Then Return Local $iX = $aField[$x][$y][0] Local $iY = $aField[$x][$y][1] Switch True Case $iOX > 0 _GDIPlus_GraphicsFillRect($hGraphics, 6 + $x * $iSize, 6 + $y * $iSize, $iOX, $iSize, $hBrushBK) Case $iOX < 0 _GDIPlus_GraphicsFillRect($hGraphics, 6 + $x * $iSize + $iSize + $iOX, 6 + $y * $iSize, -$iOX, $iSize, $hBrushBK) Case $iOY > 0 _GDIPlus_GraphicsFillRect($hGraphics, 6 + $x * $iSize, 6 + $y * $iSize, $iSize, $iOY, $hBrushBK) Case $iOY < 0 _GDIPlus_GraphicsFillRect($hGraphics, 6 + $x * $iSize, 6 + $y * $iSize + $iSize + $iOY, $iSize, -$iOY, $hBrushBK) EndSwitch _GDIPlus_GraphicsDrawImageRectRect($hGraphics, $hImage, $iX, $iY, $iSize, $iSize, 6 + $x * $iSize + $iOX, 6 + $y * $iSize + $iOY, $iSize, $iSize) _GDIPlus_GraphicsDrawLine($hGraphics, 6 + $x * $iSize + $iOX, 7 + $y * $iSize + $iOY, $iSize + 6 + $x * $iSize + $iOX, 7 + $y * $iSize + $iOY, $hPenWhite) _GDIPlus_GraphicsDrawLine($hGraphics, 7 + $x * $iSize + $iOX, 6 + $y * $iSize + $iOY, 7 + $x * $iSize + $iOX, $iSize + 6 + $y * $iSize + $iOY, $hPenWhite) _GDIPlus_GraphicsDrawLine($hGraphics, 6 + $x * $iSize + $iOX, $iSize + 5 + $y * $iSize + $iOY, $iSize + 6 + $x * $iSize + $iOX, $iSize + 5 + $y * $iSize + $iOY, $hPenBlack) _GDIPlus_GraphicsDrawLine($hGraphics, $iSize + 5 + $x * $iSize + $iOX, 6 + $y * $iSize + $iOY, $iSize + 5 + $x * $iSize + $iOX, $iSize + 6 + $y * $iSize + $iOY, $hPenBlack) EndFunc ;==>_DrawField Func _SetTile() If $iTile = GUICtrlRead($hInput) Then Return GUIRegisterMsg($WM_PAINT, '') For $i = 0 To 4 For $j = 0 To 4 GUICtrlDelete($hLabel[$i][$j]) Next Next $iTile = GUICtrlRead($hInput) $iSize = Round(440 / $iTile) For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 $hLabel[$i][$j] = GUICtrlCreateLabel("", 6 + $i * $iSize, 6 + $j * $iSize, $iSize, $iSize) GUICtrlSetCursor(-1, 2) GUICtrlSetOnEvent(-1, "_MoveField") Next Next _LoadRandomImage(True) _ReDraw() GUIRegisterMsg($WM_PAINT, '_Redraw') EndFunc ;==>_SetTile Func _ReDraw() For $i = 0 To $iTile - 1 For $j = 0 To $iTile - 1 _DrawField($i, $j) Next Next EndFunc ;==>_ReDraw Func _ArrayCombine(ByRef $aArray, $aNew) If Not IsArray($aNew) Then Return Local $iArray = UBound($aArray) - 1, $iNew = UBound($aNew) - 1 Local $aReturn[$iArray + $iNew + 1] For $i = 1 To $iArray $aReturn[$i] = $aArray[$i] Next For $i = 1 To $iNew $aReturn[$i + $iArray] = $aNew[$i] Next $aReturn[0] = $iArray + $iNew $aArray = $aReturn EndFunc ;==>_ArrayCombine Func _Exit() _GDIPlus_Shutdown() Exit EndFunc ;==>_Exit Programming today is a race between software engineers striving tobuild bigger and better idiot-proof programs, and the Universetrying to produce bigger and better idiots.So far, the Universe is winning.
Malkey Posted May 22, 2012 Posted May 22, 2012 On my XP, I believe the $BS_BITMAP in the GUICtrlCreateButton function was hiding all the numbers on the buttons.I continued to play with your script and swap these to commands around, Scramble() and GUISetState(): and,added colour.Topher, good job.expandcollapse popup#NoTrayIcon #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: Garth Bigelow email: garthbigelow@gmail.com Script Function: Sliding Squiare Puzzle #ce ---------------------------------------------------------------------------- #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <Misc.au3> #include <WindowsConstants.au3> Const $version = "Plastic Sliding Squares Puzzle v1.00" ; Size of the Grid - 1 ; 2 to 11 $Size = 4 ; ; Speed of Sliding Movement ; 0 to ridiculously slow $Speed = 0 ; ; Number of potential moves ; needs to be rather larger as movement back and forth happens more often than you would think ; the smaller the grid the larger complexity needs to be ; the greater complexity the more challenging the puzzle $Complexity = 30 ; ; Whether empty square is the last number or not ; 0 for not $Advanced = 0 ; ; Disregard the Ini file and use the values above or not $Ignore = False If FileExists("PSSP.ini") = 0 Then IniWrite("PSSP.ini", "Config", "Grid Size", 5) IniWrite("PSSP.ini", "Config", "Speed", 10) IniWrite("PSSP.ini", "Config", "Complexity", 30) IniWrite("PSSP.ini", "Config", "Adanced", 0) EndIf If Not $Ignore Then $Size = IniRead("PSSP.ini", "Config", "Grid Size", 5) - 1 $Speed = IniRead("PSSP.ini", "Config", "Speed", 10) $Complexity = IniRead("PSSP.ini", "Config", "Complexity", 30) $Advanced = IniRead("PSSP.ini", "Config", "Adanced", 0) EndIf Dim $hBoard[($Size + 1)][($Size + 1)] Global $GoX, $GoY, $MoveCount = 0, $MenuSpace = 0 $hGUI = GUICreate($version, 68 * ($Size + 1) + 3, 68 * ($Size + 1) + $MenuSpace, -1, -1, -1, $WS_EX_COMPOSITED) GUISetBkColor(0xAA4444) If $Advanced = 0 Then $EmptySquare = ($Size + 1) * ($Size + 1) Else $EmptySquare = Rand(($Size + 1) * ($Size + 1)) EndIf For $x = 0 To $Size For $y = 0 To $Size $label = ($y) * ($Size + 1) + ($x + 1) $hBoard[$x][$y] = GUICtrlCreateButton($label, $x * 68 + 3, $y * 68 + 3 + $MenuSpace, 62, 62, $BS_FLAT) ;$hBoard[$x][$y] = GUICtrlCreateButton(String($label), $x * 68 + 3, $y * 68 + 3 + $MenuSpace, 62, 62, BitOR($BS_BITMAP, $BS_FLAT)) GUICtrlSetBkColor(-1, Number("0x" & Hex(Random(0x80, 0xff, 1), 2) & Hex(Random(0x80, 0xff, 1), 2) & Hex(Random(0x80, 0xff, 1), 2))) If $EmptySquare = $label Then GUICtrlSetState($hBoard[$x][$y], $GUI_HIDE) Next Next Scramble() GUISetState() $MoveCount = 0 While True $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then GUIDelete() Exit EndIf ProcessClick() If Over() Then NumToCoord($EmptySquare) GUICtrlSetState($hBoard[$GoX][$GoY], $GUI_SHOW) MsgBox(48, "Puzzle Completed", "You completed the puzzle in " & $MoveCount & " moves.") Exit EndIf WEnd Func ProcessClick() For $px = 0 To $Size For $py = 0 To $Size If $msg = $hBoard[$px][$py] Then If IsValidClick($px, $py) Then Slide($px, $py) Return EndIf Return EndIf Next Next Sleep(10) EndFunc ;==>ProcessClick Func Scramble() $holdSpeed = $Speed $Speed = 0 $a = $Complexity While $a > 0 $x = Rand($Size) $y = Rand($Size) If IsValidClick($x, $y) Then Slide($x, $y) $a -= 1 EndIf WEnd $Speed = $holdSpeed EndFunc ;==>Scramble Func Slide($x, $y) NumToCoord($EmptySquare) If $x > $GoX Then SlideLeft($x, $y) If $x < $GoX Then SlideRight($x, $y) If $y > $GoY Then SlideUp($x, $y) If $y < $GoY Then SlideDown($x, $y) $MoveCount += 1 EndFunc ;==>Slide Func SlideDown($x, $y) NumToCoord($EmptySquare) For $line = 1 To 68 For $b = $y To $GoY GUICtrlSetPos($hBoard[$x][$b], $x * 68 + 3, ($b * 68 + 3 + $MenuSpace) + $line) Next Sleep($Speed) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoY - 1 To $y Step -1 $hBoard[$x][$b + 1] = $hBoard[$x][$b] Next $hBoard[$x][$y] = $holdHandle EndFunc ;==>SlideDown Func SlideLeft($x, $y) NumToCoord($EmptySquare) For $line = 1 To 68 For $b = $GoX To $x GUICtrlSetPos($hBoard[$b][$y], ($b * 68 + 3) - $line, ($y * 68 + 3 + $MenuSpace)) Next Sleep($Speed) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoX + 1 To $x $hBoard[$b - 1][$y] = $hBoard[$b][$y] Next $hBoard[$x][$y] = $holdHandle EndFunc ;==>SlideLeft Func SlideRight($x, $y) NumToCoord($EmptySquare) For $line = 1 To 68 For $b = $x To $GoX - 1 GUICtrlSetPos($hBoard[$b][$y], ($b * 68 + 3) + $line, ($y * 68 + 3 + $MenuSpace)) Next Sleep($Speed) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoX - 1 To $x Step -1 $hBoard[$b + 1][$y] = $hBoard[$b][$y] Next $hBoard[$x][$y] = $holdHandle EndFunc ;==>SlideRight Func SlideUp($x, $y) ; checked NumToCoord($EmptySquare) For $line = 1 To 68 For $b = $GoY To $y GUICtrlSetPos($hBoard[$x][$b], $x * 68 + 3, ($b * 68 + 3 + $MenuSpace) - $line) Next Sleep($Speed) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoY + 1 To $y $hBoard[$x][$b - 1] = $hBoard[$x][$b] Next $hBoard[$x][$y] = $holdHandle EndFunc ;==>SlideUp Func IsValidClick($x, $y) NumToCoord($EmptySquare) $EmptyX = $GoX $EmptyY = $GoY NumToCoord(GUICtrlRead($hBoard[$x][$y])) If $EmptyX = $GoX Or $EmptyY = $GoY Then Return 1 Return 0 EndFunc ;==>IsValidClick Func NumToCoord($Num) For $x = 0 To $Size For $y = 0 To $Size $lnum = GUICtrlRead($hBoard[$x][$y]) If $Num = $lnum Then $GoX = $x $GoY = $y ExitLoop 2 EndIf Next Next EndFunc ;==>NumToCoord Func Over() For $x = 0 To $Size For $y = 0 To $Size If ($y) * ($Size + 1) + ($x + 1) <> GUICtrlRead($hBoard[$x][$y]) Then Return 0 Next Next Return 1 EndFunc ;==>Over ; ; bend random() function to my needs ; Func Rand($pMax) Return Random(0, $pMax, 1) EndFunc ;==>Rand
Topher Posted May 22, 2012 Author Posted May 22, 2012 On my XP, I believe the $BS_BITMAP in the GUICtrlCreateButton function was hiding all the numbers on the buttons.I continued to play with your script and swap these to commands around, Scramble() and GUISetState(): and,added colour.Thanks.I played with it a bit, opting for the black and red digits of the most common versions of the physical puzzle.Thanks for the knowledge on $BS_BITMAP [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
wakillon Posted May 23, 2012 Posted May 23, 2012 It reminds me my childhood ! Nicely done ! AutoIt 3.3.18.0 X86 - SciTE 5.5.7 - WIN 11 24H2 X64 - Other Examples Scripts
Topher Posted May 23, 2012 Author Posted May 23, 2012 Version 1.01 released. Cosmetic and Platform changes [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
water Posted May 23, 2012 Posted May 23, 2012 Great! Looks even better - more like the one I had when I was young (so long ago ). The new version seems to be even faster: I only needed 47 moves. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
jvanegmond Posted May 23, 2012 Posted May 23, 2012 (edited) Removed slide animation. Took too long. If you have time, see if you could add frame rate independent animations. expandcollapse popupFunc SlideDown($x, $y) NumToCoord($EmptySquare) For $b = $y To $GoY GUICtrlSetPos($hBoard[$x][$b], $x * 68 + 3, ($b * 68 + 3 + $MenuSpace) + 68) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoY - 1 To $y Step - 1 $hBoard[$x][$b+1] = $hBoard[$x][$b] Next $hBoard[$x][$y] = $holdHandle EndFunc Func SlideLeft($x, $y) NumToCoord($EmptySquare) For $b = $GoX To $x GUICtrlSetPos($hBoard[$b][$y], ($b * 68 + 3) - 68, ($y * 68 + 3 + $MenuSpace)) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoX + 1 To $x $hBoard[$b-1][$y] = $hBoard[$b][$y] Next $hBoard[$x][$y] = $holdHandle EndFunc Func SlideRight($x, $y) NumToCoord($EmptySquare) For $b = $x To $GoX - 1 GUICtrlSetPos($hBoard[$b][$y], ($b * 68 + 3) + 68, ($y * 68 + 3 + $MenuSpace)) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoX - 1 To $x Step - 1 $hBoard[$b+1][$y] = $hBoard[$b][$y] Next $hBoard[$x][$y] = $holdHandle EndFunc Func SlideUp($x, $y) ; checked NumToCoord($EmptySquare) For $b = $GoY To $y GUICtrlSetPos($hBoard[$x][$b], $x * 68 + 3, ($b * 68 + 3 + $MenuSpace) - 68) Next $holdHandle = $hBoard[$GoX][$GoY] For $b = $GoY + 1 To $y $hBoard[$x][$b-1] = $hBoard[$x][$b] Next $hBoard[$x][$y] = $holdHandle EndFunc Edited May 23, 2012 by Manadar github.com/jvanegmond
Zedna Posted May 23, 2012 Posted May 23, 2012 Very nice! Resources UDF ResourcesEx UDF AutoIt Forum Search
JScript Posted May 23, 2012 Posted May 23, 2012 Now is better!!! Regards, João Carlos. http://forum.autoitbrasil.com/ (AutoIt v3 Brazil!!!) Somewhere Out ThereJames Ingram Download Dropbox - Simplify your life!Your virtual HD wherever you go, anywhere!
Topher Posted May 23, 2012 Author Posted May 23, 2012 Now is better!!!The credit goes to Malkey. [left][hr] $mood = "whimsy" $mode = "confused" $randomChaos = True Do Something() Until $Tired[/left][left]Reflex (Arcade game)[/left][left]IX (Board game)[/left][left]The Word Game (Word game)[/left][left]Plastic Sliding Squares Puzzle (Puzzle)[/left]
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