【练习】三子棋

#include "game.h"

void game2()//五子棋
{
    for (;;)
    {

        //定义行数和列数:
#define ROW 2
#define LINE 2

        char board[ROW][LINE];

        int gameover = 1;

        //初始化棋盘:
        for (int i = 0; i < ROW; i++)
        {

            for (int a = 0; a < LINE; a++)
            {

                board[i][a] = ' ';

            }//for (int a = 0; a < LINE; a++)

        }//for (int i = 0; i < ROW; i++)

        //打印棋盘:
        {

            for (int b = 0; b < ROW; b++)
            {

                for (int c = 0; c < LINE; c++)
                {

                    printf(" %c ", board[b][c]);

                    printf("|");

                }//for (int c = 0; c < LINE; c++)

                printf("\n");

                for (int c = 0; c < LINE; c++)
                {

                    printf("---");

                    printf("|");

                }//for (int c = 0; c < LINE; c++)

                printf("\n");

            }//for (int b = 0; b < ROW; b++)

        }//打印棋盘

        //进行对局:
        for (;;)
        {

            //玩家下棋:
            for (;;)
            {

                int x = 0;

                int y = 0;

                printf("请输入坐标");

                scanf("%d %d", &x, &y);

                //判断坐标合法性:
                {

                    if (x >= 1 && x <= LINE && y >= 1 && y <= ROW && board[x - 1][y - 1] == ' ')
                    {

                        board[x - 1][y - 1] = '*';

                        system("cls");

                        //打印棋盘:
                        {

                            for (int b = 0; b < ROW; b++)
                            {

                                for (int c = 0; c < LINE; c++)
                                {

                                    printf(" %c ", board[b][c]);

                                    printf("|");

                                }//for (int c = 0; c < LINE; c++)

                                printf("\n");

                                for (int c = 0; c < LINE; c++)
                                {

                                    printf("---");

                                    printf("|");

                                }//for (int c = 0; c < LINE; c++)

                                printf("\n");

                            }//for (int b = 0; b < ROW; b++)

                        }//打印棋盘

                        break;

                    }

                    else
                    {

                        printf("坐标不合法,请重下");

                        Sleep(3000);

                        system("cls");

                        //打印棋盘:
                        {

                            for (int b = 0; b < ROW; b++)
                            {

                                for (int c = 0; c < LINE; c++)
                                {

                                    printf(" %c ", board[b][c]);

                                    printf("|");

                                }//for (int c = 0; c < LINE; c++)

                                printf("\n");

                                for (int c = 0; c < LINE; c++)
                                {

                                    printf("---");

                                    printf("|");

                                }//for (int c = 0; c < LINE; c++)

                                printf("\n");

                            }//for (int b = 0; b < ROW; b++)

                        }//打印棋盘

                    }

                }//判断坐标合法性

            }//玩家下棋  for (;;)

            //判断输赢:
            {

                for (int o = 0; o < ROW; o++)
                {

                    if (board[o][0] == board[o][1] && board[o][0] == '*')
                    {

                        printf("玩家赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[o][0] == board[o][1] && board[o][0] == '*')

                    else if (board[o][0] == board[o][1] && board[o][0] == '#')
                    {

                        printf("电脑赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[o][0] == board[o][1] && board[o][0] == '#')

                    else if (board[0][o] == board[1][o] && board[0][o] == '*')
                    {

                        printf("玩家赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[0][o] == board[1][o] && board[0][o] == '*')

                    else if (board[o][0] == board[o][1] && board[o][1] && board[o][0] == '#')
                    {

                        printf("玩家赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[o][0] == board[o][1] && board[o][1] && board[o][0] == '#')

                    else//斜行暂时没做

                        break;

                }//for (int o = 0; o < LINE; o++)

                if (gameover == 0)

                    break;

            }//判断输赢

                //电脑下棋:
            for (;;)
            {

                srand((unsigned int)time(NULL));

                int x = rand() % LINE;

                int y = rand() % ROW;

                //判断坐标合法性:
                {

                    if (x >= 1 && x <= LINE && y >= 1 && y <= ROW && board[x][y] == ' ')
                    {

                        board[x][y] = '#';

                        system("cls");

                        //打印棋盘:
                        {

                            for (int b = 0; b < ROW; b++)
                            {

                                for (int c = 0; c < LINE; c++)
                                {

                                    printf(" %c ", board[b][c]);

                                    printf("|");

                                }//for (int c = 0; c < LINE; c++)

                                printf("\n");

                                for (int c = 0; c < LINE; c++)
                                {

                                    printf("---");

                                    printf("|");

                                }//for (int c = 0; c < LINE; c++)

                                printf("\n");

                            }//for (int b = 0; b < ROW; b++)

                        }//打印棋盘

                        break;

                    }

                }//判断坐标合法性

            }

            //判断输赢:
            {

                for (int o = 0; o < ROW; o++)
                {

                    if (board[o][0] == board[o][1] && board[o][0] == '*')
                    {

                        printf("玩家赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[o][0] == board[o][1] && board[o][0] == '*')

                    else if (board[o][0] == board[o][1] && board[o][0] == '#')
                    {

                        printf("电脑赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[o][0] == board[o][1] && board[o][0] == '#')

                    else if (board[0][o] == board[1][o] && board[0][o] == '*')
                    {

                        printf("玩家赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[0][o] == board[1][o] && board[0][o] == '*')

                    else if (board[o][0] == board[o][1] && board[o][1] && board[o][0] == '#')
                    {

                        printf("玩家赢");

                        gameover = 0;

                        Sleep(1000);

                        system("cls");

                        break;

                    }//if (board[o][0] == board[o][1] && board[o][1] && board[o][0] == '#')

                    else//斜行暂时没做

                        break;

                }//for (int o = 0; o < LINE; o++)

                if (gameover == 0)

                    break;

            }//判断输赢

        }//进行对局

        gameover = 1;

        printf("再来一遍1\\按其余键返回主菜单:");

        scanf("%d", &gameover);

        switch (gameover)
        {

        case 1:

            system("cls");

            continue;

        case 2:

            system("cls");

        default:

            break;

        }//switch (gameover)

    }//for (;;)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值