五、三子棋

game.h

#ifndef  _GAME_H_
#define  _GANE_H_
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<dos.h>
#define ROW  10  //棋盘的行数
#define COL  10  //棋盘的列数(根据自己的爱好调整)
#define CHESS 5  //成子的个数(3就是3子棋,5就是5子棋)

void Menu();
void Initialize(char arr[ROW][COL],int row, int col);
void Output(char arr[ROW][COL],int row, int col);
void Plarer(char arr[ROW][COL],int row, int col);
void Computer(char arr[ROW][COL],int row, int col);
int Judge(char arr[ROW][COL],int row, int col);

#endif _GAME_H_

game.c

#include"game.h"
void Menu()
{
    printf("***********************\n");
    printf("******  1. play   *****\n");
    printf("******  0. exit   *****\n");
    printf("***********************\n");
}
 void Initialize(char arr[ROW][COL],int row, int col)//初始化
 {
     int i = 0;
     for(i = 0; i < row; i++)
     {
         int j = 0;
         for(j = 0; j < col; j++)
         {
             arr[i][j] = ' ';
         }
     }
 }
 void Output(char arr[ROW][COL],int row, int col)
 {
     int i = 0;
     int j = 0;
     int n = 0;
     printf("    ");
     for(i = 1; i <= row; i++)
     {
         printf(" %d  ", i);
     }
     printf("\n");
     for(i = 0,n = 0; i < row; i++,n++)
     {
         printf(" %d  ", i + 1);
         for(j = 0; j < col; j++)
         {
             printf(" %c ", arr[i][j]);
             if(j < col-1)
             {
                 printf("|");
             }
         }
         printf("\n    ");
         if(n < row-1)   
        { 
            for(j = 0; j < col; j++)        
            {
                 printf("--- ");
            }
        }
       printf("\n");
     }
 }
void Plarer(char arr[ROW][COL],int row, int col)
{
    int i = 0;
    int j = 0;
    printf("玩家输入坐标》");
    while(1)
    {
        scanf("%d%d", &i, &j);
        if(arr[i-1][j-1] == ' ')
        {
            arr[i-1][j-1] = 'X';
            break;
        }
        else 
        {
            printf("坐标错误,请重新输入:");
        }
    }
}
void Computer(char arr[ROW][COL],int row, int col)
{   
     printf("电脑走为\n");
     while(1)
    {   
        int i = rand()%row;
        int j = rand()%row;

        if(arr[i][j] == ' ')
        {
            arr[i][j] = 'Y';
            break;
        }
    }
}
int Judge(char arr[ROW][COL],int row, int col)
{
    int i = 0;
    int j = 0;
    int n = 0;
    int m = 1;
    //横向
    for(i = 0; i < row; i++)
    {
        for(j = 0,n = 1; j < col-1; j++)
        {
            if(arr[i][j] == arr[i][j+1]&&arr[i][j] != ' ')
            {
                n++;        
                if(n == CHESS)
                {
                    return arr[i][j];
                }
            }
            else
            {
                n = 1;
            }
        }
    }
    //竖方向
    for(j = 0; j < col; j++)
    {
        for(i = 0, n = 1; i < row-1; i++)
        {
            if(arr[i][j] == arr[i+1][j]&&arr[i][j] != ' ')
            {
                n++;
                if(n == CHESS)
                {
                    return arr[i][j];
                }
                else;
            }
            else
            {
                n = 1;
            }
        }

    }
    //左斜方向
     while(m + CHESS <= row)
     {
        for(i = 0,j = m, n = 1; j < col; i++, j++)
        {
            if(arr[i][j] == arr[i+1][j+1]&&arr[i][j] != ' ')
            {
                n++;
                if(n == CHESS)
                {
                    return arr[i][j];
                }
            }
            else
            {
                n = 1;
            }   
        }
        m++;
    }
     m = 0;
      while(m + CHESS <= row)
     {
        for(i = m,j = 0, n = 1; j < col; i++, j++)
        {
            if(arr[i][j] == arr[i+1][j+1]&&arr[i][j] != ' ')
            {
                n++;
                if(n == CHESS)
                {
                    return arr[i][j];
                }
            }
            else
            {
                n = 1;
            }   
        }
        m++;
    }
      //右斜方向
     m = row - 1;
     while(m >= 2)
     {  
        for(i = 0,j = m, n = 1; j > 0; i++, j--)
        {
            if(arr[i][j] == arr[i+1][j-1]&&arr[i][j] != ' ')
            {
                n++;
                if(n == CHESS)
                {
                    return arr[i][j];
                }
            }
            else
            {
                n = 1;
            }   
        }
        m--;
    }
     m = 0;
     while(m <row)
     {  
        for(j = row-1,i = m, n = 1; j > 0; i++, j--)
        {
            if(arr[i][j] == arr[i+1][j-1]&&arr[i][j] != ' ')
            {
                n++;
                if(n == CHESS)
                {
                    return arr[i][j];
                }
            }
            else
            {
                n = 1;
            }   
        }
        m++;
    }

    //继续走
     for(i = 0; i < row; i++)
     {
         for(j = 0; j < col; j++)
         {
             if(arr[i][j] == ' ')
             { 
                 return 1;
             }
         }
     }
     //平局
     return 'e';
}

4.1.c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"game.h"

void game()
{
    char ret = 0;
    char arr[ROW][COL];
    Initialize(arr, ROW, COL);
    Output(arr, ROW, COL);
    while(1)
    {
        Plarer(arr, ROW, COL);
        system("cls");
        Output(arr, ROW, COL);
        ret = Judge(arr, ROW, COL);
        if(ret == 'X')
        {
            printf("恭喜玩家胜\n");
            break;
        }
        else if(ret == 'e')
        {
            printf("平局\n");
            break;
        }
        Computer(arr, ROW, COL);
        system("cls");
        Output(arr, ROW, COL);
        ret = Judge(arr, ROW, COL);
        if(ret == 'Y')
        {
            printf("恭喜电脑胜\n");
            break;
        }
        else if(ret == 'e')
        {
            printf("平局\n");
            break;
        }
    }
}
void Text()          //选择玩不玩
{
    int a = 0;
    srand((unsigned)time(NULL));
    do
    {
        Menu();
        printf("请选择》");
        scanf("%d", &a);

        switch(a)
        {
            case 1 :
                game();
                break;
            case 0 :
                printf("退出游戏\n");
                break;
            default : 
                printf("输入错误,请输入(1或0)");
                break;
        }
    }while(a);

}

int main()
{
    Text();

    system("pause");
    return 0;
}
Python子棋盘可以使用一个二维数组来表示,其中列表的每个元素对应棋盘上的一个位置。0表示没有子,1表示黑子,-1表示白子。通过使用Pygame库可以实现绘制棋盘和落子的功能。首先,可以使用turtle库来绘制棋盘的线和标点。然后可以使用一个二维数组来表示棋盘上的子,并通过遍历每个点来判断鼠标点击的位置与遍历的位置的距离,如果距离在范围内,并且该位置上没有子,就可以实现落子功能。同时,还需要交替切换落子者并判断是否子连线。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python实现简单子棋](https://blog.csdn.net/djasjkyu/article/details/124881713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python实现简易子棋小游戏(三种方式)](https://blog.csdn.net/qq_38563206/article/details/127329754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值