Единицы, десятки и сотни

swift
xcode
spritekit
swift3

#1

Доброго времени суток всем!
К примеру, у меня есть переменная типа Int. Можно ли как-то сделать так, чтобы приложение понимало, где единицы у этого числа, где десятки, а где сотые, тысячные, десятитысячные… ну и т.д.
Есть необходимость задать условие, что если единицы равны такому-то значению - выполняется какое-либо действие. Если десятки равны такому-то значению - выполняем тоже какое-то действие…
А если еще проще, то мне надо чтобы при изменении числа изменялась текстура моего нода. То есть единицы изменились - изменилась картинка. Изменились десятки - изменилась картинка.
Как все это дело реализовать я знаю, только вот не знаю как сделать, чтобы приложение понимало отдельно десятки, сотни и так далее.
К примеру есть переменная

var scores: Int = 0

и вот надо прописать что если в значении scores десятки равны 2, то такая текстура. Если сотни равны такому-то значению, то текстура у нода такая та.
Просто надо сделать несколько нодов, каждый из которых будет соответствовать единицам, десяткам, сотням и т.д.


#2

Можно преобразовать число в array of characters и обращаться к порядковому номеру числа, например:

var scores: Int = 123456
let string = "\(scores)"
let characters = string.characters.map { String($0) }

if characters[0] == "1" {
    print("сто тысяч")
}

if characters[3] == "4" {
    print("четыресто")
}

#3

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#5

Можно сделать как-то так:
Разбиваем в голове число на сотни - c, десятки - b и единицы -a.

    var score: Int = 0

    func updateScore(){ // как я и писал, наше число состоит из сотен, десятков и единиц
         score = 100*c + 10*b + a
    }

   var c: Int = 0 {
       didSet {
          print("c is changet")
          updateScore()
       }
   }

 var b: Int = 0 {
    didSet {
      print("b is changet")
      guard b <= 9 else {
           b = 0
           c = c + 1
           return
       }
       updateScore()
    }
   }
  var a: Int = 0 {
           didSet {
                print("a is changet")
                guard a <= 9 else {
                          a = 0
                          b = b + 1
                          return
                }
               updateScore()
          }
  }

Но это я так, чтоб понимали как оно должно быть! а для корректного решения вашего примера нужно взять книжку по математике и придумать решение)))


#7

Большое спасибо! Вы очень помогли :slight_smile:


#8

но ведь это не правильный ответ…