#ios #swift #save #saving-data #state-saving
#iOS #swift #Сохранить #сохранение -данные #Сохранение состояния
Вопрос:
Я 9-классник, только что изучающий программирование. После того, как я получил основы, я решил, что сделаю игру cookie Clicker в swift. Я выполнил это и все еще работаю над этим, чтобы усовершенствовать его и сделать более воспроизводимым, но я не могу заставить его автоматически сохраняться. Я пробовал вставлять и изменять некоторые другие строки, но я делаю что-то не так. Я хочу, чтобы она автоматически сохраняла переменные 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) amp;amp; (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) amp;amp; (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) amp;amp; (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) amp;amp; (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) amp;amp; (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) amp;amp; (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:
Я думаю, это сработает
Вариант 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)"
}
Следующий шаг такой же, как шаг 3 в варианте 1