How do I increase a value by a number (cps) every second on single view?










0















I have been looking at previous questions, however, they seem to be outdated or do not work for my case. In my application I want to increase a variable (money) every second by another variable (cps). When I try doing forever loops or using timers, I either get errors or nothing occurs.



class SecondViewController: UIViewController 
var money = 0
var cost = 20
var clicks = 1
var cost2 = 50
var CPS: Int = 0
var truth = true

@IBOutlet weak var costOutlet2: UILabel!
@IBOutlet weak var errorLabel: UILabel!
@IBOutlet weak var cpsButtonOutlet: UILabel!
@IBOutlet weak var clicksButtonOutlet: UIButton!
@IBOutlet weak var clicksOutlet: UILabel!
@IBOutlet weak var cpsOutlet: UILabel!
@IBOutlet weak var scoreOutlet2: UILabel!
@IBOutlet weak var costOutlet: UILabel!
@IBOutlet weak var cpsBtnOutlet: UIButton!

override func prepare(for backsegue: UIStoryboardSegue, sender: Any?)
let controller = backsegue.destination as! ViewController
controller.money = Int(scoreOutlet2.text!)!
controller.clicks = Int(clicksOutlet.text!)!
controller.CPS = Int(cpsOutlet.text!)!
controller.cost = Int(cost)
controller.cost2 = Int(cost2)


override func viewDidLoad()
super.viewDidLoad()
costOutlet2.isHidden = true
costOutlet.isHidden = true
costOutlet.text = "(cost)"
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"
cpsOutlet.text = "(CPS)"
errorLabel.isHidden = true
clicksButtonOutlet.setTitle("$(cost): +1 Clicks", for: .normal)
cpsBtnOutlet.setTitle("$(cost2): +1 CPS", for: . normal)


override func viewDidAppear(_ animated: Bool)
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"


@IBAction func addClicks(_ sender: Any)
if (money >= cost)
money = money - cost
scoreOutlet2.text = "(money)"
cost = cost * 3
clicks = clicks + 1
clicksOutlet.text = "(clicks)"
(sender as AnyObject).setTitle("$(cost): +1 Clicks", for:)
print(cost)
else
insufficent()



@IBAction func addCps(_ sender: Any)
if (money >= cost2)
money = money - cost2
scoreOutlet2.text = "(money)"
cost2 = cost2 * 3
CPS = CPS + 1
cpsOutlet.text = "(CPS)"
(sender as AnyObject).setTitle("$(cost2): +1 CPS", for:)
else
insufficent()



func insufficent()
errorLabel.isHidden = false
errorLabel.text = "Insufficent Funds"
DispatchQueue.main.asyncAfter(deadline: .now() + 3.5)
self.errorLabel.isHidden = true





I am currently trying to make a clicker game on Swift 4 Xcode 10, I am able to make the CPS increase when it is purchased, however, when it is bought the value of money does not go up every second. How can I make the variable "money" increase by whatever the value of "CPS" is.










share|improve this question



















  • 2





    The code you posted makes no attempt to update anything every second. Please show what you tried and clearly explain what issues you are having.

    – rmaddy
    Nov 13 '18 at 16:59















0















I have been looking at previous questions, however, they seem to be outdated or do not work for my case. In my application I want to increase a variable (money) every second by another variable (cps). When I try doing forever loops or using timers, I either get errors or nothing occurs.



class SecondViewController: UIViewController 
var money = 0
var cost = 20
var clicks = 1
var cost2 = 50
var CPS: Int = 0
var truth = true

@IBOutlet weak var costOutlet2: UILabel!
@IBOutlet weak var errorLabel: UILabel!
@IBOutlet weak var cpsButtonOutlet: UILabel!
@IBOutlet weak var clicksButtonOutlet: UIButton!
@IBOutlet weak var clicksOutlet: UILabel!
@IBOutlet weak var cpsOutlet: UILabel!
@IBOutlet weak var scoreOutlet2: UILabel!
@IBOutlet weak var costOutlet: UILabel!
@IBOutlet weak var cpsBtnOutlet: UIButton!

override func prepare(for backsegue: UIStoryboardSegue, sender: Any?)
let controller = backsegue.destination as! ViewController
controller.money = Int(scoreOutlet2.text!)!
controller.clicks = Int(clicksOutlet.text!)!
controller.CPS = Int(cpsOutlet.text!)!
controller.cost = Int(cost)
controller.cost2 = Int(cost2)


override func viewDidLoad()
super.viewDidLoad()
costOutlet2.isHidden = true
costOutlet.isHidden = true
costOutlet.text = "(cost)"
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"
cpsOutlet.text = "(CPS)"
errorLabel.isHidden = true
clicksButtonOutlet.setTitle("$(cost): +1 Clicks", for: .normal)
cpsBtnOutlet.setTitle("$(cost2): +1 CPS", for: . normal)


override func viewDidAppear(_ animated: Bool)
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"


@IBAction func addClicks(_ sender: Any)
if (money >= cost)
money = money - cost
scoreOutlet2.text = "(money)"
cost = cost * 3
clicks = clicks + 1
clicksOutlet.text = "(clicks)"
(sender as AnyObject).setTitle("$(cost): +1 Clicks", for:)
print(cost)
else
insufficent()



