Jump to content
TwistedXion

Help with game

Recommended Posts

TwistedXion

Ok so I'm making a game in auto it and I need some help with optimizing the code(making it shorter/faster or better ways of doing things) and if you could when you make suggestions please explain why you suggest those changes as I'm very new to autoit and am doing this project just to learn more about the language (first computer language I have ever tried to learn)

thanks for any help in advance, also you may need to uncomment the #requireAdmin as it does need to make a dir to save a .ini file where all the info about your character.

 

ps I know it's not much of a game but I have only been working on the code for a few hours and I will be adding a lot more stuff, so this is by no mean finished. 

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
;~ #RequireAdmin
Global $nClickButtonCount = 0
Global $pDamage = 0
Global $bDamage = 0
Global $fPath = @AppDataCommonDir & "\Fantom\Path"
Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
Global $cTName = IniRead($fPath & "\" & "InFo", "Name", "ToonName", "")
Global $cUName = IniRead($fPath & "\" & "InFo", "Name", "UserName", "")

#Region ### START mm GUI section ###
$mm = GUICreate("MainMenu", 238, 199, 337, 189)
$tName = GUICtrlCreateInput($cTName, 64, 64, 113, 21)
$uName = GUICtrlCreateInput($cUName, 64, 120, 113, 21)
GUICtrlCreateLabel("ToonName", 90, 40, 57, 17)
GUICtrlCreateLabel("UserName", 91, 96, 54, 17)
$Enter = GUICtrlCreateButton("Enter", 90, 151, 57, 41)
GUISetState(@SW_SHOW, $mm)
#EndRegion ### START mm GUI section ###

#Region ### START Town GUI section ###
$Town = GUICreate("Town", 387, 316, 396, 122)
$TGroup1 = GUICtrlCreateGroup("", 0, 0, 385, 313)
$TButton1 = GUICtrlCreateButton("Inn", 8, 8, 57, 33)
$TButton2 = GUICtrlCreateButton("Wild", 320, 8, 57, 33)
$TButton3 = GUICtrlCreateButton("Gen store", 8, 48, 57, 33)
GUISetState(@SW_HIDE, $Town)
#EndRegion ### START Town GUI section ###

#Region ### START Wild GUI section ###
$Wild = GUICreate("Wild", 387, 316, 396, 122)
$WGroup1 = GUICtrlCreateGroup("", 0, 0, 385, 313)
$WButton1 = GUICtrlCreateButton("Town", 8, 8, 57, 33)
$WButton2 = GUICtrlCreateButton("Fight", 320, 8, 57, 33)
GUISetState(@SW_HIDE, $Wild)
#EndRegion ### START Wild GUI section ###

#Region ### START Fight GUI section ###
$Fight = GUICreate("Fight", 390, 319, 396, 122)
$listview = GUICtrlCreateListView("Your Damage | Eneime Damage | Your HP | Eneime HP", 2, 146, 386, 150)
$Progress1 = GUICtrlCreateProgress(8, 32, 185, 25)
$Progress2 = GUICtrlCreateProgress(200, 32, 185, 25)
$YourHP = GUICtrlCreateLabel("YourHP", 8, 8, 41, 17)
$EneimeHP = GUICtrlCreateLabel("EneimeHP", 200, 8, 56, 17)
$Start = GUICtrlCreateButton("Start", 158, 80, 73, 41)
$Attack = GUICtrlCreateButton("Attack", 158, 80, 73, 41)
GUISetState(@SW_HIDE, $Fight)
#EndRegion ### START Fight GUI section ###

#Region ### START Inn GUI section ###
$Inn = GUICreate("Inn", 390, 319, 396, 122)
$hpdisplay = GUICtrlCreateLabel("You have " & $pGold & " gold", 16, 8, 100, 100)
$fullH = GUICtrlCreateButton("Heal", 8, 111, 73, 57)
$drink = GUICtrlCreateButton("Drink", 120, 111, 73, 57)
$eat = GUICtrlCreateButton("eat", 232, 111, 73, 57)
$bttown = GUICtrlCreateButton("town", 8, 250, 73, 57)
$fRHP = GUICtrlCreateLabel("Fully Restore HP", 0, 96, 83, 17)
$aHPlDam = GUICtrlCreateLabel("Adds more HP" & @LF & "lowers Dammage", 232, 80, 83, 30)
$Label1 = GUICtrlCreateLabel("Add more Dammage" & @LF & "Lower HP", 120, 80, 100, 30)
GUISetState(@SW_HIDE, $Inn)
#EndRegion ### START Inn GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Enter
            $iniTName = GUICtrlRead($tName)
            $iniUName = GUICtrlRead($uName)
            DirCreate($fPath)
            IniWrite($fPath & "\" & "InFo", "Name", "ToonName", $iniTName)
            IniWrite($fPath & "\" & "InFo", "Name", "UserName", $iniUName)
            GUIDelete($mm)
            GUISetState(@SW_SHOW, $Town)
        Case $TButton2
            GUISetState(@SW_HIDE, $Town)
            GUISetState(@SW_SHOW, $Wild)
        Case $WButton1
            GUISetState(@SW_HIDE, $Wild)
            GUISetState(@SW_SHOW, $Town)
        Case $WButton2
            GUISetState(@SW_HIDE, $Wild)
            GUISetState(@SW_SHOW, $Fight)
        Case $Start
            GUICtrlDelete($Start)
            GUISetState(@SW_SHOW)
            Start()
        Case $Attack
            Dice()
        Case $TButton1
            GUISetState(@SW_HIDE, $Town)
            GUISetState(@SW_SHOW, $Inn)
        Case $bttown
            GUISetState(@SW_HIDE, $Inn)
            GUISetState(@SW_SHOW, $Town)
        Case $fullH
            GUICtrlSetData($Progress1, 100)
            If $pGold >= 100 Then
                IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold - 100)
                $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
                GUICtrlSetData($hpdisplay, "You have " & $pGold & " gold")
            Else
                MsgBox(1, "Sorry", "You do not have enough gold for that action", 1)
            EndIf
    EndSwitch
WEnd

Func Start()
    GUICtrlSetData($Progress1, 100)
    GUICtrlRead($Progress1)
    GUICtrlSetData($Progress2, 100)
    GUICtrlRead($Progress2)
EndFunc   ;==>Start

Func Dice()
    Global $pDamage = Random(1, 20, 1)
    Global $bDamage = Random(1, 20, 1)
    Global $gGold = Random(0, 50, 1)
    Damage()
EndFunc   ;==>Dice

Func Damage()
    $cpHP = GUICtrlRead($Progress1)
    $cbHP = GUICtrlRead($Progress2)
    $pHP = $cpHP - $bDamage
    $bHP = $cbHP - $pDamage
    GUICtrlSetData($Progress1, $pHP)
    GUICtrlSetData($Progress2, $bHP)
    GUICtrlRead($Progress1)
    GUICtrlRead($Progress2)
    $listview = GUICtrlCreateListView("Your Damage | Eneime Damage | Your HP | Eneime HP", 2, 146, 386, 150)
    GUICtrlCreateListViewItem($pDamage & "|" & $bDamage & "|" & $pHP & "|" & $bHP, $listview)

    If $pHP <= 0 And $bHP <= 0 Then
        IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold + $gGold)
        GUICtrlDelete($listview)
        GUISetState(@SW_HIDE, $Fight)
        GUISetState(@SW_SHOW, $Town)
        Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
        MsgBox(1, "Draw", "You Draw..." & @LF & "You get " & $gGold & " gold" & @LF & " you now have " & $pGold)
        GUICtrlSetData($Progress2, 100)
    ElseIf $bHP <= 0 Then
        IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold + $gGold)
        GUICtrlDelete($listview)
        GUISetState(@SW_HIDE, $Fight)
        GUISetState(@SW_SHOW, $Town)
        Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
        MsgBox(1, "Win", "You win..." & @LF & "You get " & $gGold & " gold" & @LF & " you now have " & $pGold)
        GUICtrlSetData($Progress2, 100)
    ElseIf $pHP <= 0 Then

        GUICtrlDelete($listview)
        GUISetState(@SW_HIDE, $Fight)
        GUISetState(@SW_SHOW, $Town)
        GUICtrlSetData($Progress2, 100)
        Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
        MsgBox(1, "Death", "You died...")
        $t = MsgBox(4, "Dead", "Would you like to revive")

        If $t = 6 Then
            $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
            If $pGold < 25 Then
                GUICtrlSetData($Progress1, 75)
            Else
                $pGold = $pGold - 25
                GUICtrlSetData($Progress1, 100)
                Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
                IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold + $gGold)
                MsgBox(1, "Revived", "Your new gold amount is " & $pGold)
            EndIf

        ElseIf $t = 7 Then
            Exit
        EndIf
    EndIf
