(X) puede ser tanto una letra como un numero.
Ejemplo:
H8 BASE
8H CACTUS
10F CEREAL
F10 BALANCE
Si ponemos H8 BASE, la palabra BASE comenzara en H8 y se colocara en
vertical sobre el tablero, mientras que con 8H BASE la casilla de origen
sera la misma pero la palabra se colocara en horizontal.
Se supondra que la sintaxis de la instruccion es correcta, es decir, que
el usuario siempre introducira dos palabras separadas por un espacio y
la primera correspondera a una coordenada, pero hay que comprobar
que el numero de la coordenada este entre 1 y 15 y su letra entre la
A y la O. En caso de que esto no se cumpla, o si alguna letra de la
palabra se sale del tablero, se debe emitir el mensaje Error: Orden
incorrecta y volver a mostrar el tablero y el rack.
Si alguna de las letras de la segunda parte (la palabra) estan en
minuscula, se pasara a mayuscula para guardar el movimiento.
Estoy intentando hacer que una funcion que devuelve una coordenada a partir de un string (por ejemplo,H10). La orientacion de la palabra (horizontal o vertical) se devuelve por referencia. En caso de que los valores del string sean incorrectos, la coordenada devuelta debe tener los valores fila=-1 y columna=-1.
Tambien otra funcion que haga que construye y devuelve un movimiento a partir de una orden,por ejemplo, H8 CACTUS. Esta funcion debe separar los campos
por el caracter de espacio y llamar a leerCoordenada con la primera
parte. El resultado de la funcion es un movimiento, con su origen,
orientacion y palabra. Si la orden no se corresponde con un movimiento,
la coordenada origen debe tener los valores fila=-1 y columna=-1.
Lo de fila=-1 y columna=-1 no entiendo mucho a lo que se refiere.
Aqui esta lo que tengo por ahora:
Código:
#include <iostream>
#include<string.h>
using namespace std;
const char LETRA[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'};
const char NUMERO[]={'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15'};
// Orientacion de la palabra (si es horizontal o vertical)
enum Orientacion {HORIZONTAL, VERTICAL};
const char PALABRA[];
int x,y;
// Caracter para indicar que una casilla no tiene ninguna letra
const char CASILLAVACIA=' ';
typedef char Letra;
// Registros
struct Coordenada
{
int fila;
int columna;
};
struct Movimiento
{
Coordenada origen;
Orientacion orientacion;
string palabra;
};
Coordenada leerCoordenada(string coord, Orientacion &orientacion)
//XY PALABRA
// X PUEDE SER UNA LETRA O UN NUMERO, PERO LE DARE A LOS NUMEROS COMO VALOR '1','2'... HASTA '15'
if (orientacion==HORIZONTAL && orientacion==LETRA[]) //hacia la derecha
{
if(orientacion==LETRA[]) //hay que hacer una cadena que se mueva hacia la derecha
for (int i=0; i<kFILAS; i++){
cout<<Letra<<Numero<<CASILLAVACIA<<PALABRA[];
}
if (orientacion==VERTICAL && orientacion==NUMERO[]) //hacia abajo
{
if(orientacion==LETRA[]) //hay que hacer dos bucles, para que se desplace las letras hacia abajo
for (int i=0; i<kFILAS; i++){
for (int j=0; j<kCOLUMNAS; j++){
cout<<Numero<<Letra<<CASILLAVACIA<<PALABRA[];
}