Damein Posted March 11, 2011 Posted March 11, 2011 So I am making flash memory game where it displays a certain number of colors per level and you must put them in the sequence they were shown. I have them stored in an ini like so: [Easy] 1=1 2=1|1 3=1|1|4 4=1|1|4|3 5=1|1|4|3|1 and so on until the last one has 20 digits, each one will be the same, save for the last digit. Now, I can display these digits by doing a: $IniReadVar = IniReadSection And then: $IniReadVarSplit = StringSplit($IniReadVar, "|") Which will create an array of IniReadVarSplit[0]-[20]. And then I proceed by: If $IniReadyVarSplit[1] = 1 Then (Show the first number in the sequence) And then continue on for each level, but thats a lot of code that I think can be shortened. If this is not clear I will post me script later, but its on another computer and its really sloppy right now. Once this is cleared up I have another dilemma I can't get under control Thanks in advance! Most recent sig. I made Quick Launcher W/ Profiles Topic Movie Database Topic & Website | LiveStreamer Pro Website | YouTube Stand-Alone Playlist Manager: Topic | Weather Desktop Widget: Topic | Flash Memory Game: Topic | Volume Control With Mouse / iTunes Hotkeys: Topic | Weather program: Topic | Paws & Tales radio drama podcast mini-player: Topic | Quick Math Calculations: Topic
Moderators Melba23 Posted March 11, 2011 Moderators Posted March 11, 2011 Damein,If all the strings are the same bar the final character, then you only need to store the final 20-digit version and then just read the first X digits depending on the level. That way you save a lot of typing in the ini.You will need to use StringSplit to get an array of the content (as you already do) and then a For...Next loop with a variable index to get at the digits you require for each level. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Damein Posted March 11, 2011 Author Posted March 11, 2011 Hmm, thats true. Although, I'm still not 100% how I would implement the numbers efficiently for what else I need. I need each number to be saved into a var so I can check if the user inputs the correct numbers, in the correct order. For example, I could use a For loop to display each number, that parts simple. But after I display each number, I next have to have the user input the same numbers, in the same sequence in order to pass. So my question I guess is how would I compare the user input (This will be via clicking 1 of 4 buttons, correspondingly) to the For loops displays? Most recent sig. I made Quick Launcher W/ Profiles Topic Movie Database Topic & Website | LiveStreamer Pro Website | YouTube Stand-Alone Playlist Manager: Topic | Weather Desktop Widget: Topic | Flash Memory Game: Topic | Volume Control With Mouse / iTunes Hotkeys: Topic | Weather program: Topic | Paws & Tales radio drama podcast mini-player: Topic | Quick Math Calculations: Topic
Moderators Melba23 Posted March 11, 2011 Moderators Posted March 11, 2011 Damein, Run a loop to collect the user inputs into an array and then compare the 2 arrays. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Damein Posted March 14, 2011 Author Posted March 14, 2011 (edited) So I tried what you said about the user inputs, but I could not get the _ArraySearch to come up with a valid entry when there are more than 1 inputs, no matter what I tried I found a way to do the inputs, but I think it could easily be shortened if I could get _ArraySearch to work properly. Here is the script in full. (If you scroll down to the Input() function you will see where I am doing the checking.) expandcollapse popup#include <GuiConstantsEx.au3> #include <GDIPlus.au3> #include <GuiButton.au3> #include <File.au3> #include <Array.au3> Opt("GUIOnEventMode", 1) Global $Gui, $ChosenColor2, $AnswerCheck, $Blue, $Green, $Red, $Purple, $SleepTime, $ButtonPressed, $Var, $ColorArray, $1, $2, $3, $4, $TrimedColors, $NumberOfButtons, $TrimedColorsSplit, $Button, $CorrectNumber, $Button1, $Button2, $CorrectAnswer, $ButtonCount, $CheckingAnswer, $DoNotRepeatArrayToString, $Var2, $Answer1Found, $TestSleep $CurrentLevel = 1 Local $ColorArray[21], $Button[21], $ButtonList[21] For $i = 0 To 19 Step +1 _ArrayDelete($ButtonList, $i) Next $File = "Colors.ini" FileDelete($File) Intro() Func Intro() _GDIPlus_Startup () $hPen = _GDIPlus_PenCreate () $GUI = GUICreate("Flash Memory", 300, 300) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseGUI") $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($GUI) $FadedBlue = GuiCtrlCreatePic("Imgs\FadedBlue.bmp", 2,2,146,146) $FadedGreen = GuiCtrlCreatePic("Imgs\FadedGreen.bmp", 153,2,145,146) $FadedRed = GuiCtrlCreatePic("Imgs\FadedRed.bmp", 2,153,145,145) $FadedPurple = GuiCtrlCreatePic("Imgs\FadedPurple.bmp", 153,153,145,145) GUISetState() _GDIPlus_GraphicsDrawLine ($hGraphic, 0, 150, 300, 150, $hPen) _GDIPlus_GraphicsDrawLine ($hGraphic, 150, 0, 150, 300, $hPen) $hBrush = _GDIPlus_BrushCreateSolid (0x7F00007F) $hFormat = _GDIPlus_StringFormatCreate () $hFamily = _GDIPlus_FontFamilyCreate ("Chiller") $hFont = _GDIPlus_FontCreate ($hFamily, 35, 1) $tLayout = _GDIPlus_RectFCreate (0, 0, 300, 300) For $Count = 0 To 5 Step +1 GuiCtrlSetImage($FadedBlue, "Imgs\Blue.bmp",-1) Sleep(40) GUICtrlSetImage($FadedBlue, "Imgs\FadedBlue.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) GUICtrlSetImage($FadedGreen, "Imgs\Green.bmp", -1) Sleep(40) GUICtrlSetImage($FadedGreen, "Imgs\FadedGreen.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) GUICtrlSetImage($FadedRed, "Imgs\Red.bmp", -1) Sleep(40) GUICtrlSetImage($FadedRed, "Imgs\FadedRed.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) GUICtrlSetImage($FadedPurple, "Imgs\Purple.bmp", -1) Sleep(40) GUICtrlSetImage($FadedPurple, "Imgs\FadedPurple.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Next For $Count = 0 To 5 Step +1 GUICtrlSetImage($FadedPurple, "Imgs\Purple.bmp", -1) Sleep(40) GUICtrlSetImage($FadedPurple, "Imgs\FadedPurple.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) GUICtrlSetImage($FadedRed, "Imgs\Red.bmp", -1) Sleep(40) GUICtrlSetImage($FadedRed, "Imgs\FadedRed.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) GUICtrlSetImage($FadedGreen, "Imgs\Green.bmp", -1) Sleep(40) GUICtrlSetImage($FadedGreen, "Imgs\FadedGreen.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) GuiCtrlSetImage($FadedBlue, "Imgs\Blue.bmp",-1) Sleep(40) GUICtrlSetImage($FadedBlue, "Imgs\FadedBlue.bmp", -1) _GDIPlus_GraphicsDrawStringEx ($hGraphic, " Welcome to the" & @CRLF & " Flash Memory" & @CRLF & " game!", $hFont, $tLayout, $hFormat, $hBrush) Sleep(40) Next GuiDelete($Gui) _GDIPlus_Startup () $hPen = _GDIPlus_PenCreate () $GUI = GUICreate("Flash Memory", 300, 300) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseGUI") $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($GUI) $EasyButton = GuiCtrlCreateButton("Easy", 2, 2, 146, 146, $BS_BITMAP) GUICtrlSetImage($EasyButton, "Imgs\EasyImage.bmp", 1) GUICtrlSetOnEvent($EasyButton, "Easy") $MediumButton = GuiCtrlCreateButton("Medium", 153, 2, 145, 146, $BS_BITMAP) GUICtrlSetImage($MediumButton, "Imgs\MediumImage.bmp", 1) GUICtrlSetOnEvent($MediumButton, "Medium") $HardButton = GuiCtrlCreateButton("Hard", 2, 153, 145, 146, $BS_BITMAP) GUICtrlSetImage($HardButton, "Imgs\HardImage.bmp", 1) GUICtrlSetOnEvent($HardButton, "Hard") $ExpertButton = GuiCtrlCreateButton("Expert", 153, 153, 145, 145, $BS_BITMAP) GUICtrlSetImage($ExpertButton, "Imgs\ExpertImage.bmp", 1) GUICtrlSetOnEvent($ExpertButton, "Expert") GUISetState() _GDIPlus_GraphicsDrawLine ($hGraphic, 0, 150, 300, 150, $hPen) _GDIPlus_GraphicsDrawLine ($hGraphic, 150, 0, 150, 300, $hPen) _GDIPlus_FontDispose ($hFont) _GDIPlus_GraphicsDispose ($hGraphic) _GDIPlus_FontFamilyDispose ($hFamily) _GDIPlus_StringFormatDispose ($hFormat) _GDIPlus_BrushDispose ($hBrush) EndFunc Func CloseGUI() Exit EndFunc Func Easy() GuiDelete($Gui) $hPen = _GDIPlus_PenCreate () $GUI = GUICreate("Flash Memory", 300, 300) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseGUI") $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($GUI) $1 = GuiCtrlCreateButton("Blue", 2, 2, 146, 146, $BS_BITMAP) GUICtrlSetImage($1, "Imgs\FadedBlue.bmp", 1) GUICtrlSetOnEvent($1, "Blue") $2 = GuiCtrlCreateButton("Green", 153, 2, 145, 146, $BS_BITMAP) GUICtrlSetImage($2, "Imgs\FadedGreen.bmp", 1) GUICtrlSetOnEvent($2, "Green") $3 = GuiCtrlCreateButton("Red", 2, 153, 145, 146, $BS_BITMAP) GUICtrlSetImage($3, "Imgs\FadedRed.bmp", 1) GUICtrlSetOnEvent($3, "Red") $4 = GuiCtrlCreateButton("Purple", 153, 153, 145, 145, $BS_BITMAP) GUICtrlSetImage($4, "Imgs\FadedPurple.bmp", 1) GUICtrlSetOnEvent($4, "Purple") GUISetState() _GDIPlus_GraphicsDrawLine ($hGraphic, 0, 150, 300, 150, $hPen) _GDIPlus_GraphicsDrawLine ($hGraphic, 150, 0, 150, 300, $hPen) $DifficultySetting = 1 $TestSleep = "200" _GDIPlus_PenDispose ($hPen) _GDIPlus_Shutdown () For $Count = 1 To 20 Step +1 $Color = Round(Random(1,4)) $ColorArray[$Count] = $Color Next _ArrayDelete($ColorArray, 0) $Var = _ArrayToString($ColorArray, "") EasyGame() EndFunc Func EasyGame() While $CheckingAnswer = 1 Input() WEnd If $CurrentLevel = 1 Then $TrimedColors = StringTrimRight($Var, 19) For $Count = 1 To $CurrentLevel Step +1 If $TrimedColors = 1 Then GUICtrlSetImage($1, "Imgs\Blue.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($1, "Imgs\FadedBlue.bmp", 1) EndIf If $TrimedColors = 2 Then GUICtrlSetImage($2, "Imgs\Green.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($2, "Imgs\FadedGreen.bmp", 1) EndIf If $TrimedColors = 3 Then GUICtrlSetImage($3, "Imgs\Red.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($3, "Imgs\FadedRed.bmp", 1) EndIf If $TrimedColors = 4 Then GUICtrlSetImage($4, "Imgs\Purple.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($4, "Imgs\FadedPurple.bmp", 1) EndIf Next Sleep($TestSleep) $CheckingAnswer = 1 EndIf If $CurrentLevel = 2 Then $TrimedColors = StringTrimRight($Var, 18) $TrimedColorsSplit = StringSplit($TrimedColors, "") For $Count = 1 To $CurrentLevel Step +1 If $TrimedColorsSplit[$Count] = 1 Then GUICtrlSetImage($1, "Imgs\Blue.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($1, "Imgs\FadedBlue.bmp", 1) Sleep($TestSleep) EndIf If $TrimedColorsSplit[$Count] = 2 Then GUICtrlSetImage($2, "Imgs\Green.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($2, "Imgs\FadedGreen.bmp", 1) Sleep($TestSleep) EndIf If $TrimedColorsSplit[$Count] = 3 Then GUICtrlSetImage($3, "Imgs\Red.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($3, "Imgs\FadedRed.bmp", 1) Sleep($TestSleep) EndIf If $TrimedColorsSplit[$Count] = 4 Then GUICtrlSetImage($4, "Imgs\Purple.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($4, "Imgs\FadedPurple.bmp", 1) Sleep($TestSleep) EndIf Next Sleep($TestSleep) $CheckingAnswer = 1 EndIf If $CurrentLevel = 3 Then $TrimedColors = StringTrimRight($Var, 17) $TrimedColorsSplit = StringSplit($TrimedColors, "") For $Count = 1 To $CurrentLevel Step +1 If $TrimedColorsSplit[$Count] = 1 Then GUICtrlSetImage($1, "Imgs\Blue.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($1, "Imgs\FadedBlue.bmp", 1) Sleep($TestSleep) EndIf If $TrimedColorsSplit[$Count] = 2 Then GUICtrlSetImage($2, "Imgs\Green.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($2, "Imgs\FadedGreen.bmp", 1) Sleep($TestSleep) EndIf If $TrimedColorsSplit[$Count] = 3 Then GUICtrlSetImage($3, "Imgs\Red.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($3, "Imgs\FadedRed.bmp", 1) Sleep($TestSleep) EndIf If $TrimedColorsSplit[$Count] = 4 Then GUICtrlSetImage($4, "Imgs\Purple.bmp", 1) Sleep($TestSleep) GUICtrlSetImage($4, "Imgs\FadedPurple.bmp", 1) Sleep($TestSleep) EndIf Next Sleep($TestSleep) EndIf EndFunc Func Medium() $DifficultySetting = 2 EndFunc Func Hard() $DifficultySetting = 3 EndFunc Func Expert() $DifficultySetting = 4 EndFunc Func Input() If $CurrentLevel = 1 Then $TrimedColors2 = StringTrimRight($Var, 19) $iKeyIndex = _ArrayBinarySearch($ButtonList, $TrimedColors2, 1) If Not @error Then $CurrentLevel += 1 EasyGame() Else Sleep(10) EndIf EndIf If $CurrentLevel = 2 Then If $CheckingAnswer = 1 Then Sleep(10) Else $Var2 = _ArrayToString($ButtonList,",") EndIf If StringLen($Var2) > 4 Then $TrimedColors2 = StringTrimRight($Var, 18) $TrimedButtons = StringTrimLeft($Var2, 1) $SplitTrimedColors2 = StringSplit($TrimedColors2,"") $SplitTrimedButtons = StringSplit($TrimedButtons,",") If $SplitTrimedColors2[1] = $SplitTrimedButtons[1] Then $Answer1Found = 1 Else MsgBox(0, "Test", "Not found 1") EndIf If $Answer1Found = 1 Then If $SplitTrimedColors2[2] = $SplitTrimedButtons[3] Then $CurrentLevel += 1 EasyGame() Else MsgBox(0, "Test", "Not found 2") EndIf EndIf Else Sleep(10) EndIf EndIf If $CurrentLevel = 3 Then If $CheckingAnswer = 1 Then Sleep(10) Else $Var2 = _ArrayToString($ButtonList,",") EndIf If StringLen($Var2) > 11 Then $TrimedColors2 = StringTrimRight($Var, 17) MsgBox(0, "TrimedColors2", $TrimedColors2) $TrimedButtons = StringTrimLeft($Var2, 7) MsgBox(0, "TrimedButtons", $TrimedButtons) $SplitTrimedColors2 = StringSplit($TrimedColors2,"") $SplitTrimedButtons = StringSplit($TrimedButtons,",") If $SplitTrimedColors2[1] = $SplitTrimedButtons[1] Then $Answer1Found = 1 Else MsgBox(0, "Test", "Not found 1") EndIf If $Answer1Found = 1 Then MsgBox(0, "test", $SplitTrimedColors2[2] & @CRLF & $SplitTrimedButtons[2]) If $SplitTrimedColors2[2] = $SplitTrimedButtons[2] Then $Answer1Found = 2 Else MsgBox(0, "test", "Not found 2") EndIf If $Answer1Found = 2 Then If $SplitTrimedColors2[3] = $SplitTrimedButtons[3] Then $CurrentLevel += 1 EasyGame() Else MsgBox(0, "Test", "Not found 3") EndIf EndIf EndIf Else Sleep(10) EndIf EndIf EndFunc Func Blue() $CheckingAnswer = 0 $ButtonCount += 1 _ArrayInsert($ButtonList, $ButtonCount, "1") Input() EndFunc Func Green() $CheckingAnswer = 0 $ButtonCount += 1 _ArrayInsert($ButtonList, $ButtonCount, "2") Input() EndFunc Func Red() $CheckingAnswer = 0 $ButtonCount += 1 _ArrayInsert($ButtonList, $ButtonCount, "3") Input() EndFunc Func Purple() $CheckingAnswer = 0 $ButtonCount += 1 _ArrayInsert($ButtonList, $ButtonCount, "4") Input() EndFunc Func _Sleep() If $NumberOfButtons = 1 Then Sleep(10) EndIf EndFunc While 1 Sleep(10) WEnd Thanks for your help Melba Edited March 14, 2011 by Damein Most recent sig. I made Quick Launcher W/ Profiles Topic Movie Database Topic & Website | LiveStreamer Pro Website | YouTube Stand-Alone Playlist Manager: Topic | Weather Desktop Widget: Topic | Flash Memory Game: Topic | Volume Control With Mouse / iTunes Hotkeys: Topic | Weather program: Topic | Paws & Tales radio drama podcast mini-player: Topic | Quick Math Calculations: Topic
Moderators Melba23 Posted March 14, 2011 Moderators Posted March 14, 2011 Damein,Nothng personal, but that code is so screwed up I am having real trouble fathoming out how it is supposed to work, let alone debugging it. For a start you are going to run into serious recursion problems. You are calling function Input from within function EasyGame and then recalling EasyGame from within Input! You will crash your machine very easily if you code like this - take a look at the Recursion tutorial in the Wiki if you want to know more about recursion and why you should avoid it. Then there are any number of peculiar code snippets - here are few that I picked out:- You declare $ButtonList[21] and then promptly use a loop to _ArrayDelete 20 of the elements - why not just declare the array with a single element?- You define a filename in $File and then promptly delete it without ever referring to it again. - You create an array $ColorArray which you then immediately transform into a string - why not create it as a string to begin with?- You really need to look at Switch and Select structures - multiple If...EndIf structures are very definitely not the way to go. I am going to see if I can come up with a script which does what you want in simplifed form so that you can use it as a template for bigger and better things. But do not hold your breath - it might take a while as I try to understand what you want to do! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Moderators Melba23 Posted March 14, 2011 Moderators Posted March 14, 2011 Damein, Here is my version of how I think you want your script to run. Every function finishes and returns to the idle loop so that you do not have a recursion problem. Take a look and see if it does what you want - note that it shows the colours in text in the SciTE console as I do not have the correct images: expandcollapse popup#include <GuiConstantsEx.au3> Opt("GUIOnEventMode", 1) Global $Gui, $CheckingAnswer = 0, $sUserAnswer = "", $CurrentLevel = 1, $Var, $fGame = "" Intro() While 1 ; We wait until a game has been chosen If $CheckingAnswer = 0 Then Switch $fGame Case "Easy" EasyGame() ;Case "Medium" ; and so on EndSwitch EndIf Sleep(10) WEnd Func Intro() $Gui = GUICreate("Flash Memory", 300, 300) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseGUI") $EasyButton = GUICtrlCreateButton("Easy", 2, 2, 146, 146) GUICtrlSetOnEvent($EasyButton, "Easy") $MediumButton = GUICtrlCreateButton("Medium", 153, 2, 145, 146) ;GUICtrlSetOnEvent($MediumButton, "Medium") $HardButton = GUICtrlCreateButton("Hard", 2, 153, 145, 146) ;GUICtrlSetOnEvent($HardButton, "Hard") $ExpertButton = GUICtrlCreateButton("Expert", 153, 153, 145, 145) ;GUICtrlSetOnEvent($ExpertButton, "Expert") GUISetState() EndFunc Func Easy() GUIDelete($Gui) $Gui = GUICreate("Flash Memory", 300, 300) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseGUI") $1 = GUICtrlCreateButton("Blue", 2, 2, 146, 146) GUICtrlSetOnEvent($1, "Blue") $2 = GUICtrlCreateButton("Green", 153, 2, 145, 146) GUICtrlSetOnEvent($2, "Green") $3 = GUICtrlCreateButton("Red", 2, 153, 145, 146) GUICtrlSetOnEvent($3, "Red") $4 = GUICtrlCreateButton("Purple", 153, 153, 145, 145) GUICtrlSetOnEvent($4, "Purple") GUISetState() $DifficultySetting = 1 $TestSleep = "200" $Var = "" For $i = 1 To 20 $Var &= Random(1, 4, 1) Next ConsoleWrite($Var & @CRLF & @CRLF) ; Just for testing ; Set a flag to show which game to play $fGame = "Easy" EndFunc ;==>Easy Func EasyGame() ; Display the required number of colours - the number increases automatically with $CurrentLevel For $i = 1 To $CurrentLevel ; Extract the colour from the list $iCurrentColor = StringMid($Var, $i, 1) ; Display the colour in the right place Switch $iCurrentColor Case 1 ConsoleWrite("Blue" & @CRLF) ; I do not have the images so this will tell you in the console what they colours shown were ;GUICtrlSetImage($1, "Imgs\Blue.bmp", 1) ;Sleep($TestSleep) ;GUICtrlSetImage($1, "Imgs\FadedBlue.bmp", 1) Case 2 ConsoleWrite("Green" & @CRLF) ;GUICtrlSetImage($2, "Imgs\Green.bmp", 1) ;Sleep($TestSleep) ;GUICtrlSetImage($2, "Imgs\FadedGreen.bmp", 1) Case 3 ConsoleWrite("Red" & @CRLF) ;GUICtrlSetImage($3, "Imgs\Red.bmp", 1) ;Sleep($TestSleep) ;GUICtrlSetImage($3, "Imgs\FadedRed.bmp", 1) Case 4 ConsoleWrite("Purple" & @CRLF) ;GUICtrlSetImage($4, "Imgs\Purple.bmp", 1) ;Sleep($TestSleep) ;GUICtrlSetImage($4, "Imgs\FadedPurple.bmp", 1) EndSwitch Next ConsoleWrite(@CRLF) ; Just for testing ; Set the flag to show we are waiting for user input $CheckingAnswer = 1 EndFunc ;==>EasyGame Func CheckAnswer() $CheckingAnswer = 0 ; Compare the colours in $UserAnswer to those in the display list For $i = 1 To $CurrentLevel ; If the colours do not match If StringMid($sUserAnswer, $i, 1) <> StringMid($Var, $i, 1) Then MsgBox(0, "Oops", "You did not pick correctly") ; Rese the answer string $sUserAnswer = "" ; Return Return EndIf Next ; But if they do MsgBox(0, "Good", "You picked correctly") ; Reset the answer string $sUserAnswer = "" ; And increase level for next run $CurrentLevel += 1 If $CheckingAnswer = 21 Then MsgBox(0, "Congrats", "You have completed the Easy level") ; Reset the level $CurrentLevel = 1 EndIf EndFunc Func Blue() ; return if we are not ready If Not $CheckingAnswer Then Return ; Add the colour value to the list $sUserAnswer &= "1" ; Check if we have enough values in the list to start the check If StringLen($sUserAnswer) = $CurrentLevel Then CheckAnswer() EndIf EndFunc Func Green() If Not $CheckingAnswer Then Return $sUserAnswer &= "2" If StringLen($sUserAnswer) = $CurrentLevel Then CheckAnswer() EndIf EndFunc Func Red() If Not $CheckingAnswer Then Return $sUserAnswer &= "3" If StringLen($sUserAnswer) = $CurrentLevel Then CheckAnswer() EndIf EndFunc Func Purple() If Not $CheckingAnswer Then Return $sUserAnswer &= "4" If StringLen($sUserAnswer) = $CurrentLevel Then CheckAnswer() EndIf EndFunc Func CloseGUI() Exit EndFunc Please ask if you do not understand what I have done or why I have done it - the idea is for you to learn! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
fett8802 Posted March 14, 2011 Posted March 14, 2011 Wow! A complete re-code with commenting. Damein, consider yourself very lucky! [sub]My UDF[/sub][sub] - Basics and Time extensions. Great for those new at AutoIt, also contains some powerful time extensions for pros.[/sub][sub]ScrabbleIt[/sub][sub] - Scrabble done in pure AutoIt. (In Progress)[/sub][sub]Nerd Party Extreme | My Portfolio | [email="fett8802@gmail.com"]Contact Me[/email][/sub]
Damein Posted March 16, 2011 Author Posted March 16, 2011 That worked amazingly Melba, thanks a lot! I got it to work at home, but it was no where near as clean as this Most recent sig. I made Quick Launcher W/ Profiles Topic Movie Database Topic & Website | LiveStreamer Pro Website | YouTube Stand-Alone Playlist Manager: Topic | Weather Desktop Widget: Topic | Flash Memory Game: Topic | Volume Control With Mouse / iTunes Hotkeys: Topic | Weather program: Topic | Paws & Tales radio drama podcast mini-player: Topic | Quick Math Calculations: Topic
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