[英]Using UserDefaults to store score for a clicker game (Swift 5)
[英]Need help making Swift Cookie Clicker Game Automatically Save
我是一名 9 年級學生,剛剛學習編程。 在我掌握了基礎知識后,我想我會很快制作一個餅干點擊游戲。 我做到了這一點,並且仍在努力改進它並使其更具可玩性,但我無法讓它自動保存。 我嘗試了其他一些粘貼和修改的行,但我做錯了。 我希望它在更新時自動保存變量 click 和 mult 。 任何幫助表示贊賞,謝謝。
//
// ViewController.swift
// EthanClicker
//
// Created by Ethan on 10/4/20.
//
import UIKit
class ViewController: UIViewController {
//Outlets/////////////////////////////////
@IBOutlet weak var clickOutput: UILabel!
@IBOutlet weak var multOutput: UILabel!
@IBOutlet weak var messageOutput: UILabel!
//Variables/////////////////////////////////
@objc var click = 0
var mult = 1
@IBAction func clickMeButton(_ sender: Any) {
click = click + (1 * mult)
clickOutput.text = "\(click)"
}
@IBAction func twoX(_ sender: Any) {
if ((click >= 100) && (mult == 1)) {
mult = 2
click = click - 100
multOutput.text = "\(mult)"
clickOutput.text = "\(click)"
messageOutput.text = "Nice Job! Keep Going!"
} else {
error()
}
}
@IBAction func fourX(_ sender: Any) {
if ((click >= 1000) && (mult == 2)) {
mult = 4
click = click - 1000
clickOutput.text = "\(click)"
multOutput.text = "\(mult)"
messageOutput.text = "Getting closer, Keep Going!"
} else {
error()
}
}
@IBAction func eightX(_ sender: Any) {
if ((click >= 10000) && (mult == 4)) {
mult = 8
click = click - 10000
clickOutput.text = "\(click)"
multOutput.text = "\(mult)"
messageOutput.text = "You Did It! Now Keep Playing To See How High You Can Go"
} else {
error()
}
}
@IBAction func sixteenX(_ sender: Any) {
if ((click >= 100000) && (mult == 8)) {
mult = 16
click = click - 100000
clickOutput.text = "\(click)"
multOutput.text = "\(mult)"
messageOutput.text = "You Did It! Now Keep Playing To See How High You Can Go"
} else {
error()
}
}
@IBAction func thirtytwox(_ sender: Any) {
if ((click >= 1000000) && (mult == 16)) {
mult = 32
click = click - 1000000
clickOutput.text = "\(click)"
multOutput.text = "\(mult)"
messageOutput.text = "You Did It! Now Keep Playing To See How High You Can Go"
} else {
error()
}
}
@IBAction func sixtyfourX(_ sender: Any) {
if ((click >= 10000000) && (mult == 32)) {
mult = 64
click = click - 10000000
clickOutput.text = "\(click)"
multOutput.text = "\(mult)"
messageOutput.text = "You Did It! Now Keep Playing To See How High You Can Go"
} else {
error()
}
}
func error() {
messageOutput.text = "Not enough Clicks, keep going!"
}
override func viewDidLoad() {
super.viewDidLoad()
clickOutput.text = "\(click)"
multOutput.text = "\(mult)"
messageOutput.text = ""
}
}
我認為這會奏效
選項 1:將第一個代碼段添加到代碼末尾
func updateUI(){ clickOutput.text = "\\(click)" }
@IBAction func clickMeButton(_ sender: Any) { click = click + (1 * mult) clickOutput.text = "\\(click)" }
改成這個
@IBAction func clickMeButton(_ sender: Any) { click = click + (1 * mult) clickOutput.text = "\\(click)" updateUI() }
選項 2:另一個想法是讓 updateUI() 也做計數,而且,如果你想,你應該使用運算符 += 來添加數字
func updateUI() { click += 1 clickOutput.text = "\\(click)" }
下一步與選項 1 中的步驟 3 相同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.