c语言:来实现一个小程序n子棋(已五子棋为例)

简介: c语言:来实现一个小程序n子棋(已五子棋为例)

首先是头文件的代码

#pragma once
#define ROW 5
#define COL 5
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void start__board(char board[ROW][COL], int row, int col);
void start__qipan(char board[ROW][COL], int row, int col);
//void qipan__board(char board[ROW][COL], int row, int col);
void player__board(char board[ROW][COL],int row, int col);
void computer__board(char board[ROW][COL], int row, int col);
char  win(char board[ROW][COL], int row, int col);

然后是实现函数个个功能的代码

#include"game.h"
void start__board(char board[ROW][COL], int row, int col)
{
  int i = 0;
  int j = 0;
  for (int i = 0; i < row; i++)
  {
    for (int j = 0; j < col; j++)
    {
      board[i][j] = ' ';
    }
  }
}
void start__qipan(char board[ROW][COL], int row, int col)
{
  int i = 0;
  int j = 0;
  for (int i = 0; i < row; i++)
  {
    for (int j = 0; j < col; j++)
    {
      printf(" %c ", board[i][j]);
      if (j < col - 1)
        printf("|");
    }
    printf("\n");
    if (i < row - 1)
    {
      for (int j = 0; j < col; j++)
      {
        printf("---");
        if (j < col - 1)
          printf("|");
      }
    }
    printf("\n");
  }
}
//void qipan__board(char board[ROW][COL], int row, int col)
//{
//  int i = 0;
//    for (i = 0; i < row; i++)
//    {
//      for (int n = 0; n < col;n++)
//      {
//        
//      }
//    }
//}
void player__board(char board[ROW][COL], int row, int col)
{
  int x, y;
  printf("玩家下棋:\n");
  while (1)
  {
    printf("请输入坐标:->\n");
    scanf_s("%d %d", &x, &y);
    if (x > 0 && x < row+1&& y>0 && y < col+1)
    {
      if (board[x-1][y-1]==' ')
      {
        board[x-1][y-1] = '*';
        break;
      }
      else
        printf("非法占用,请重新输入:\n");
    }
    else
      printf("超出范围,请重新输入\n");
  }
}
void computer__board(char board[ROW][COL], int row, int col)
{
  printf("电脑下棋:\n");
  while (1)
  {
    int x = rand() % 6;
    int y = rand() % 6;
    if (x > 0 && x < row + 1 && y>0 && y < col + 1)
    {
      if (board[x][y] == ' ')
      {
        board[x][y] = '#';
        break;
      }
    }
  }
}
char win(char board[ROW][COL], int row, int col)
{
  char p='c';
  int i;
  int j;
  for (int i = 0; i < row; i++)
  {
      if (board[i][0] == board[i][1] && board[i][1] == board[i][2]&&board[i][2] == board[i][3]&&board[i][3] == board[i][4]&&board[i][0] == '*')
        p = '*';
      if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][2] == board[i][3] && board[i][3] == board[i][4] && board[i][0] == '#')
        p = '#';
  }
  for (int j = 0; j < col; j++)
  {
    if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[2][j] == board[3][j] && board[3][j] == board[4][j] && board[j][4] == '*')
      p = '*';
    if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[2][j] == board[3][j] && board[3][j] == board[4][j] && board[j][4] == '#')
      p = '#';
  }
  if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == board[3][3] && board[3][3] == board[4][4] && board[0][0] == '*')
    p = '*';
  if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == board[3][3] && board[3][3] == board[4][4] && board[0][0] == '#')
    p = '#';
  if (board[0][4] == board[1][3] && board[1][3] == board[2][2] && board[2][2] == board[3][1] && board[3][1] == board[4][0])
  {
    if (board[0][4] == '*')
      p = '*';
    if (board[0][4] == '#')
      p = '#';
  }
  int a = 0;
  for (i = 0; i < row; i++)
  {
    for (j = 0; j < col; j++)
    {
      if (board[i][j] != ' ')
        a = 1;
    }
  }
  if (a == 0)
    p = 'p';
  return p;
}

