c ++(用Pawns比较所有空格)

时间:2017-07-22 10:57:09

标签: c++

我有一个棋盘游戏,有1个和16个棋子,有空格(数字值1,2,3等);每个玩家四个。

我想在某个时候展示我的棋盘游戏的结果。我尝试了下面的方法,但这将使我的代码非常长。

我有16件和100个空格,我必须重复该代码,100个空间将永远。下面的代码只适用于一个空格(第一个空格) 知道如何以简短的方式显示我的结果吗?提前谢谢!

这是我老式的方式:

//space 1                                                                       
if (bpiece1->value == 1)
{
    cout << "            bpiece1";
}
else if (bpiece2->value == 1)
{
    cout << "            bpiece2";
}
else if (bpiece3->value == 1)
{
    cout << "            bpiece3"; 
}
else if (bpiece4->value == 1)
{
    cout << "            bpiece4";
}
else if (gpiece1->value == 1)
{
    cout << "            gpiece1";
}
else if (gpiece2->value == 1)
{
    cout << "            gpiece2";
}
else if (gpiece3->value == 1)
{
    cout << "            gpiece3";
}
else if (gpiece4->value == 1)
{
    cout << "            gpiece4";
}
else if (ypiece1->value == 1)
{
    cout << "            ypiece1";
}
else if (ypiece2->value == 1)
{
    cout << "            ypiece2";
}
else if (ypiece3->value == 1)
{
    cout << "            ypiece3"; 
}
else if (y4->value == 1)
{
    cout << "            y4";
}
else if (rpiece1->value == 1)
{
    cout << "            rpiece1";
}
else if (rpiece2->value == 1)
{
    cout << "            rpiece2";
}
else if (rpiece3->value == 1)
{
    cout << "            rpiece3";
}
else if (rpiece4->value == 1)
{
    cout << "            rpiece4";
}
else
{
    cout << "            01";       
}

1 个答案:

答案 0 :(得分:1)

C ++是一种面向对象的语言。因此,我们首先创建一个存储您的电路板并在其上实现所有功能的类。像

//Board.h

#include <array>
using std::array;

enum class Figure { None, Pawn };

class Board {

private:
    array<array<Figure, 8>, 8> fields; //8x8 if it was a chess board

public:
    void print() const;
};

//Board.cpp

#include "Board.h"

#include <iostream>
using std::cout;
using std::endl;

#include <string>
using std::string;

inline string to_string(const Figure figure){
    switch(figure){
        case Figure::None:
            return " ";
        case Figure::Pawn:
            return "p";
    }
    //throw error here
    return "";
}

void Board::print() const {

    for(size_t i = 0; i < fields.size(); i++){
        for(size_t j = 0; j < fields[i].size(); j++){
            cout << to_string(fields[i][j]);
        }
        cout << endl;
    }
    cout << endl;
}

如果这对您来说是新手,您应该先阅读基本教程,并确保理解我最后编写的每一行。

这里重要的是:代表,代表,代表。不要认为“1是典当”,想想“典当就是典当”。所有具有你能想到的功能的东西应该是一个类,一个结构或一个枚举。