Creando un tablero a partir de un archivo

Iniciado por Sothu, 26 Diciembre 2015, 18:12 PM

0 Miembros y 2 Visitantes están viendo este tema.

Sothu

Si me pudieses ayudar en la tarea de crearla te lo agradeceria mucho... estoy muy pero que muy perdido :S

MAFUS

La lógica que he usado ha sido esta:
Leo la primera línea del archivo y la guardo en un array.
La recorro en busca  de dos números.
Al primero lo convierto de carácter a su valor y se lo doy a filas.
Hago lo mismo con las columnas.
Leo la segunda línea del archivo y la guardo en el array usado anteriormente.
Recorro el array en busca de números, a medida que los voy encontrando los convierto al valor que representan y los voy sumando.
Si la suma todos esos números es diferente a filas x columnas o hay 0 flias o hay 0 columnas, paro el programa e informo al usuario que el archivo tiene datos erróneos.
Si todo está bien creo otro array de números de tamaño filas x columnas.
Recorro de nuevo el array que contiene una copia de la segunda línea del archivo.
Por cada número que hay hago lo siguiente:
    En un bucle de tantos pasos como indica el número:
        Incluir en el segundo array un vacío o lleno, según si el valor de una variable (k) es 0 o 1.
        Aumentar el índice del segundo array.
    Fuera del buce anterior, pero aún dentro de lo que se hace por cada número complemento el valor de (k).
Una vez construido el array el resto del código es que te he mostrado.

Sothu

Si me pudieras pasar el codigo que tienes te lo agradeceria ya que no soy capaz de realizarlo..
Saludos

Eternal Idol

Cita de: Sothu en 12 Enero 2016, 16:00 PM
Si me pudieras pasar el codigo que tienes te lo agradeceria ya que no soy capaz de realizarlo..
Saludos

Tene en cuenta que no se hacen tareas, trata de leer el codigo que ya te dieron y comprender la explicacion que te dieron.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Sothu

He avanzado algo, lo que me falta ahora es crear el borde del tablero con los # y las letras a b c d tal como se ve en la imagen: https://imageshack.us/i/p5BQ0KKlp
dejo el codigo que tengo hasta el momento:
#include <iostream>
#include <fstream>

using namespace std;

void llegirTauler(std::ifstream &in)
{
    int n, m, x, current = 0;
    bool black = true;
    in >> n >> m;

    while (in >> x)
    {
        if (black)
        {
            while (current <= m and x)
            {
                if (current == m)
                {
                    std::cout << "\n";
                    current = 0;
                }
                std::cout << "#";
                ++current;
                --x;
            }
            black = false;
        }
        else
        {
            while (current <= m and x)
            {
                if (current == m)
                {
                    std::cout << "\n";
                    current = 0;
                }
                std::cout << " ";
                ++current;
                --x;
            }
            black = true;
        }
    }
}

int main()
{
    int nombreJugadors;
    cout << "BENVINGUTS A OKUPACIO !" << endl;
    cout << "ENTRA NOMBRE DE JUGADORS (2-10):" << endl;
    cin >> nombreJugadors;
    while (nombreJugadors<2 || nombreJugadors>10)
    {
        cout << "ENTRA NOMBRE DE JUGADORS (2-10):" << endl;
        cin >> nombreJugadors;
    }
    cout << "NOM DEL FITXER DEL TAULER:" << endl;
    string nomFitxer;
    cin >> nomFitxer;
    ifstream file(nomFitxer.c_str());
    if (file.is_open())
    {
        llegirTauler(file);
    }
    else cout << "NO ES POR OBRIR EL FITXER";
    return 0;
}


Lo que se obtiene ahora al correr el programa es lo siguiente (como veis faltan los bordes): http://postimg.org/image/l4a6fcwv5/

MAFUS

¿Número de jugadores? ¿Cómo es el juego?

Sothu

La idea es crear un tablero donde diversos jugadores puedan ir ocupando casillas (con unas ciertas condiciones) y gana el que mas casillas ocupa al final del juego.

MAFUS

Parece divertido. Publícalo cuándo lo termines  :)