#pragma once #include constexpr int NAME_LENGHT = 6; /* Un array, "characterList", contiene la lista de caracteres Un segundo array, "characterIndex", contiene el indice a "characterList" de cada una de las letras que conforman el nombre "pos" es la posición de "characterIndex" que se está modificando Izquierda o derecha modifican "pos", arriba o abajo modifican el índice de "characterIndex[pos]" Pulsar cualquier botón, mueve "pos" a la derecha. Al pulsar el botón en la ´´ultima posición se finaliza la introducción de nombres */ // Clase EnterName class EnterName { private: std::string character_list_; // Lista de todos los caracteres permitidos std::string name_; // Nombre introducido int position_; // Posición a editar del nombre int num_characters_; // Cantidad de caracteres de la lista de caracteres int character_index_[NAME_LENGHT]; // Indice de la lista para cada uno de los caracteres que forman el nombre bool position_has_been_used_[NAME_LENGHT]; // Indica si en esa posición se ha puesto ya alguna letra. Se utiliza para replicar la letra anterior la primera vez // Actualiza el nombre a partir de la lista de índices void updateName(); // Actualiza la variable void updateCharacterIndex(); // Encuentra el indice de un caracter en "characterList" int findIndex(char character) const; // Comprueba la posición y copia el caracter si es necesario void checkIfPositionHasBeenUsed(); public: // Constructor EnterName(); // Destructor ~EnterName() = default; // Inicializa el objeto void init(); // Incrementa la posición void incPosition(); // Decrementa la posición void decPosition(); // Incrementa el índice void incIndex(); // Decrementa el índice void decIndex(); // Obtiene el nombre std::string getName() const; // Obtiene la posición que se está editando int getPosition() const; };