У меня есть приложение, в котором вы можете поставить определенную сумму. Вы используете ползунок, чтобы определить, сколько ставить.
При каждом ходу (бросок костей) обновляется ваше общее сокровище (будь то выигрыш или проигрыш). Максимальное значение ползунка совпадает со значением сокровища.
Я бы хотел, чтобы ползунок обновлял свое максимальное значение после каждого броска костей (т.е. каждый раз, когда обновляется общее сокровище).
это очень короткое приложение, поэтому я копирую весь код
class ViewController: UIViewController {
@IBOutlet weak var gains: UILabel!
@IBOutlet weak var dicePlayer: UIImageView!
@IBOutlet weak var diceComputer: UIImageView!
//slider et label approprié
@IBOutlet weak var slider: UIView!
@IBOutlet weak var sliderValueLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// on appelle le generateur de gains ici
gainsAleatoires()
// et on genere aleatoirement les dés
//lancerDeDes()
}
//MARK: - Variables pour l'application
//tableau qui contient le nom des differents dés
let des: Array = ["one", "two", "three", "four", "five", "six"]
// tableau qui genere les gains
var generateurDeGains = Int.random(in: 100 ... 1000)
// deux variables qui vont simuler les lancers pour le joueur et l'ordinateur
var lancerJoueur: Int = 1
var lancerOrdinateur: Int = 1
// deux variables pour enregistrer le tresor initial ainsi que le tresor mis a jour
var initialGains = 0
//MARK: - Gestion lancer de dés
@IBAction func boutonLancerDes(_ sender: UIButton) {
// on appelle la fonction lancer de dés
lancerDeDes()
}
//MARK: - Gestion reinitialisation du jeu et des gains
@IBAction func boutonReinitialisation(_ sender: UIBarButtonItem) {
// on appelle de nouveau la fonction gains aleatoires
gainsAleatoires()
// on change la valeur du slider
//sliderValueLabel.text = "0"
}
//MARK: - Fonction qui genere un gain aleatoire entre 100 et 1000
func gainsAleatoires () {
gains.text = String(generateurDeGains)
}
//MARK: - Bouton pour changer la valeur de la somme que le joueur parie
@IBAction func sliderValueChanged(_ sender: UISlider) {
// on s'assure que la valeur du slider est affichée dans le label correspondant
let currentValue = Int(sender.value)
sliderValueLabel.text = String(currentValue)
// on donne la valeur maximale du slider qui est celle des gains générés aleatoirement
sender.maximumValue = Float(generateurDeGains)
}
//MARK:- Fonction qui gere le lancer des deux dés
func lancerDeDes() {
//on rend aleatoire les lancers du joeur et de l'ordinateur
self.lancerJoueur = Int.random(in: des.indices) + 1 // code qui rend les erreurs plus faciles a detecter
//autre ecriture : self.lancerJoueur = Int.random(in: 1...6)
self.lancerOrdinateur = Int.random(in: des.indices) + 1
UIView.animate(withDuration: 0.5) {
self.dicePlayer.image = UIImage(named: self.des[self.lancerJoueur - 1])
self.diceComputer.image = UIImage(named: self.des[self.lancerOrdinateur - 1])
}
// on appelle la fonction qui gere les scores
gestionDesScores()
}
//MARK: - Fonction qui gere les scores pour le joueur et l'ordinateur
func gestionDesScores() {
// 2 switch statements
//on appelle ici la fonction qui va donner une alerte en fonction du resultat du lancer
alertesEnFonctionDuResultat()
}
//MARK: - Fonction qui gere les resultats
func alertesEnFonctionDuResultat() {
// si le joueur gagne
if lancerJoueur > lancerOrdinateur {
// on recupere la valeur actuelle des gains
initialGains = generateurDeGains
// on appelle l'alerte
alerteSucces()
// on met a jour la valeur des gains initiale
initialGains = generateurDeGains + Int(sliderValueLabel.text!)!
//on change la valeur totale des gains
gains.text = String(initialGains)
// et on change la valeur maximale du slider
} // si l'ordinateur gagne
else if lancerJoueur < lancerOrdinateur {
//idem
initialGains = generateurDeGains
alerteEchec()
initialGains = generateurDeGains - Int(sliderValueLabel.text!)!
gains.text = String(initialGains)
} // en cas de parité
else {
alerteParite()
}
// fin de partie
if gains.text == "0" {
//on appelle la fonction fin de partie
finDeLaPartie()
}
}
//MARK: - Fonction avec alerte en cas de succès du joueur
func alerteSucces() {
let alert = UIAlertController(title: "Votre lancer est supérieur !", message: "Vous gagnez votre mise", preferredStyle: .actionSheet)
let action = UIAlertAction(title: "Continuer", style: .default, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
}
//MARK: - Fonction avec alerte en cas d'echec du joueur
func alerteEchec() {
let alert = UIAlertController(title: "Votre lancer est inférieur !", message: "Vous perdez votre mise", preferredStyle: .actionSheet)
let action = UIAlertAction(title: "Continuer", style: .default, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
}
//MARK: - Fonction en cas de parité entre joueur et ordinateur
func alerteParite() {
let alert = UIAlertController(title: "Vos lancers sont égaux !", message: "Vous devez de nouveau lancer les dés", preferredStyle: .actionSheet)
let action = UIAlertAction(title: "Continuer", style: .default, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
}
//MARK: - Fonction qui gere le cas où on n'a plus de tresor et donc il faut reinitialiser
func finDeLaPartie() {
let alert = UIAlertController(title: "Vous n'avez plus d'argent !", message: "Réinitialisez ou secouez l'appareil pour débuter une nouvelle partie", preferredStyle: .alert)
let action = UIAlertAction(title: "Compris", style: .default, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
}
}