第一个超过百行的程序——三子棋

三子棋小游戏可分解为以下过程:
1,设置一个游戏选择界面:
第一个超过百行的程序——三子棋
界面源代码如下:
void menu()
{
while (1)
{
printf("欢迎访问\n");
printf("1.play 2.exit\n");
printf("请选择:");
int i;
scanf_s("%d", &i);
if (i == 1)
game();
if (i == 2)
break;
}
}
2,玩家落子以及系统落子,并显示落子后界面。
第一个超过百行的程序——三子棋
落子源代码:
void play(char arr[][3])
{
int x, y;
while (1)
{
printf("请选择你要下的行数:");
scanf_s("%d", &x);
printf("请选择你你要下的列数:");
scanf_s("%d", &y);
if (x > 3 || y > 3|| x < 1|| y < 1)
{
printf("你棋盘大小有误!\n");
continue;
}
else
if (arr[x - 1][y - 1] != ' ')
{
printf("该格已被占用");
continue;
}
else
arr[x - 1][y - 1] = player;
break;
}
}
void pc(char arr[][3])
{
void srand(unsigned int seed);
int x, y;

while (1)
{
    x = rand() % 4;
    y = rand() % 4;

    if (arr[x - 1][y - 1] != ' ')
    {
        continue;
    }
    else
        arr[x - 1][y - 1] = computer;
    break;
}

}
3,落子完毕后判断胜负。
第一个超过百行的程序——三子棋
判断源代码:
char judge(char arr[][3])
{
char flag = 0;
for (int i = 0; i < 3; i++)
{
if (arr[0][i] == arr[1][i] && \
arr[1][i] == arr[2][i] && \
arr[1][i] != ' ')
{
flag = arr[1][i];
break;

    }
}
for (int j = 0; j < 3; j++)
{
    if (arr[j][0] == arr[j][1] && \
        arr[j][2] == arr[j][1] && \
        arr[j][0] != ' ')
    {
        flag = arr[j][0];
        break;
    }

}if (arr[0][0] == arr[1][1] && \
    arr[2][2] == arr[1][1] && \
    arr[0][0] != ' ')
{
    flag = arr[0][0];

}
if (arr[0][2] == arr[1][1] && \
    arr[1][1] == arr[2][0] && \
    arr[1][1] != ' ')
{
    flag = arr[0][2];
}
if (flag == 0)
{
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            if (arr[i][j] == ' ')
            {
                flag = 2;
                break;
            }
        }

}
return flag;

}

**#include<stdio.h>
#include<time.h>
#include <stdlib.h>
#pragma warning (disable:4996)
#define player 'o';
#define computer 'x';
void show(char arr[][3])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
printf("[%c]",arr[i][j]);
printf("\n");
}
}
void play(char arr[][3])
{
int x, y;
while (1)
{
printf("请选择你要下的行数:");
scanf_s("%d", &x);
printf("请选择你你要下的列数:");
scanf_s("%d", &y);
if (x > 3 || y > 3|| x < 1|| y < 1)
{
printf("你棋盘大小有误!\n");
continue;
}
else
if (arr[x - 1][y - 1] != ' ')
{
printf("该格已被占用");
continue;
}
else
arr[x - 1][y - 1] = player;
break;
}
}
void pc(char arr[][3])
{
void srand(unsigned int seed);
int x, y;

while (1)
{
    x = rand() % 4;
    y = rand() % 4;

    if (arr[x - 1][y - 1] != ' ')
    {
        continue;
    }
    else
        arr[x - 1][y - 1] = computer;
    break;
}

}
char judge(char arr[][3])
{
char flag = 0;
for (int i = 0; i < 3; i++)
{
if (arr[0][i] == arr[1][i] && \
arr[1][i] == arr[2][i] && \
arr[1][i] != ' ')
{
flag = arr[1][i];
break;

    }
}
for (int j = 0; j < 3; j++)
{
    if (arr[j][0] == arr[j][1] && \
        arr[j][2] == arr[j][1] && \
        arr[j][0] != ' ')
    {
        flag = arr[j][0];
        break;
    }

}if (arr[0][0] == arr[1][1] && \
    arr[2][2] == arr[1][1] && \
    arr[0][0] != ' ')
{
    flag = arr[0][0];

}
if (arr[0][2] == arr[1][1] && \
    arr[1][1] == arr[2][0] && \
    arr[1][1] != ' ')
{
    flag = arr[0][2];
}
if (flag == 0)
{
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            if (arr[i][j] == ' ')
            {
                flag = 2;
                break;
            }
        }

}
return flag;

}

void game()
{
char arr[3][3];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
arr[i][j] = ' ';
while (1)
{
play(arr);
printf("*\n");
show(arr);
char i = judge(arr);
if (i != 2 && i != 'o' && i != 'x')
{
printf("和棋");
break;
}
if (i == 'o')
{
printf("你胜了!");
break;
}
if (i == 'x')
{
printf("你输了!");
break;
}

    pc(arr);
    printf("*\n");
    show(arr);
    i = judge(arr);
    if (i != 2 && i != 'o' && i != 'x')
    {
        printf("和棋");
        break;
    }
    if (i == 'o')
    {
        printf("你胜了!");
        break;
    }
    if (i == 'x')
    {
        printf("你输了!");
        break;
    }
}

}
void menu()
{
while (1)
{
printf("欢迎访问\n");
printf("1.play 2.exit\n");
printf("请选择:");
int i;
scanf_s("%d", &i);
if (i == 1)
game();
if (i == 2)
break;
}
}
int main()
{
menu();
return 0;
}

**

猜你喜欢

转载自blog.51cto.com/14946388/2543589