我只有幫你把程式碼改正,其他那個什麼檔的我也不太清楚,唯一知道的大概就是.H(標頭檔),其他的話我的猜測應該是編譯過程中產生的中繼檔吧!
再次提醒你盡量多學著自己看錯誤訊息 , 以後這種小問題難不倒你的....
我在有錯的後面都有加上 //修正# , 裡面第幾行我是用我改過後的行數來計算不知道有沒有一樣
修正1(第4行):這邊我是把char那改成陣列,其他我沒動,盡量保持原樣
修正2(第34行):因為你的宣告是傳址呼叫 , 所以 a , b可以直接丟進去 , 除非你宣告是用指標才要加&
修正3(第49行):最機車的一個錯誤,遽然會因為註解而編譯錯誤,我在註解的最後面"成功"的後面加一個 . 就OK了
修正4(第50行):這裡本來你是寫 ( 應該是 {
修正5(第54行):你原本是用'◇',因為'◇'是代表兩個Byte的字,可是char只能接受一個Byte的字元所以我換成 '-',如果你想把'◇'印出來,你可以在他print的時候加一個判定如果是'-'就print'◇'
我應該只有改這幾個地方吧 , 如果還有我也不太記得是哪了....
裡面值的一提的是第三個修正 , 錯在這真的很冤枉 , 不過這似乎是dev c++的Bug,Visual C++就沒這種問題 , 但是這也不是每次都會發生,似乎只會發生再 ) 後面加上註解才會出現錯誤 , 用dev C++的時候要特別留意"成功"這兩個中文字 ....
複製程式
#include<stdio.h>
#include<stdlib.h>
void newchestplayer(char [][9],int &,int &);//修正1
int main(void)
{
int a,b;
char chest[9][9];//9X9大小的棋盤
int i=0,j=0;//i,j皆為計數器
for(i=0;i<9;i++)//用來變換橫座標
{
for(j=0;j<9;j++)//用來變換直座標
{
chest[i][j] = ']'//把陣列中的元素設成 " ] "
}
}
for(i=0;i<9;i++)//用來移動橫座標
{
printf("\n");
for(j=0;j<9;j++)//用來移動直座標
{
printf("%c",chest[i][j]);//將棋盤印出
printf(" ");//加入空格較為整潔
}
}
printf("\n\n\n");
printf("歡迎來到四子棋的世界\n\n");
printf("----電腦隨機選擇(先下或後下中)----\n");
newchestplayer( chest , a , b );//修正2
system("PAUSE");
return 0;
}
void newchestplayer(char chest[][9],int &a,int &b)//a,b是用來存玩家落子位置
{
//讀入玩家下子位置
//判斷是否可以下
//如果可以則下,不可以則繼續要求輸入
//下完之後印出最新棋盤
int i=0,j=0;
bool haveleaveplayer = false;//表示是否下子成功與否
while(haveleaveplayer == false)//判斷是否下子成功. //修正3
{//修正4
scanf("%d %d",&a,&b);
if( chest[a][b] == ']' )//如果輸入的位置沒有落子
{
chest[a][b] = '-'//則可以下子 //修正5
haveleaveplayer = true;//已經下子了
}
else
{
printf("不好意思你輸入的這個位置有人囉~~!\n");
printf("請重新輸入一次!(x,y)>>\n");
}
}
for(i=0;i<9;i++)//印出玩家下子後的新棋盤
{
printf("\n");
for(j=0;j<9;j++)
{
printf("%c",chest[i][j]);
printf(" ");
}
}//end for
}//end newchestplayer