@IBAction func addCps(_ sender: Any)
if (money >= cost2)
money = money - cost2
scoreOutlet2.text = "(money)"
cost2 = cost2 * 3
CPS = CPS + 1
cpsOutlet.text = "(CPS)"
(sender as AnyObject).setTitle("$(cost2): +1 CPS", for:)
else
insufficent()



func insufficent()
errorLabel.isHidden = false
errorLabel.text = "Insufficent Funds"
DispatchQueue.main.asyncAfter(deadline: .now() + 3.5)
self.errorLabel.isHidden = true





I am currently trying to make a clicker game on Swift 4 Xcode 10, I am able to make the CPS increase when it is purchased, however, when it is bought the value of money does not go up every second. How can I make the variable "money" increase by whatever the value of "CPS" is.










share|improve this question



















  • 2





    The code you posted makes no attempt to update anything every second. Please show what you tried and clearly explain what issues you are having.

    – rmaddy
    Nov 13 '18 at 16:59













0












0








0








I have been looking at previous questions, however, they seem to be outdated or do not work for my case. In my application I want to increase a variable (money) every second by another variable (cps). When I try doing forever loops or using timers, I either get errors or nothing occurs.



class SecondViewController: UIViewController 
var money = 0
var cost = 20
var clicks = 1
var cost2 = 50
var CPS: Int = 0
var truth = true

@IBOutlet weak var costOutlet2: UILabel!
@IBOutlet weak var errorLabel: UILabel!
@IBOutlet weak var cpsButtonOutlet: UILabel!
@IBOutlet weak var clicksButtonOutlet: UIButton!
@IBOutlet weak var clicksOutlet: UILabel!
@IBOutlet weak var cpsOutlet: UILabel!
@IBOutlet weak var scoreOutlet2: UILabel!
@IBOutlet weak var costOutlet: UILabel!
@IBOutlet weak var cpsBtnOutlet: UIButton!

override func prepare(for backsegue: UIStoryboardSegue, sender: Any?)
let controller = backsegue.destination as! ViewController
controller.money = Int(scoreOutlet2.text!)!
controller.clicks = Int(clicksOutlet.text!)!
controller.CPS = Int(cpsOutlet.text!)!
controller.cost = Int(cost)
controller.cost2 = Int(cost2)


override func viewDidLoad()
super.viewDidLoad()
costOutlet2.isHidden = true
costOutlet.isHidden = true
costOutlet.text = "(cost)"
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"
cpsOutlet.text = "(CPS)"
errorLabel.isHidden = true
clicksButtonOutlet.setTitle("$(cost): +1 Clicks", for: .normal)
cpsBtnOutlet.setTitle("$(cost2): +1 CPS", for: . normal)


override func viewDidAppear(_ animated: Bool)
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"


@IBAction func addClicks(_ sender: Any)
if (money >= cost)
money = money - cost
scoreOutlet2.text = "(money)"
cost = cost * 3
clicks = clicks + 1
clicksOutlet.text = "(clicks)"
(sender as AnyObject).setTitle("$(cost): +1 Clicks", for:)
print(cost)
else
insufficent()



@IBAction func addCps(_ sender: Any)
if (money >= cost2)
money = money - cost2
scoreOutlet2.text = "(money)"
cost2 = cost2 * 3
CPS = CPS + 1
cpsOutlet.text = "(CPS)"
(sender as AnyObject).setTitle("$(cost2): +1 CPS", for:)
else
insufficent()



func insufficent()
errorLabel.isHidden = false
errorLabel.text = "Insufficent Funds"
DispatchQueue.main.asyncAfter(deadline: .now() + 3.5)
self.errorLabel.isHidden = true





I am currently trying to make a clicker game on Swift 4 Xcode 10, I am able to make the CPS increase when it is purchased, however, when it is bought the value of money does not go up every second. How can I make the variable "money" increase by whatever the value of "CPS" is.










share|improve this question
















I have been looking at previous questions, however, they seem to be outdated or do not work for my case. In my application I want to increase a variable (money) every second by another variable (cps). When I try doing forever loops or using timers, I either get errors or nothing occurs.



class SecondViewController: UIViewController 
var money = 0
var cost = 20
var clicks = 1
var cost2 = 50
var CPS: Int = 0
var truth = true

@IBOutlet weak var costOutlet2: UILabel!
@IBOutlet weak var errorLabel: UILabel!
@IBOutlet weak var cpsButtonOutlet: UILabel!
@IBOutlet weak var clicksButtonOutlet: UIButton!
@IBOutlet weak var clicksOutlet: UILabel!
@IBOutlet weak var cpsOutlet: UILabel!
@IBOutlet weak var scoreOutlet2: UILabel!
@IBOutlet weak var costOutlet: UILabel!
@IBOutlet weak var cpsBtnOutlet: UIButton!

override func prepare(for backsegue: UIStoryboardSegue, sender: Any?)
let controller = backsegue.destination as! ViewController
controller.money = Int(scoreOutlet2.text!)!
controller.clicks = Int(clicksOutlet.text!)!
controller.CPS = Int(cpsOutlet.text!)!
controller.cost = Int(cost)
controller.cost2 = Int(cost2)


