课外天地 李树青学习天地C语言程序设计 → 课上练习代码——井字游戏(Tic-tac-toe)


  共有13280人关注过本帖平板打印复制链接

主题:课上练习代码——井字游戏(Tic-tac-toe)

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1939 积分:26594 威望:0 精华:34 注册:2003/12/30 16:34:32
课上练习代码——井字游戏(Tic-tac-toe)  发帖心情 Post By:2015/12/8 12:44:33 [只看该作者]

 

井字游戏(Tic-tac-toe)
#define UNIT 150
#define NUMBER 3
#include "graphics.h"
#include "stdio.h"
#include "stdlib.h"

main()
{
    int driver=VGA,model=VGAHI;
    int i=0,j=0,x=0,y=0,count=0,sum=0,product=0;
    char str[25];
    int array[NUMBER][NUMBER];
    initgraph(&driver,&model,"");
    ege::initgraph(UNIT*NUMBER ,UNIT*NUMBER);
    setbkcolor(RED);
    setcolor(BLACK);

    for(i=0; i<NUMBER; i++)
        for(j=0; j<NUMBER; j++)
            array[i][j]=0;

    for(i=0; i<NUMBER; i++)
        for(j=0; j<NUMBER; j++)
        {
            if(i%2==0)
            {
                bar(i*UNIT,j*UNIT,(i+1)*UNIT,(j+1)*UNIT);
                j++;
            }
            if(i%2==1)
            {
                j++;
                bar(i*UNIT,j*UNIT,(i+1)*UNIT,(j+1)*UNIT);
            }
        }
    for ( ; is_run(); delay_fps(120))
    {
        while (mousemsg())
        {
            mouse_msg m = getmouse();
            if (m.msg == mouse_msg_down)
            {
                x=m.x/UNIT;
                y=m.y/UNIT;
                if(array[x][y]==0)
                {
                    count++;
                    if(count%2==1)
                    {
                        array[x][y]=1;
                        setcolor(WHITE);
                        setfillstyle(SOLID_FILL,WHITE);
                        sector(x*UNIT+UNIT/2,y*UNIT+UNIT/2,0,360,50,50);
                    }
                    else
                    {
                        array[x][y]=2;
                        setcolor(YELLOW);
                        setfillstyle(SOLID_FILL,YELLOW);
                        sector(x*UNIT+UNIT/2,y*UNIT+UNIT/2,0,360,50,50);
                    }

                    for(i=0; i<NUMBER; i++)
                    {
                        sum=0;
                        product=1;
                        for(j=0; j<NUMBER; j++)
                        {
                            sum=sum+array[j][i];
                            product=product*array[j][i];
                        }
                        if(product!=0 && sum%NUMBER==0)
                        {
                            Sleep(1);
                            MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                        }
                    }

                    for(i=0; i<NUMBER; i++)
                    {
                        sum=0;
                        product=1;
                        for(j=0; j<NUMBER; j++)
                        {
                            sum=sum+array[i][j];
                            product=product*array[i][j];
                        }
                        if(product!=0 && sum%NUMBER==0)
                        {
                            Sleep(1);
                            MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                        }
                    }

                    sum=0;
                    product=1;
                    for(i=0; i<NUMBER; i++)
                    {
                        sum=sum+array[i][i];
                        product=product*array[i][i];
                    }

                    if(product!=0 && sum%NUMBER==0)
                    {
                        Sleep(1);
                        MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                    }


                    sum=0;
                    product=1;
                    for(i=0; i<NUMBER; i++)
                    {
                        sum=sum+array[NUMBER-1-i][i];
                        product=product*array[NUMBER-1-i][i];
                    }
                    if(product!=0 && sum%NUMBER==0)
                    {
                        Sleep(1);
                        MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                    }
                }
            }
        }
    }
}

函数版本:
#define UNIT 150
#define NUMBER 3
#include "graphics.h"
#include "stdio.h"
#include "stdlib.h"

int array[NUMBER][NUMBER];
void init();
void drawGrid();
void play();

main()
{
    init();
    drawGrid();
    play();
}

void init()
{
    int i=0,j=0;
    int driver=VGA,model=VGAHI;
    initgraph(&driver,&model,"");
    ege::initgraph(UNIT*NUMBER ,UNIT*NUMBER);
    setbkcolor(RED);
    setcolor(BLACK);
    for(i=0; i<NUMBER; i++)
        for(j=0; j<NUMBER; j++)
            array[i][j]=0;
}

void drawGrid()
{
    int i=0,j=0;
    for(i=0; i<NUMBER; i++)
        for(j=0; j<NUMBER; j++)
        {
            if(i%2==0)
            {
                bar(i*UNIT,j*UNIT,(i+1)*UNIT,(j+1)*UNIT);
                j++;
            }
            if(i%2==1)
            {
                j++;
                bar(i*UNIT,j*UNIT,(i+1)*UNIT,(j+1)*UNIT);
            }
        }
}


void play()
{
    int i=0,j=0,x=0,y=0,count=0,sum=0,product=0;
    char str[25];
    for ( ; is_run(); delay_fps(120))
    {
        if (mousemsg())
        {
            mouse_msg m = getmouse();
            if (m.msg == mouse_msg_down)
            {
                x=m.x/UNIT;
                y=m.y/UNIT;
                if(array[x][y]==0)
                {
                    count++;
                    if(count%2==1)
                    {
                        array[x][y]=1;
                        setcolor(WHITE);
                        setfillstyle(SOLID_FILL,WHITE);
                        sector(x*UNIT+UNIT/2,y*UNIT+UNIT/2,0,360,50,50);
                    }
                    else
                    {
                        array[x][y]=2;
                        setcolor(YELLOW);
                        setfillstyle(SOLID_FILL,YELLOW);
                        sector(x*UNIT+UNIT/2,y*UNIT+UNIT/2,0,360,50,50);
                    }

                    for(i=0; i<NUMBER; i++)
                    {
                        sum=0;
                        product=1;
                        for(j=0; j<NUMBER; j++)
                        {
                            sum=sum+array[j][i];
                            product=product*array[j][i];
                        }
                        if(product!=0 && sum%NUMBER==0)
                        {
                            Sleep(1);
                            MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                        }
                    }

                    for(i=0; i<NUMBER; i++)
                    {
                        sum=0;
                        product=1;
                        for(j=0; j<NUMBER; j++)
                        {
                            sum=sum+array[i][j];
                            product=product*array[i][j];
                        }
                        if(product!=0 && sum%NUMBER==0)
                        {
                            Sleep(1);
                            MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                        }
                    }

                    sum=0;
                    product=1;
                    for(i=0; i<NUMBER; i++)
                    {
                        sum=sum+array[i][i];
                        product=product*array[i][i];
                    }

                    if(product!=0 && sum%NUMBER==0)
                    {
                        Sleep(1);
                        MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                    }


                    sum=0;
                    product=1;
                    for(i=0; i<NUMBER; i++)
                    {
                        sum=sum+array[NUMBER-1-i][i];
                        product=product*array[NUMBER-1-i][i];
                    }
                    if(product!=0 && sum%NUMBER==0)
                    {
                        Sleep(1);
                        MessageBox(NULL, itoa(sum/NUMBER, str, 10), "结果",MB_OK);
                    }
                }
            }
        }
    }
}

 


此主题相关图片如下:无标题.png
按此在新窗口浏览图片
[此贴子已经被作者于2015-12-08 12:46:42编辑过]

 回到顶部