你要和我来一盘五子棋嘛( •̀ ω •́ )✧

#include <stdio.h>
#include<getch.h>
#include<stdlib.h>
char board[15][15];
int flag=1;       //用于交换棋子
void printboard(void);
void play(int x,int y);
int judge(void);
int main(int argc,const char* argv[])
{
    int i,j,x=7,y=7;
    for(i=0;i<15;i++)
    {
        for(j=0;j<15;j++) board[i][j]='*';
    }
    for(;;)
    {   
        system("clear");
        printboard();
        if(judge()==1)
        {
            printf("黑棋胜\n");break;
        }
        else if(judge()==-1)
        {
            printf("白棋胜\n");break;
        }
        if(flag==1) printf("输入黑棋#位置");
        else printf("输入白棋$位置");
        printf("\33[%d;%dH",x+1,(y+1)*2);
        switch(getch())
        {
            case 183:case 119:x>0&&x--;break;//光标上移
            case 184:case 115:x<14&&x++;break;//光标下移
            case 185:case 100:y<14&&y++;break;//光标右移
            case 186:case 97:y>0&&y--;break;//光标左移
            case 10:case 32:play(x,y);break;//在当前位置下棋
        }
    }
}
void printboard(void)   //打印棋盘
{
    int i,j;
    for(i=0;i<15;i++)
    {
        for(j=0;j<15;j++)
        {
            printf(" %c",board[i][j]);
        }
        printf("\n");
    }
}
void play(int x,int y) //下棋
{
    int result;
    if(board[x][y]=='*')
    {
        if(flag==1)
        {
            board[x][y]='#';flag=-flag;
        }
        else if(flag==-1)
        {
            board[x][y]='$';flag=-flag;
        }
     }
}
int judge(void) //判断是否获胜
{
    int x,y;
    for(x=0;x<15;x++)
    {
        for(y=0;y<15;y++)
        {
            if(board[x][y]==0) continue;
            else if(
                (board[x][y]==board[x][y+1]&&board[x][y]==board[x][y+2]&&board[x][y]==board[x][y+3]&&board[x][y]==board[x][y+4])||//判断横
                (board[x][y]==board[x+1][y]&&board[x][y]==board[x+2][y]&&board[x][y]==board[x+3][y]&&board[x][y]==board[x+4][y])||//判断纵
                (board[x][y]==board[x-1][y+1]&&board[x][y]==board[x-2][y+2]&&board[x][y]==board[x-3][y+3]&&board[x][y]==board[x-4][y+4])||//判断右斜
                (board[x][y]==board[x+1][y+1]&&board[x][y]==board[x+2][y+2]&&board[x][y]==board[x+3][y+3]&&board[x][y]==board[x+4][y+4]))//判断左斜
                {
                if(board[x][y]=='#') return 1;
                else if(board[x][y]=='$') return -1;
               }
            else continue;
        }
    }
    return 0;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值