[問題] 四子棋棋盤
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
我想要寫一個四子棋的程式,現在的問題在於我可以正常下子
但是列數大於7的時候下過的棋子會開始跟前面幾列互相影響
例如第0列跟第7列 第1跟2第8 以此類推
不論之前有沒有下過 都會變成後面下的
例如我一直打1
在第二次開始 在第7列開始也會出現 同樣的子
希望得到的正確結果:
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++ 4.9.9.2
有問題的code: (請善用置底文標色功能)
#include <iostream>
using namespace std;
int n = 7, k = 6;
int t = 0;
int site[6] = {0}; //
char piece[7][6]; // piece[n][k];
void showBoard();
int down(); //
bool getWinner(int, int);//
int main()
{
// cin >> n >> k;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < k; j++)
{
piece[i][j] = ' ';
}
}
showBoard();
while(t != n * k) //平手
{
int tmp = down();
if(getWinner(tmp, site[tmp])) break;
}
system("pause");
}
void showBoard()
{
for(int i = k - 1; i >= 0; i--)
{
for(int j = 0; j < n; j++)
{
cout << "----";
}
cout << "--" << endl;
for(int j = 0; j < n; j++)
{
cout << " | " << piece[i][j]; //棋子
}
cout << " |" << endl;
}
for(int j = 0; j < n; j++)
{
cout << "----";
}
cout << "--" << endl;
}
int down()
{
int row;
cout << "Enter a row:";
cin >> row;
if(site[--row] < k)
{
if(t % 2)
{
piece[site[row]][row] = 'X';
}
else
{
piece[(site[row])][row] = 'O';
}
t++;
site[row]++;
showBoard();
return row;
}
else
{
cout << "Error site" <<endl;
return down();
}
}
bool getWinner(int x, int y)
{
return false;
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.208.9
推
02/09 19:30, , 1F
02/09 19:30, 1F
→
02/09 19:30, , 2F
02/09 19:30, 2F
→
02/09 19:31, , 3F
02/09 19:31, 3F
→
02/09 19:59, , 4F
02/09 19:59, 4F
→
02/09 20:02, , 5F
02/09 20:02, 5F
→
02/09 20:03, , 6F
02/09 20:03, 6F
→
02/09 20:03, , 7F
02/09 20:03, 7F
※ 編輯: lctwolf 來自: 218.160.208.9 (02/09 20:12)
推
02/09 20:40, , 8F
02/09 20:40, 8F
→
02/09 20:40, , 9F
02/09 20:40, 9F
推
02/09 20:50, , 10F
02/09 20:50, 10F
→
02/09 20:51, , 11F
02/09 20:51, 11F
→
02/09 20:52, , 12F
02/09 20:52, 12F
→
02/09 23:09, , 13F
02/09 23:09, 13F
→
02/09 23:11, , 14F
02/09 23:11, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章