
"井字遊戲"
這禮拜程式設計課出的作業
我是第一次寫這種遊戲,寫的有點亂(其實是非常亂)
不過還蠻有成就感的啦!! 第一次寫就寫出來了!!
其中有問題的地方也沒有卡太久,不錯不錯!
放了個寒假沒有順便把C也放進去冰了,一切都蠻順的!!
我以後會把更多的程式分享給大家,有興趣的可以看看^^..
◎如果沒有編譯器但想玩玩看的朋友可以點下面的迴紋針下載,檔案安全無毒啦!!

以下是Code:
/*
龍仔設計
2008/03/18
歡迎轉載,多多指教
*/
#include <stdio.h>
#include <stdlib.h>
int print(char paint[5][11]);
void insert_O(char paint[5][11],int);
void insert_X(char paint[5][11],int);
int check(char paint[5][11]);
void last_print(char paint[5][11]);
int used[9]={0};
int count=1;
int main ()
{
int input;
char paint[5][11]={ " 7│ 8│ 9",
"─┼─┼─",
" 4│ 5│ 6",
"─┼─┼─",
" 1│ 2│ 3"};
do
{
input=print(paint);
insert_O(paint,input);
count++;
if (check(paint))
{
last_print(paint);
printf ("\n【圈圈 獲勝!!】\n\n");
system ("pause");
exit(0) ;
}
if (count>=9)
break;
input=print(paint);
insert_X(paint,input);
count++;
if (check(paint))
{
last_print(paint);
printf ("\n【叉叉 獲勝!!】\n\n");
system ("pause");
exit(0) ;
}
}while (count<=9);
last_print(paint);
printf ("\n【雙方平手!!】\n\n");
system ("pause");
return 0;
}
/*印出圖形與檢查輸入*/
int print(char paint[5][11])
{
int input,error;
/*如果輸入不再1~9,重新輸入*/
do
{
error=0;
/*清除畫面與印出*/
system ("cls");
for (int i=0;i<5;i++)
printf ("%s\n",paint[i]);
printf ("\n請選擇號碼:");
scanf ("%d",&input);
fflush (stdin);
/*檢查有無重複輸入*/
used[count-1]=input;
for (int a=0;a<(count-1);a++)
if (used[a]==input)
{
input=0;
error=1;
break;
}
/*當有錯誤時顯示訊息*/
if ((input<1 || input>9) || (error==1))
{
printf ("\n【重複輸入或輸入錯誤!!】\n\n");
system ("pause");
}
}while ((input<1 || input>9));
return input;
}
/*插入圈圈*/
void insert_O(char paint[5][11],int input)
{
switch (input)
{
case 1:paint[4][1]='O'; break;
case 2:paint[4][5]='O'; break;
case 3:paint[4][9]='O'; break;
case 4:paint[2][1]='O'; break;
case 5:paint[2][5]='O'; break;
case 6:paint[2][9]='O'; break;
case 7:paint[0][1]='O'; break;
case 8:paint[0][5]='O'; break;
case 9:paint[0][9]='O'; break;
}
}
/*插入圈圈*/
void insert_X(char paint[5][11],int input)
{
switch (input)
{
case 1:paint[4][1]='X'; break;
case 2:paint[4][5]='X'; break;
case 3:paint[4][9]='X'; break;
case 4:paint[2][1]='X'; break;
case 5:paint[2][5]='X'; break;
case 6:paint[2][9]='X'; break;
case 7:paint[0][1]='X'; break;
case 8:paint[0][5]='X'; break;
case 9:paint[0][9]='X'; break;
}
}
/*判斷是否連成一條線*/
int check(char paint[5][11])
{
if ((paint[0][1]==paint[0][5])&&(paint[0][5]==paint[0][9]))
return 1;
if ((paint[2][1]==paint[2][5])&&(paint[2][5]==paint[2][9]))
return 1;
if ((paint[4][1]==paint[4][5])&&(paint[4][5]==paint[4][9]))
return 1;
if ((paint[0][1]==paint[2][1])&&(paint[2][1]==paint[4][1]))
return 1;
if ((paint[0][5]==paint[2][5])&&(paint[2][5]==paint[4][5]))
return 1;
if ((paint[0][9]==paint[2][9])&&(paint[2][9]==paint[4][9]))
return 1;
if ((paint[0][1]==paint[2][5])&&(paint[2][5]==paint[4][9]))
return 1;
if ((paint[0][9]==paint[2][5])&&(paint[2][5]==paint[4][1]))
return 1;
return 0;
}
/*印出井字圖案*/
void last_print(char paint[5][11])
{
system ("cls");
for (int i=0;i<5;i++)
printf ("%s\n",paint[i]);
}






不愧是程設小老師
給你拍拍