Jump to content

How fast are YOU?


AlmarM
 Share

Recommended Posts

Hiya!

A few people have asked me to remake my old game "Game: How fast are u?". Well, here it is!

Hope you guys enjoy!

There are still a few game modes I still have to program.

#include <String.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <Timers.au3>

Global $Diff, $Mode
Global $CurTimer, $Timer

MsgBox(64, "Welcome!", "How fast are YOU?"  & @CRLF & @CRLF & "A remake of my old game." & @CRLF & "- AlmarM")

_GameStyle()
Sleep(500)

If ($Mode == "time") Then _TimePlay()
If ($Mode == "score") Then _ScorePlay()
If ($Mode == "challenge") Then _ChallengePlay()
If ($Mode == "reflex") Then _ReflexPlay()

Func _GameStyle()
    $GUI = GUICreate("Select your gaming style!", 360, 305)

    GUIStartGroup()
    GUICtrlCreateLabel("Select your skill", 10, 10)
    $Easy = GUICtrlCreateRadio("Easy", 10, 30)
    $Medium = GUICtrlCreateRadio("Medium", 60, 30)
    $Hard = GUICtrlCreateRadio("Hard", 10, 50)
    $Insane = GUICtrlCreateRadio("Insane", 60, 50)

    GUIStartGroup()
    GUICtrlCreateLabel("Select game mode", 10, 90)
    $Mode1 = GUICtrlCreateRadio("Mode 1", 10, 110)
    GUICtrlCreateLabel("- Time play, click the buttons as fast as you can.", 10, 130)
    $Mode2 = GUICtrlCreateRadio("Mode 2", 10, 150)
    GUICtrlCreateLabel("- Score play, click as fast as possible to keep your score high.", 10, 170)
    $Mode3 = GUICtrlCreateRadio("Mode 3", 10, 190)
    GUICtrlCreateLabel("- Challenge play, click as many buttons as possible before time runs out.", 10, 210)
    $Mode4 = GUICtrlCreateRadio("Mode 4", 10, 230)
    GUICtrlCreateLabel("- Reflex play, click the button before it disappears.", 10, 250)

    $Select = GUICtrlCreateButton("Select", 80, 275, 200, 20)

    GUICtrlSetState($Easy, 1)
    GUICtrlSetState($Mode1, 1)

    GUISetState()
    While Sleep(10)
        Switch GUIGetMsg()
            Case -3
                Exit

            Case $Select
                If (GUICtrlRead($Easy) = 1) Then $Diff = "easy"
                If (GUICtrlRead($Medium) = 1) Then $Diff =  "medium"
                If (GUICtrlRead($Hard) = 1) Then $Diff = "hard"
                If (GUICtrlRead($Insane) = 1) Then $Diff = "insane"

                If (GUICtrlRead($Mode1) = 1) Then $Mode = "time"
                If (GUICtrlRead($Mode2) = 1) Then $Mode = "score"
                If (GUICtrlRead($Mode3) = 1) Then $Mode = "challenge"
                If (GUICtrlRead($Mode4) = 1) Then $Mode = "reflex"

                GUIDelete($GUI)
                ExitLoop
        EndSwitch
    WEnd
EndFunc