最后是主函数的代码啦

#include"game.h"
void menu()
{
  printf("***************************\n");
  printf("*********  1.play  ********\n");
  printf("*********  0.exit  ********\n");
  printf("***************************\n");
}
void game()
{
  int ret;
  printf("五子棋游戏开始\n");
  char board[ROW][COL] = {0};
  start__board(board, ROW, COL);
  start__qipan(board, ROW, COL);
  //qipan__board(board, ROW, COL);
  while (1)
  {
    player__board(board, ROW, COL);
    ret = win(board, ROW, COL);
    if (ret != 'c')
      break;
    start__qipan(board, ROW, COL);
    computer__board(board, ROW, COL);
    ret =win(board, ROW, COL);
    if (ret != 'c')
      break;
    start__qipan(board, ROW, COL);
  }
  if (ret == '*')
    printf("玩家获胜\n");
  if (ret == '#')
    printf("电脑获胜\n");
  if (ret == 'p')
    printf("平局\n");
}
int main()
{
  srand((unsigned int)time(NULL));
  int m;
  do
  {
    menu();
    printf("请选择:->\n");
    scanf_s("%d", & m);
    switch (m)
    {
    case 1:
      game();
      break;
    case 0:
      printf("退出游戏\n");
      break;
    default:
      printf("选择错误,请重新选择:\n");
      break;
    }
  } while (m);
  return 0;
}

仅供参考啊!

相关文章
|
9天前
|
C语言
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(二)
我们可以通过创建并定义符号常量NUMBER,来作为判断是否胜利的标准。如三子棋中,令NUMBER为3,则这八个方向中有任意一个方向达成3子连珠,则连珠的这个棋子所代表的玩家获胜。
20 1
|
9天前
|
算法 C语言 C++
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(一)
三子棋游戏设计的核心是对二维数组的把握和运用。
21 1
|
22天前
|
人工智能 小程序 开发工具
有意思的python小程序分享——使用python做一个五子棋
有意思的python小程序分享——使用python做一个五子棋
61 0
|
6月前
|
C语言
C语言实现三子棋,可拓展为n子棋的版本
C语言实现三子棋,可拓展为n子棋的版本
|
8月前
|
机器学习/深度学习 C语言 C++
【c语言】五子棋(EasyX图形库+背景音乐)
【c语言】五子棋(EasyX图形库+背景音乐)
92 0
|
8月前
|
存储 小程序 Linux
【Linux从入门到精通】C语言模拟实现进度条小程序
在Linux下,我们安装软件时会经常看到进度条,来告知我们安装的进度。我们不妨自己模拟实现一个进度条,看看其中的细节。模拟实现进度条并不困难,但其中的细节我们又不可忽视。本篇文章会对模拟实现进度条进行详解。
249 1
|
11月前
|
C语言
【C语言】项目实战——快速0基础上手五子棋游戏(内附源码)
【C语言】项目实战——快速0基础上手五子棋游戏(内附源码)
95 0
|
12月前
|
人工智能 C语言
大一新生必会的c语言五子棋!PVP,PVE,EVE模式都有,还有智能的AI部分,复盘等内容!一看就会的五子棋教程,确定不来看看吗?
大一新生必会的c语言五子棋!PVP,PVE,EVE模式都有,还有智能的AI部分,复盘等内容!一看就会的五子棋教程,确定不来看看吗?
90 0
|
12月前
|
小程序 C语言
C语言小程序:通讯录(文件版)
基于通讯录的动态版本再次改造出来的关于文件版本的通讯录,适配的范围更广。
48 0
|
12月前
|
小程序 C语言
C语言小程序:通讯录(动态版)
基于静态版本通讯录而改造出来的动态版本的通讯录。
55 0