I am somewhat new to the c++, so you've been warned.
Yesterday I decided I wanted to create a program that displayed a Go board
and allowed you make moves. Fairly simple task, didn't take me that long but, I feel that the code could be a lot shorter and I also want to add a save feature but am not sure how to go about it.
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
/* a go board is a 19x19 grid, and stones are placed on the one of the 361 intersections
but here for the sake of easiness these intersections will be represented with
dots*/
int rownum,colnum;count = 0
const int ROWS = 19,COLUMNS = 19;
char board[ROWS][COLUMNS]=
{ {'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , 'o' , '.' , '.' , '.' , '.' , '.' , 'o' , '.' , '.' , '.' , '.' , '.' , 'o' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , 'o' , '.' , '.' , '.' , '.' , '.' , 'o' , '.' , '.' , '.' , '.' , '.' , 'o' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , 'o' , '.' , '.' , '.' , '.' , '.' , 'o' , '.' , '.' , '.' , '.' , '.' , 'o' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'},
{'.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.' , '.'} };
Wow 0.o huge right, this is the biggest part of it, this is where I wonder, could I make it any smaller. If there's anyway that I could make this smaller so I don't have to see such a horrible eyesore of a multidimensional array, that would be great.
void displayBoard();
int main()
{ do {
start:
displayBoard();
cout << "\n\n\nPlayer1>>";
cout << "Column: ";
cin >> colnum;
cout << "Row: ";
cin >> rownum;
if (board[rownum-1][colnum-1] == 'X' or board[rownum-1][colnum-1] == '0')
{cout << "\nThere is already a stone on that intersection!\n"; goto start;}
else
board[rownum-1][colnum-1] = 'X';
start1:
displayBoard();
cout << "\n\n\nPlayer2>>>";
cout << "Column: ";
cin >> colnum;
cout << "Row: ";
cin >> rownum;
if (board[rownum-1][colnum-1] == 'X' or board[rownum-1][colnum-1] == '0')
{cout << "\nThere is already a stone on that intersection!\n"; goto start1;}
else
board[rownum-1][colnum-1] = '0';
}while (colnum <= 19);
system("PAUSE");
return 0;}
void displayBoard()
{ int count=0;
cout <<"Play Go!\n";
cout << "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19"<< endl;
for (int i = 0; i < ROWS; ++i)
{
for (int j = 0; j < COLUMNS; ++j)
{
cout << board[i][j];
cout << " ";
}
count = count + 1;cout << count;cout << endl;
}
cout <<"围棋";
count=0;}
And here's where I've stopped. Now I want the save_game function to
basically take displayBoard()s' output and save it to the filename and directory of my users choice. Now, of course this program is lacking quite a few pieces and there's no real way to exit it quite yet(don't really care about it). Any advice or solutions you have would be very much appreciated.
Thanks for your time!