Func _TimePlay()
    Local $aBtns[36]
    Local $iCurBtn, $iNum = 1, $aLength = UBound($aBtns) - 1
    Local $aAVG[1], $iAVGNum = -1

    $GUI = GUICreate("* Difficulty: " & _StringProper($Diff) & " | Mode: Time Play *", 340, 530)

    Local $Left, $Top, $Size, $RLeft
    If ($Diff == "easy") Then
        $Size = 45
        $Left = 10
        $RLeft = $Left
        $Top = 10
    EndIf
    If ($Diff == "medium") Then
        $Size = 35
        $Left = 15
        $RLeft = $Left
        $Top = 15
    EndIf
    If ($Diff == "hard") Then
        $Size = 25
        $Left = 20
        $RLeft = $Left
        $Top = 20
    EndIf
    If ($Diff == "insane") Then
        $Size = 15
        $Left = 23
        $RLeft = $Left
        $Top = 23
    EndIf

    For $i = 0 To $aLength
        $aBtns[$i] = GUICtrlCreateButton("", $Left, $Top, $Size, $Size)
        GUICtrlSetState(-1, $GUI_DISABLE)

        $Left += 55

        For $x = 5 To 35 Step 6
            Switch ($i)
                Case $x
                    $Left = $RLeft
                    $Top += 55
            EndSwitch
        Next
    Next

    GUICtrlSetData($aBtns[0], "x")
    GUICtrlSetState($aBtns[0], $GUI_ENABLE)

    $Edit = GUICtrlCreateEdit("Last saved time:" & @CRLF & @CRLF, 10, 345, 320, 150, $ES_READONLY + $ES_AUTOVSCROLL)
    $Input = GUICtrlCreateInput("Avg: -", 10, 500, 60, 20, $ES_READONLY)
    GUICtrlCreateLabel("seconds.", 75, 503)
    $CurTimer = GUICtrlCreateInput("", 300, 500, 30)

    GUISetState()
    While 1
        Switch GUIGetMsg()
            Case -3
                Exit

            Case $aBtns[0]
                GUICtrlSetData($aBtns[0], "")
                GUICtrlSetState($aBtns[0], $GUI_DISABLE)

                $Timer = _Timer_Init()
             AdlibRegister("__setTime", 100)

                $R = Random(1, $aLength - 1, 1)
                GUICtrlSetState($aBtns[$R], $GUI_ENABLE)
                GUICtrlSetData($aBtns[$R], "x")
                $iCurBtn = $R
                $iNum += 1

            Case $aBtns[$iCurBtn]
                If ($iNum < 25) Then
                    GUICtrlSetData($aBtns[$iCurBtn], "")
                    GUICtrlSetState($aBtns[$iCurBtn], $GUI_DISABLE)

                    $iCurBtn = Random(1, $aLength - 1, 1)
                    $iNum += 1

                    GUICtrlSetData($aBtns[$iCurBtn], "x")
                    GUICtrlSetState($aBtns[$iCurBtn], $GUI_ENABLE)
                Else
                    GUICtrlSetData($aBtns[$iCurBtn], "")
                    GUICtrlSetState($aBtns[$iCurBtn], $GUI_DISABLE)
                    GUICtrlSetData($aBtns[$aLength], "x")
                    GUICtrlSetState($aBtns[$aLength], $GUI_ENABLE)
                EndIf

            Case $aBtns[$aLength]
              AdlibUnRegister("__setTime")
                $Time = _Timer_Diff($Timer)
             _Timer_KillTimer($GUI, $Timer)

                GUICtrlSetData($aBtns[$aLength], "")
                GUICtrlSetState($aBtns[$aLength], $GUI_DISABLE)
                GUICtrlSetData($aBtns[0], "x")
                GUICtrlSetState($aBtns[0], $GUI_ENABLE)

                $iNum = 0
                $iAVGNum += 1
                ReDim $aAVG[$iAVGNum + 1]
                $aAVG[$iAVGNum] = Round($Time / 1000, 1)

                GUICtrlSetData($Edit, Round($Time / 1000, 1) & " seconds." & @CRLF, "|")
                GUICtrlSetData($Input, "Avg: " & Round(_ArrayAverage($aAVG), 1))

        EndSwitch
    WEnd
EndFunc

Func __setTime()
    GUICtrlSetData($CurTimer, Round((_Timer_Diff($Timer) / 1000) , 1))
EndFunc

