转载dalao,并自写自玩五子棋

学下dalao玩下五子棋

#include <conio.h>
#include <windows.h>            
#include<stdio.h>
#include<stdlib.h> 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevinstance, PSTR szCmdLine, int iCmdShow);
int main(){
    newgame:system("cls");                                                     
    printf("\n\n\n\n\n\n\t\t\t五子棋游戏\n\t\t\t退出游戏请按Esc键");           
    printf("\n\t\t\t开始新游戏请按除Esc键任意键");
    printf("\n\t\t\t\t游戏出品----zeng");
    int ng;                                                                    
    ng=getch();
    if(ng==27)                                                                 
        exit(1);
    int w=1;                                                                   
    int wei[70][70]={0};                                                      
    int g[50][50]={0};                       
    system("mode con cols=66 lines=35");    
    void f(int w,int wei[70][70],int g[50][50]);
    int pd(int w,int wei[70][70],int g[50][50]);
    int x = 10,y = 10;                            
    int gu;                                    
    g[x][y]=1;                                
    f(w,wei,g);                             
    g[x][y]=0;                              
    while(1)            
    {
        gu = getch();              
        if(gu==80&&x+1<30){
            x++;
            while(wei[x][y]!=0)    
                x++;
        }
        else if(gu==72&&x-1>1){
            x--;
            while(wei[x][y]!=0)
                x--;
        }
        else if(gu==75&&y-1>0){
            y--;
            while(wei[x][y]!=0)
                y--;
        }
        else if(gu==77&&y+1<30)    
        {
            y++;
            while(wei[x][y]!=0)
                y++;
        }
        g[x][y]=1;                
        if(gu==13&&w==1&&wei[x][y]==0)        
            wei[x][y]=1,w=-1;                 
        else if(gu==13&&w==-1&&wei[x][y]==0)
            wei[x][y]=2,w=1;
        f(w,wei,g);
        if(gu==13&&pd(w,wei,g)==1)        
        {
            MessageBox(NULL, TEXT("恭喜白棋玩家获胜!\n单击确定开始新游戏"), TEXT("游戏结束!"), MB_OK);  
            goto newgame;                         
        }
        if(gu==13&&pd(w,wei,g)==2)              
        {
            MessageBox(NULL, TEXT("恭喜黑棋玩家获胜!\n单击确定开始新游戏"), TEXT("游戏结束!"), MB_OK);
            goto newgame;
        }
        g[x][y]=0;                 
    }
    return 0;
}
void f(int w,int wei[70][70],int g[50][50])                                             
{
    system("cls");                
    int i,t;
    int x,y;
    int n=15,m=15;
    for(i=1;i<=n;i++)               
    {
        if(i==1)printf("┌─");
        else if(i==n)printf("└─");
        else printf("├─");
        for(t=1;t<m;t++)
        {
            if(i==1)printf("┬─");
            else if(i==n)printf("┴─");
            else if(wei[i][t]==1)             
                printf("●");
            else if(wei[i][t]==2)            
                printf("○");
            else if(g[i][t]==1)               
                printf("▉");
            else if(g[i][t+1]==1)printf("┼ ");
            else printf("┼-");
        }
        if(i==1)printf("┐");
        else if(i==n)printf("┘");
        else printf("┤");
        printf("\n");
    }
    printf("操作说明:方向键移动方形光标,回车键在光标所在位置落子\n");      
    printf("\n                                                     ");
    return ;
}
int pd(int w,int wei[70][70],int g[50][50])       
{
    int i,t;
    int j,k;
    int x=0,y=0;                             
    for(i=1;i<=35;i++)                         
        for(t=1;t<=35;t++)
        {
            if(wei[i][t]==1)x++;          
            else x=0;                      
            if(x>=5)return 1;              
            if(wei[i][t]==2)y++;
            else y=0;
            if(y>=5)return 2;
        }
    for(i=1;i<=35;i++)                        
        for(t=1;t<=35;t++)
        {
            if(wei[t][i]==1)x++;
            else x=0;
            if(x>=5)return 1;
            if(wei[t][i]==2)y++;
            else y=0;
            if(y>=5)return 2;
        }
    for(i=-35;i<35;i++)                         
        for(t=1;t<=35;t++)
        {
            if(wei[t][t+i]==1&&t+i>=0)x++;
            else x=0;
            if(x>=5)return 1;
            if(wei[t][t+i]==2&&t+i>=0)y++;
            else y=0;
            if(y>=5)return 2;
        }
    for(i=1;i<=66;i++)                    
        for(t=0;t<=66;t++)                    
        {
            if(wei[t][i-t]==1&&i-t>=0)x++;
            else x=0;
            if(x>=5)return 1;
            if(wei[t][i-t]==2&&i-t>=0)y++;
            else y=0;
            if(y>=5)return 2;
        }
        return 0;
}

五子棋

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值