override func viewDidLoad()
super.viewDidLoad()
costOutlet2.isHidden = true
costOutlet.isHidden = true
costOutlet.text = "(cost)"
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"
cpsOutlet.text = "(CPS)"
errorLabel.isHidden = true
clicksButtonOutlet.setTitle("$(cost): +1 Clicks", for: .normal)
cpsBtnOutlet.setTitle("$(cost2): +1 CPS", for: . normal)


override func viewDidAppear(_ animated: Bool)
scoreOutlet2.text = "(money)"
clicksOutlet.text = "(clicks)"


@IBAction func addClicks(_ sender: Any)
if (money >= cost)
money = money - cost
scoreOutlet2.text = "(money)"
cost = cost * 3
clicks = clicks + 1
clicksOutlet.text = "(clicks)"
(sender as AnyObject).setTitle("$(cost): +1 Clicks", for:)
print(cost)
else
insufficent()



@IBAction func addCps(_ sender: Any)
if (money >= cost2)
money = money - cost2
scoreOutlet2.text = "(money)"
cost2 = cost2 * 3
CPS = CPS + 1
cpsOutlet.text = "(CPS)"
(sender as AnyObject).setTitle("$(cost2): +1 CPS", for:)
else
insufficent()



func insufficent()
errorLabel.isHidden = false
errorLabel.text = "Insufficent Funds"
DispatchQueue.main.asyncAfter(deadline: .now() + 3.5)
self.errorLabel.isHidden = true





I am currently trying to make a clicker game on Swift 4 Xcode 10, I am able to make the CPS increase when it is purchased, however, when it is bought the value of money does not go up every second. How can I make the variable "money" increase by whatever the value of "CPS" is.







ios swift






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 17:02









rmaddy

240k27315379




240k27315379










asked Nov 13 '18 at 16:14









Nicholas KlahrNicholas Klahr

62




62







  • 2





    The code you posted makes no attempt to update anything every second. Please show what you tried and clearly explain what issues you are having.

    – rmaddy
    Nov 13 '18 at 16:59












  • 2





    The code you posted makes no attempt to update anything every second. Please show what you tried and clearly explain what issues you are having.

    – rmaddy
    Nov 13 '18 at 16:59







2




2





The code you posted makes no attempt to update anything every second. Please show what you tried and clearly explain what issues you are having.

– rmaddy
Nov 13 '18 at 16:59





The code you posted makes no attempt to update anything every second. Please show what you tried and clearly explain what issues you are having.

– rmaddy
Nov 13 '18 at 16:59












1 Answer
1






active

oldest

votes


















1














Try to use the code in your viewController



/...
override func viewDidLoad()
super.viewDidLoad()
increaseMoneyEverySecond()


private func increaseMoneyEverySecond()
money = money + CPS
DispatchQueue.main.asyncAfter(deadline: .now()+1) [weak self] in
if let strongSelf = self
strongSelf.increaseMoneyEverySecond()



/...





share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285140%2fhow-do-i-increase-a-value-by-a-number-cps-every-second-on-single-view%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    Try to use the code in your viewController



    /...
    override func viewDidLoad()
    super.viewDidLoad()
    increaseMoneyEverySecond()


    private func increaseMoneyEverySecond()
    money = money + CPS
    DispatchQueue.main.asyncAfter(deadline: .now()+1) [weak self] in
    if let strongSelf = self
    strongSelf.increaseMoneyEverySecond()



    /...





    share|improve this answer



























      1














      Try to use the code in your viewController



      /...
      override func viewDidLoad()
      super.viewDidLoad()
      increaseMoneyEverySecond()


      private func increaseMoneyEverySecond()
      money = money + CPS
      DispatchQueue.main.asyncAfter(deadline: .now()+1) [weak self] in
      if let strongSelf = self
      strongSelf.increaseMoneyEverySecond()



      /...





      share|improve this answer

























        1












        1








        1







        Try to use the code in your viewController



        /...
        override func viewDidLoad()
        super.viewDidLoad()
        increaseMoneyEverySecond()


        private func increaseMoneyEverySecond()
        money = money + CPS
        DispatchQueue.main.asyncAfter(deadline: .now()+1) [weak self] in
        if let strongSelf = self
        strongSelf.increaseMoneyEverySecond()



        /...





        share|improve this answer













        Try to use the code in your viewController



        /...
        override func viewDidLoad()
        super.viewDidLoad()
        increaseMoneyEverySecond()


        private func increaseMoneyEverySecond()
        money = money + CPS
        DispatchQueue.main.asyncAfter(deadline: .now()+1) [weak self] in
        if let strongSelf = self
        strongSelf.increaseMoneyEverySecond()



        /...






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 16:29









        GkoluniaGkolunia

        828




        828



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285140%2fhow-do-i-increase-a-value-by-a-number-cps-every-second-on-single-view%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            Barbados

            How to read a connectionString WITH PROVIDER in .NET Core?

            Node.js Script on GitHub Pages or Amazon S3