2技能封走位 发表于 2019-12-29 18:23:45

一个五子棋代码


Hello,大家好,刚学完C写了一个五子棋,目前是1.0版本有不足之处还请指正
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define length 15//棋盘的大小
#define width 15
int x=length/2,y=width/2;//光标的起始位置
int k=1;//k是用来判断玩家是谁,k为奇数为玩家一,k为偶数为玩家2
char chessboard={0};//棋盘
char stus;//玩家名字
int n=0;//n=0为正常棋盘,n=1则为黑子,n=2则为白子
int main(void)
{
        void start();//棋盘界面
        void accessment();//判断谁先五子
        void welcome();//开始界面
        void wanjia();//谁在下棋
        char choice;
        char ch;//操作命令
        SetConsoleTitle("五子棋");//设置标题
        system("color 0A");//背景颜色
        welcome();
        system("mode con cols=45 lines=20");//控制台大小
        system("color E0");
        while(1)//死循环
        {
                system("cls");//清屏
                start();
                wanjia();
                accessment();
                system("cls");
                start();
                wanjia();
                ch=getch();
                switch(ch)//扫描键盘码
                {
                case 27://ESC
                        exit(0);
                        break;
                case 72://上
                        if(x==0)
                                x=length;
                        x--;
                        break;
                case 80://下
                        if(x==length-1)
                                x=-1;
                        x++;
                        break;
                case 77://右
                        if(y==width-1)
                                y=-1;
                        y++;
                        break;
                case 75://左
                        if(y==0)
                                y=width;
                        y--;
                        break;
                case 32://空格
                        if(chessboard==0)//判断这个位置没有落子
                        {
                                n++;
                                k++;
                                if(n==1)
                                        chessboard=1;
                                if(n==2)
                                {
                                        chessboard=2;
                                        n=0;
                                }
                        }
                        else//如果落过子
                        {
                                system("cls");
                                system("color 74");
                                printf("不许耍赖!\n");
                                system("pause");
                                fflush(stdin);//清空键盘缓冲区
                                printf("还要玩吗(Y/N):");
                                scanf("%c",&choice);
                                if(choice=='Y'||choice=='y')
                                {
                                        system("color E0");
                                }
                                else if(choice=='N'||choice=='n')
                                {
                                        system("pause");
                                        exit(0);
                                }
                                else
                                {
                                        printf("gg!\n");
                                        system("pause");
                                        exit(0);
                                }
                        }
                }
        }
        return 0;
}
void start()
{
        int i,j;
        for(i=0;i<length;i++)
        {
                for(j=0;j<width;j++)
                {
                        if((i==x)&&(j==y))
                                printf("╬");
                        else if(chessboard==1)
                                printf("●");
                        else if(chessboard==2)
                                printf("○");
                        else if(i==0&&j==0)
                                printf("┌");
                        else if(i==0&&j==width-1)
                                printf("┐");
                        else if(i==0)
                                printf("┬");
                        else if(i==length-1&&j==0)
                                printf("└");
                        else if(j==0)
                                printf("├");
                        else if(i==length-1&&j==width-1)
                                printf("┘");
                        else if(i==length-1)
                                printf("┴");
                        else if(j==width-1)
                                printf("┤");
                        else
                                printf("┼");
                       
                }
                printf("\n");
        }
}
void accessment()
{
        int i,j;
        for(i=0;i<length;i++)//判断横着的
                for(j=0;j+4<width;j++)
                {
                        if(chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1)
                        {
                                system("cls");
                                printf("黑子胜利\n");
                                system("pause");
                                for(i=0;i<length;i++)
                                        for(j=0;j<width;j++)
                                                chessboard=0;
                                        n=0;
                                        k=1;
                        }
                        if(chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2)
                        {
                                system("cls");
                                printf("白子胜利\n");
                                system("pause");
                                for(i=0;i<length;i++)
                                        for(j=0;j<width;j++)
                                                chessboard=0;
                                        n=0;
                                        k=1;
                        }
                }
                for(i=0;i+4<length;i++)//判断竖着的
                        for(j=0;j<width;j++)
                        {
                                if(chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1)
                                {
                                        system("cls");
                                        printf("黑子胜利\n");
                                        system("pause");
                                        for(i=0;i<length;i++)
                                                for(j=0;j<width;j++)
                                                        chessboard=0;
                                                n=0;
                                                k=1;
                                }
                                if(chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2)
                                {
                                        system("cls");
                                        printf("白子胜利\n");
                                        system("pause");
                                        for(i=0;i<length;i++)
                                                for(j=0;j<width;j++)
                                                        chessboard=0;
                                                n=0;
                                                k=1;
                                }
                        }
                        //判断斜着的
                        for(i=0;i<length;i++)
                                for(j=0;j<width;j++)
                                {
                                        //左上角\型
                                        if(chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1)
                                        {
                                                system("cls");
                                                printf("黑子胜利\n");
                                                system("pause");
                                                for(i=0;i<length;i++)
                                                        for(j=0;j<width;j++)
                                                                chessboard=0;
                                                        n=0;
                                                        k=1;
                                        }
                                        //左下角/型
                                        if(chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1&&chessboard==1)
                                        {
                                                system("cls");
                                                printf("黑子胜利\n");
                                                system("pause");
                                                for(i=0;i<length;i++)
                                                        for(j=0;j<width;j++)
                                                                chessboard=0;
                                                        n=0;
                                                        k=1;
                                        }
                                        //左上角\型
                                        if(chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2)
                                        {
                                                system("cls");
                                                printf("白子胜利\n");
                                                system("pause");
                                                for(i=0;i<length;i++)
                                                        for(j=0;j<width;j++)
                                                                chessboard=0;
                                                        n=0;
                                                        k=1;
                                        }
                                        //左下角/型
                                        if(chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2&&chessboard==2)
                                        {
                                                system("cls");
                                                printf("白子胜利\n");
                                                system("pause");
                                                for(i=0;i<length;i++)
                                                        for(j=0;j<width;j++)
                                                                chessboard=0;
                                                        n=0;
                                                        k=1;
                                        }
                                }
}
void wanjia()
{
        if(k%2!=0)//k是奇数
                printf("△玩家%s正在下棋\n",stus);
        else//k是偶数
                printf("▽玩家%s正在下棋\n",stus);
}
void welcome()
{
        int help;
        printf("*************************************************\n");
        printf("******欢迎来到史上最牛逼的五子棋游戏系统v1.0*****\n");
        printf("***********先给自己起个帅气逼人的名字吧!*********\n");
        printf("*************************************************\n");
        printf("玩家1:");
        gets(stus);
        printf("玩家2:");
        gets(stus);
        printf("需要查看帮助吗(Y/N):");
        help=getchar();
        if(help=='Y'||help=='y')
        {
                printf("**********************************************\n");
                printf("************1.移动方向键控制棋子的位置********\n");
                printf("************2.按空格键下子********************\n");
                printf("************3.按ESC退出***********************\n");
                printf("************4.按空格正式开始******************\n");
                printf("**********************************************\n");
        }
        system("pause");
        printf("祝您游玩愉快!");
}

2技能封走位 发表于 2019-12-29 18:25:32

在图书馆写了快一天,大家多支持下

Chen-tf 发表于 2019-12-29 19:35:24

C学了多久呀

2技能封走位 发表于 2019-12-29 22:30:05

Chen-tf 发表于 2019-12-29 19:35
C学了多久呀

3个多月了

2技能封走位 发表于 2019-12-31 00:18:12

没人看吗
页: [1]
查看完整版本: 一个五子棋代码