私は戦艦ゲーム用の10x10グリッドを作成しています。私は2D配列のベクトルテンプレートを使用しており、初期化するときに問題に遭遇しています。私は2Dベクトルを初期化するとき、私は' '
に10x10ベクトルの各スペースを設定しようとしていますが、何らかの理由で1つのスペースの代わりに10スペースに初期化されて各座標を取得しています。2Dベクトルの初期化:初期設定の奇妙な長さ
board.hpp
#ifndef BOARD_HPP
#define BOARD_HPP
#include "ship.hpp"
#include <vector>
class Board
{
private:
std::vector<std::vector<char> > coordinate;
Ship carrier;
Ship battleship;
Ship floater;
Ship submarine;
Ship destroyer;
public:
Board();
char *coord(int row, int column);
};
#endif // BOARD_HPP
board.cppここ
#include "board.hpp"
Board::Board() : coordinate(std::vector<std::vector<char> >(10, std::vector<char>(10, ' '))), carrier('C',5), battleship('B',4), floater('F',3), submarine('S',3), destroyer('D',2)
{
//Constructor
}
char *Board::coord(int row, int column)
{
return &coordinate[row][column];
}
ゲームはボードに供給ファイルです:
game.hpp
#ifndef GAME_HPP
#define GAME_HPP
#include "board.hpp"
class Game
{
private:
Board *playerBoard;
Board *compBoard;
Board *compBoardHidden;
public:
Game(Board *player_board, Board *comp_board, Board *comp_board_hidden);
void display();
};
#endif // GAME_HPP
game.cpp
#include "game.hpp"
#include <iostream>
Game::Game(Board *player_board, Board *comp_board, Board *comp_board_hidden) : playerBoard(player_board), compBoard(comp_board), compBoardHidden(comp_board_hidden)
{
//Constructor
}
void Game::display()
{
std::cout << " | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|" <<std::endl;
for (int i = 0; i < 10; i++)
{
std::cout << " ---+---+---+---+---+---+---+---+---+---+---+ ---+---+---+---+---+---+---+---+---+---+---+\n " << char(65+i) << " | " << playerBoard->coord(i,0) << " | " << playerBoard->coord(i,1) << " | " << playerBoard->coord(i,2) << " | " << playerBoard->coord(i,3) << " | " << playerBoard->coord(i,4) << " | " << playerBoard->coord(i,5) << " | " << playerBoard->coord(i,6) << " | " << playerBoard->coord(i,7) << " | " << playerBoard->coord(i,8) << " | " << playerBoard->coord(i,9) << " | " << char(65+i) << " | " << compBoard->coord(i,0) << " | " << compBoard->coord(i,1) << " | " << compBoard->coord(i,2) << " | " << compBoard->coord(i,3) << " | " << compBoard->coord(i,4) << " | " << compBoard->coord(i,5) << " | " << compBoard->coord(i,6) << " | " << compBoard->coord(i,7) << " | " << compBoard->coord(i,8) << " | " << compBoard->coord(i,9) << " |" << std::endl;
}
}
あなたはベクトルを初期化するために ''''を使用しています。なぜスペースで埋められているのだろうか?あなたの問題を正しく理解していますか? – Rakete1111
うーん、私は各座標ごとに1つのスペースを持つベクトルを初期化しようとしています。しかし、座標[0] [0]のような私のベクトルの座標を参照するときには、文字 ''ではなく '10' 'の文字が1つだけ含まれていません – ChillyPenguin672
Oooh。まあ、私は[再現できません](http://coliru.stacked-crooked.com/a/ed46ead6639d5c88)。 [mcve]を作成してください。 – Rakete1111