Может кто помочь объяснить какие свойство или прием использовать... не понимаю как объединить все вместе в одной функции(


#1

//10. Представим, что вы создаете rpg игру. Напишите структуру для хранения координаты игрока, enum для направлений (восток, сервер, запад, юг) и функцию, которая берет к себе на вход позицию и направление и возвращает новую координату (после того как игрок походил на одну клетку в соответствующую сторону). Вызовите эту функцию несколько раз, «походив» своим игроком.
Вот что я натворил…

enum Command {

case up, down, right, left

}

struct CurrentPosition {

static var x: Int = 0

static var y: Int = 0

var level = Command()

func walk(x: Int, y: Int){

<#function body#>

}

init (x: Int, y: Int) {

CurrentPosition. self .x = x

CurrentPosition. self .y = y

}

}

Заранее всем спасибо


#2
  1. static для свойств тут не нужен

  2. функция не принимает у вас направление движения

  3. у функции нету возвращаемого типа

  4. init для структуры в вашем случае излишен, т.к. структура имеет инициализатор по дефолту

  5. как по мне, функция не должна принимать позицию, т.к. позиция уже хранится в самой структуре

  6. для простоты я бы сделал для каждого направления действие с позицией, т.е.

    enum Command {
     case up, down, right, left
    
     var action: Int {
         switch self {
             case .up, .right:
                 return 1
             default:
                 return -1
         }
     }
    }
    

Останется только сделать вычисление в функции в зависимости от направления.


#3

Спасибо за содержательный ответ:) Очень помогли