Func _ScorePlay()
    Local $aBtns[36], $Play = False
    Local $iCurBtn, $iNum = 1, $aLength = UBound($aBtns) - 1
    Local $aAVG[1], $iAVGNum = -1, $Score = 2500

    $GUI = GUICreate("* Difficulty: " & _StringProper($Diff) & " | Mode: Time Play *", 340, 530)

    Local $Left, $Top, $Size, $RLeft
    If ($Diff == "easy") Then
        $Size = 45
        $Left = 10
        $RLeft = $Left
        $Top = 10
    EndIf
    If ($Diff == "medium") Then
        $Size = 35
        $Left = 15
        $RLeft = $Left
        $Top = 15
    EndIf
    If ($Diff == "hard") Then
        $Size = 25
        $Left = 20
        $RLeft = $Left
        $Top = 20
    EndIf
    If ($Diff == "insane") Then
        $Size = 15
        $Left = 23
        $RLeft = $Left
        $Top = 23
    EndIf

    For $i = 0 To $aLength
        $aBtns[$i] = GUICtrlCreateButton("", $Left, $Top, $Size, $Size)
        GUICtrlSetState(-1, $GUI_DISABLE)

        $Left += 55

        For $x = 5 To 35 Step 6
            Switch ($i)
                Case $x
                    $Left = $RLeft
                    $Top += 55
            EndSwitch
        Next
    Next

    GUICtrlSetData($aBtns[0], "x")
    GUICtrlSetState($aBtns[0], $GUI_ENABLE)

    $Edit = GUICtrlCreateEdit("Last saved score:" & @CRLF & @CRLF, 10, 345, 320, 150, $ES_READONLY + $ES_AUTOVSCROLL)
    $Input = GUICtrlCreateInput("Avg: -", 10, 500, 60, 20, $ES_READONLY)
    GUICtrlCreateLabel("score.", 75, 503)
    $CurScore = GUICtrlCreateInput("", 300, 500, 30)

    GUISetState()
    While 1
        Switch GUIGetMsg()
            Case -3
                Exit

            Case $aBtns[0]
              $Score = 2500
              GUICtrlSetData($CurScore, $Score)

                GUICtrlSetData($aBtns[0], "")
                GUICtrlSetState($aBtns[0], $GUI_DISABLE)

                $R = Random(1, $aLength - 1, 1)
                GUICtrlSetState($aBtns[$R], $GUI_ENABLE)
                GUICtrlSetData($aBtns[$R], "x")
                $iCurBtn = $R
                $iNum += 1
                $Play = True

            Case $aBtns[$iCurBtn]
              GUICtrlSetData($CurScore, $Score)

                If ($iNum < 25) Then
                    $Score += 100

                    GUICtrlSetData($aBtns[$iCurBtn], "")
                    GUICtrlSetState($aBtns[$iCurBtn], $GUI_DISABLE)

                    $iCurBtn = Random(1, $aLength - 1, 1)
                    $iNum += 1

                    GUICtrlSetData($aBtns[$iCurBtn], "x")
                    GUICtrlSetState($aBtns[$iCurBtn], $GUI_ENABLE)
                Else
                    GUICtrlSetData($aBtns[$iCurBtn], "")
                    GUICtrlSetState($aBtns[$iCurBtn], $GUI_DISABLE)
                    GUICtrlSetData($aBtns[$aLength], "x")
                    GUICtrlSetState($aBtns[$aLength], $GUI_ENABLE)
                EndIf

            Case $aBtns[$aLength]
                $Play = False

                GUICtrlSetData($aBtns[$aLength], "")
                GUICtrlSetState($aBtns[$aLength], $GUI_DISABLE)
                GUICtrlSetData($aBtns[0], "x")
                GUICtrlSetState($aBtns[0], $GUI_ENABLE)

                $iNum = 0
                $iAVGNum += 1
                ReDim $aAVG[$iAVGNum + 1]
                $aAVG[$iAVGNum] = $Score

                GUICtrlSetData($Edit, $Score & " score." & @CRLF, "|")
                GUICtrlSetData($Input, "Avg: " & _ArrayAverage($aAVG, 1))
        EndSwitch

        If ($Play) Then
            Sleep(25)
            $Score -= 4
        EndIf
    WEnd
EndFunc

Func _ChallengePlay()
    Local $aBtns[36], $btnCount = 0, $R, $Play = False
    Local $iCurBtn, $aLength = UBound($aBtns) - 1
    Local $aAVG[1], $iAVGNum = -1

    $GUI = GUICreate("* Difficulty: " & _StringProper($Diff) & " | Mode: Challenge Play *", 340, 530)

    Local $Left, $Top, $Size, $RLeft
    If ($Diff == "easy") Then
        $Size = 45
        $Left = 10
        $RLeft = $Left
        $Top = 10
    EndIf
    If ($Diff == "medium") Then
        $Size = 35
        $Left = 15
        $RLeft = $Left
        $Top = 15
    EndIf
    If ($Diff == "hard") Then
        $Size = 25
        $Left = 20
        $RLeft = $Left
        $Top = 20
    EndIf
    If ($Diff == "insane") Then
        $Size = 15
        $Left = 23
        $RLeft = $Left
        $Top = 23
    EndIf

    For $i = 0 To $aLength
        $aBtns[$i] = GUICtrlCreateButton("", $Left, $Top, $Size, $Size)
        GUICtrlSetState(-1, $GUI_DISABLE)

        $Left += 55

        For $x = 5 To 35 Step 6
            Switch ($i)
                Case $x
                    $Left = $RLeft
                    $Top += 55
            EndSwitch
        Next
    Next

    GUICtrlSetData($aBtns[0], "x")
    GUICtrlSetState($aBtns[0], $GUI_ENABLE)

    $Edit = GUICtrlCreateEdit("Last saved count:" & @CRLF & @CRLF, 10, 345, 320, 150, $ES_READONLY + $ES_AUTOVSCROLL)
    $Input = GUICtrlCreateInput("Avg: -", 10, 500, 60, 20, $ES_READONLY)
    GUICtrlCreateLabel("buttons.", 75, 503)
    $CurTimer = GUICtrlCreateInput("", 300, 500, 30)

    GUISetState()
    While 1
        Switch GUIGetMsg()
            Case -3
                Exit

            Case $aBtns[0]
            $btnCount = 0

            $Timer = _Timer_Init()
             AdlibRegister("__setTimer", 100)

             $Play = True

                GUICtrlSetData($aBtns[0], "")
                GUICtrlSetState($aBtns[0], $GUI_DISABLE)

                $R = Random(1, $aLength - 1, 1)
                GUICtrlSetState($aBtns[$R], $GUI_ENABLE)
                GUICtrlSetData($aBtns[$R], "x")
                $iCurBtn = $R

            Case $aBtns[$iCurBtn]
            $btnCount += 1

            GUICtrlSetData($aBtns[$iCurBtn], "")
            GUICtrlSetState($aBtns[$iCurBtn], $GUI_DISABLE)

            $iCurBtn = Random(1, $aLength - 1, 1)
               GUICtrlSetData($aBtns[$iCurBtn], "x")
               GUICtrlSetState($aBtns[$iCurBtn], $GUI_ENABLE)

            Case $aBtns[$aLength]
              AdlibUnRegister("__setTimer")
             _Timer_KillTimer($GUI, $Timer)

             GUICtrlSetData($CurTimer, 0)

                GUICtrlSetData($aBtns[$aLength], "")
                GUICtrlSetState($aBtns[$aLength], $GUI_DISABLE)
                GUICtrlSetData($aBtns[0], "x")
                GUICtrlSetState($aBtns[0], $GUI_ENABLE)

                $iAVGNum += 1
                ReDim $aAVG[$iAVGNum + 1]
                $aAVG[$iAVGNum] = $btnCount

                GUICtrlSetData($Edit, $btnCount & " buttons clicked." & @CRLF, "|")
                GUICtrlSetData($Input, "Avg: " & Round(_ArrayAverage($aAVG), 1))
        EndSwitch

        If ($Play) Then
            If (Round(_Timer_Diff($Timer) / 1000, 1) > 20) Then
                GUICtrlSetData($aBtns[$iCurBtn], "")
                GUICtrlSetState($aBtns[$iCurBtn], $GUI_DISABLE)

                GUICtrlSetData($aBtns[$aLength], "x")
                GUICtrlSetState($aBtns[$aLength], $GUI_ENABLE)

                AdlibUnRegister("__setTimer")
                $Play = False
            EndIf
        EndIf
    WEnd
