系統公告
我們的檔案
個人圖檔
ID:tony1007
暱稱:蕙龍仔

發文日期
Dec 2009
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
網誌分類
訂閱豆豆龍的天空
請輸入您的信箱!
經由您信箱驗證後
我會自動將每次更新的內容寄給您!!

請輸入您的信箱:

Delivered by FeedBurner
【你也可以擁有信箱訂閱!】

好時光貼曆
BloggerAds 廣告
誰來過哩?

人氣 UP UP !!
當日人次:
累積人次:
豆豆龍統計資料
RSS 訂閱
RSS2
ATOM
贊助商
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam天空部落 本身立場。
POWERED BY
POWERED BY
會員登入免費註冊
March 18, 2008


"井字遊戲"
這禮拜程式設計課出的作業
我是第一次寫這種遊戲,寫的有點亂(其實是非常亂)
不過還蠻有成就感的啦!!  第一次寫就寫出來了!!
其中有問題的地方也沒有卡太久,不錯不錯! 
放了個寒假沒有順便把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]);
}

 
引用 (你可以針對此文寫一篇屬於自己的blog/想法,並給作者一個通告)
引用
留言 (2筆)
1.
不錯喔~
不愧是程設小老師
給你拍拍
 
醉老人 於 2008-04-25 22:33:09 留言 |
2.
可以 解釋一下 程式ㄇ??

不好意思............


 
Ling 於 2009-01-21 17:45:19 留言 |
發表你的留言 (字數限制 最多 2000 個中文字)
私密留言:
Name:






內容: