从txt制作一个BattleShip Board

时间:2015-04-28 22:32:04

标签: c++

我需要一些非常大的帮助来解决这个问题

这是我的BoardPlayer课程:

class Board {
public:
    Board(const string &filename);
    //bool putShip(const Ship &s);
    void moveShips();
    //bool attack(const Bomb &b);
    void display()const;
    void show()const;
    void initializeGrid();

private:
    int numLines, numColumns;
    //vector <Ship> ships;
    vector <vector<int> > board;
};

class Player{
public:
    Player(string playerName, string boardFileName);
    void showBoard() const;
    //Bomb getBomb() const;
    //void attackBoard(const Bomb &b);
private:
   string name;
   Board board;
};

这不是我做的,这些是我需要在最终的c ++项目中实现的类。

我正在努力制作电路板(开发功能void Player::viewBoard()

txt文件将是这样的

Board 10x10

我已经开发了一个可以同时读取10&#s并将其保存在numLinesnumColumns中的函数:

Board::Board(const string &filename){
    string tmp;
    ifstream config;
    config.open(filename.c_str()); 

    if (config.is_open()) {
        config >> tmp >> numLines >> tmp >> numColumns;
    }
}

但现在呢?如何使用主板上指定的尺寸为播放器播放器制作电路板?

有任何帮助吗?我非常感谢任何有帮助的人,这可以节省我的学期。谢谢大家和最诚挚的问候。

3 个答案:

答案 0 :(得分:0)

好的类定义说该板是一个向量载体的向量

您需要生成numcolumns整数的numlines向量并将它们存储在板中。 (阅读std :: vector)

我假设每个int代表该单元格的内容。你必须决定每个价值的含义 - 或者类设计师是否已经决定了这一点。由于我们无法看到其他方法,我们不知道

答案 1 :(得分:0)

“为播放器制作电路板”实质上意味着您创建了Board类的实例,该实例是Player类的私有成员。您已经在Player类中声明了对象,因此您只需要实例化它。您可以创建指向该类的指针,然后取消引用该指针。例如:

Foo *f = new Foo(/*params*/);
foo = *f; 

假设“foo”已被声明为私人成员。

答案 2 :(得分:0)

首先,使用'resize'(http://www.cplusplus.com/reference/vector/vector/resize/)方法,使用您从文件中获得的维度初始化'board'变量。