EndFunc

Func __setTimer()
    GUICtrlSetData($CurTimer, Round(_Timer_Diff($Timer) / 1000, 1))
EndFunc

Func _ReflexPlay()
    $GUI = GUICreate("* Difficulty: " & _StringProper($Diff) & " | Mode: Reflex Play *", 150, 30)

    GUICtrlCreateLabel("*** Under construction ***", 14, 10)

    GUISetState()
    While 1
        Switch GUIGetMsg()
            Case -3
                Exit
        EndSwitch
    WEnd
EndFunc

; # ---------------------------
Func _ArrayAverage(ByRef $Array, $iRound = 0)
    Local $aTotal = _ArrayTotal($Array, 1)

    If ($iRound == 0) Then Return ($aTotal[1] / $aTotal[0])
    If ($iRound == 1) Then Return Round(($aTotal[1] / $aTotal[0]), 0)
EndFunc

Func _ArrayTotal(ByRef $Array, $iOption = 0, $iRound = 0)
    If Not IsArray($Array) Then Return SetError(1, 0, 0)

    Local $iTmp = 0

    For $i = 0 To UBound($Array) - 1
        $iTmp2 = $iTmp
        $iTmp = $Array[$i] + $iTmp2
    Next

    Switch ($iOption)
        Case 0
            If ($iRound == 0) Then Return $iTmp
            If ($iRound == 1) Then Return Round($iTmp, 0)

        Case 1
            Local $aReturn[2]
            $aReturn[0] = UBound($Array)
            If ($iRound == 0) Then $aReturn[1] = $iTmp
            If ($iRound == 1) Then $aReturn[1] = Round($iTmp, 0)

            Return $aReturn
    EndSwitch
EndFunc

Post your personal records!

AlmarM ;)

EDIT [25-08-'10]: Added Mode 2!

EDIT [28-08-'10]: Added Mode 3!

Edited by AlmarM

Minesweeper

A minesweeper game created in autoit, source available.

_Mouse_UDF

An UDF for registering functions to mouse events, made in pure autoit.

2D Hitbox Editor

A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes.

Link to comment
Share on other sites

Niiice.

14 secs is my avarage, i think i can do faster, but my mouse hand is tierd ;) .

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

I'm at work now, mayby I can put some time on the other game-mode while having a coffee break. ;)

EDIT: Tested on XP, wow looks awful. :)

Edited by AlmarM

Minesweeper

A minesweeper game created in autoit, source available.

_Mouse_UDF

An UDF for registering functions to mouse events, made in pure autoit.

2D Hitbox Editor

A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes.

Link to comment
Share on other sites

I'm not sure if I can make those modes at work, im using XP here and it looks awful. ;)

I'll do my best.

Edited by AlmarM

Minesweeper

A minesweeper game created in autoit, source available.

_Mouse_UDF

An UDF for registering functions to mouse events, made in pure autoit.

2D Hitbox Editor

A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...