以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  C语言程序设计  (http://www.njcie.com/bbs/list.asp?boardid=29)
----  课上练习代码——井字游戏(Tic-tac-toe)  (http://www.njcie.com/bbs/dispbbs.asp?boardid=29&id=1600)

--  作者:admin
--  发布时间:2015/12/8 12:44:33
--  课上练习代码——井字游戏(Tic-tac-toe)

 

井字游戏(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编辑过]