borland

Started by
1 comment, last by DevFred 15 years, 9 months ago
for all the users of borland, i need some help. im making a chess game the code is like this : ________________________________________________________________________________ #include <iostream> using namespace std; int main() { char c[8][8] = {}; c[0][3] = 'Q'; c[7][3] = 'q'; c[0][4] = 'K'; c[7][4] = 'k'; c[0][2] = 'N'; c[0][5] = 'N'; c[7][5] = 'n'; c[7][2] = 'n'; c[7][1] = 'b'; c[7][6] = 'b'; c[0][6] = 'B'; c[0][1] = 'B'; c[0][7] = 'R'; c[7][7] = 'r'; c[7][0] = 'r'; c[0][0] = 'R'; c[1][1] = 'P'; c[1][2] = 'P'; c[1][3] = 'P'; c[1][4] = 'P'; c[1][5] = 'P'; c[1][6] = 'P'; c[1][7] = 'P'; c[1][0] = 'P'; c[6][1] = 'p'; c[6][2] = 'p'; c[6][3] = 'p'; c[6][4] = 'p'; c[6][5] = 'p'; c[6][6] = 'p'; c[6][7] = 'p'; c[6][0] = 'p'; for(int i = 0; i<8; i++){ for(int j = 0; j<8; j++){ cout << c[j] << " "; } cout << endl; ________________________________________________________________________________ when i ompile that using borland it says somehting is wrong with the line that says: char c[8][8] = {}; it says there is an expected expression in function main(). can someone tell me how to fix this?
Advertisement
Here's what you wrote:

int main() {
for(int i = 0; i<8; i++){
for(int j = 0; j<8; j++){
cout << c[j] << " ";
}

Number of opening brackets: 3
Number of closing brackets: 1

Also:
char c[8][8] = {};
is not a proper way to declare an array.
char c[8][8];
will do fine.

Do you know what an enum is? They're much less cryptic than using chars and will make your code more self-explanatory. Otherwise, good documentation would note your code: 'Q' = Queen, 'K' = King, 'N' = knight, etc. I'd expect 'k' to be knight, you see, but it's good that you didn't do that because it's a little easy to confuse K and k.
Quote:Original post by Splinter of Chaos
Do you know what an enum is?

Possible use of enum for chess:
#include <iostream>enum player { black, white };enum piece { empty, pawn, bishop, knight, rook, queen, king };const char display[2][7] = {{'.', 'p', 'b', 'n', 'r', 'q', 'k'},                            {'.', 'P', 'B', 'N', 'R', 'Q', 'K'}};struct field{    player pl : 1;    piece pi : 3;    bool is(player pla, piece pie)    {        return pl == pla && pi == pie;    }    friend std::ostream& operator<<(std::ostream& os, field f)    {        os << display[f.pl][f.pi];        return os;    }};#define EMPTY {black, empty}#define EMPTYLINE {EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY},#define PAWNS(player) {{player, pawn}, {player, pawn}, {player, pawn}, {player, pawn},                        {player, pawn}, {player, pawn}, {player, pawn}, {player, pawn}},#define LINE(player)  {{player, rook}, {player, knight}, {player, bishop}, {player, queen},                        {player, king}, {player, bishop}, {player, knight}, {player, rook}},int main(){    field board[8][8] = {        LINE(black)        PAWNS(black)        EMPTYLINE        EMPTYLINE        EMPTYLINE        EMPTYLINE        PAWNS(white)        LINE(white)    };    for (int i = 0; i < 8; ++i)    {        for (int k = 0; k < 8; ++k)        {            std::cout << board[k] << ' ';        }        std::cout << std::endl;    }    if (board[0][0].pl == black)        std::cout << "that's how you test for color\n";    if (board[0][0].pi == rook)        std::cout << "that's how you test for piece\n";    if (board[0][0].is(black, rook))        std::cout << "that's how you test for colored piece\n";}

You should possible make the board a class, too (if you know classes already).

Hm, the gamedev board doesn't seem to like the trailing backslash in macro definitions, it expands them itself :)

This topic is closed to new replies.

Advertisement