EndFunc   ;==>Damage

 

  • Like 1

Share this post


Link to post
Share on other sites
Xandy

Your game is neat.

I'd like to show off some skills with graphics.  If you are interested in graphics you might be able to learn from these scripts.

There is a bug with loading world chunks too often, but that aside this code runs a pretty smooth world environment in AutoIt.

 

Have a look here.

http://songersoft.com/programming/dw3_remake/dw3_remake_about.phtml

The map editor script has all of this code.

Edited by Xandy

Share this post


Link to post
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

  • Similar Content

    • simonc8
      By simonc8
      I have a script which executes sleep for a couple of hours then carries out instructions. Does the running AutoIt script prevent the computer from entering sleep mode during this time? If not, is there something I can add to the AutoIt script to keep the computer awake?
      Grateful for advice.
    • gahhon
      By gahhon
      Hi,
      I have a program that is read data from the .txt file, since the .txt file is only readable, viewable and editable for the admin user.
      But how could I lock it with password, or some other technique that can helps to achieve this?
      Thanks for the advanced information.
    • gahhon
      By gahhon
      Hi,
      How can I the trigger the another button functions without waiting the previous function to finish execute?
      Any advise?
      I couldn't find any relevant topics via google.
      Thanks a lot.
    • SharpDressedMan
      By SharpDressedMan
      Hi all,
      I need to use ControlMove() on some controls of a hidden GUI window.
      This works properly on a GUI window created with default style, but does not work on a GUI window created with style $WS_OVERLAPPEDWINDOW
      func GUItest($bOverlapped) $m = GUICreate("test", 200, 100, -1, -1, $bOverlapped ? $WS_OVERLAPPEDWINDOW : -1) $g = GUICtrlCreateButton("test", 0, 0) ControlMove($m, "", $g, 30, 30) GUISetState() endfunc GuiTest(false) ; button 'test' properly moved to (30,30) GuiTest(true) ; button 'test' not moved and still sitting at (0,0) Any reason for this unexpected behavior ?
      Any workaround to fix this ?
      Thanks for any help
    • 2Toes
      By 2Toes
      Hi all..
      I'm having slight issue that has be a bit puzzled.
      I have an Input control.. After a certain function runs, it Disables that Input control, and sets it to ReadOnly.
      When running another certain function, it re-Enables that Input control, and sets the style back to Default.
      Which does work, however, when typing into the Input control after re-Enabling it, the text appears as a light gray color, rather than its original black color.
      I'm sure there's a simple solution here.. But what that is, appears to be beyond me.
      Here is a simplified example code:
      #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 245, 215, 192, 124) Global $disableBTN = GUICtrlCreateButton("Disable", 32, 64, 75, 25) Global $enableBTN = GUICtrlCreateButton("Enable", 128, 64, 75, 25) Global $Input1 = GUICtrlCreateInput("", 32, 120, 169, 21) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $disableBTN disable() Case $enableBTN enable() EndSwitch WEnd Func disable() GUICtrlSetState($Input1, $GUI_DISABLE) GUICtrlSetStyle($Input1, $ES_READONLY) EndFunc Func enable() GUICtrlSetState($Input1, $GUI_ENABLE) GUICtrlSetStyle($Input1, $GUI_SS_DEFAULT_INPUT) EndFunc  
      Any help would be greatly appreciated
      Thank you in advance!
×