呕吼,c语言&&三子棋

简介: 呕吼,c语言&&三子棋

你想玩三子棋吗?直接我的码云链接:下载文件找到debug里的exe运行即可

码云链接:2022-1-25扫雷(no bug) · GDM/C语言 - 码云 - 开源中国 (gitee.com)

一.game.h


#pragma once
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define lei 10
//初始化字符串,将字符串arr内容全部变成a
void init_board(char arr[ROWS][COLS], int row, int col, char a);
//打印字符串
void print_board(char arr[ROWS][COLS], int row, int col);
//随机生成雷
void creat_mine(char arr[ROWS][COLS], int row, int col);
//排查雷
//功能:输入一个坐标
// 如果不是雷,显示周围雷的数量,打印出新的print棋盘
// 如果是雷,提示被炸死,游戏结束
//形参:存放雷的棋盘,打印的雷
void find_mine(char mine[ROWS][COLS], char show[COLS][COLS], int row, int col);


二.test.c

#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include"game.h"
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define lei 10
void game()
{
  char mine[ROWS][COLS] = { 0 }, show[ROWS][COLS] = { 0 };
  //初始化字符串
  init_board(mine, ROWS, COLS, '0');
  init_board(show, ROWS, COLS, '*');
  //打印棋盘
  print_board(show, ROW, COL);
  //生成雷
  creat_mine(mine, ROW, COL);
  //排雷
  find_mine(mine, show, ROW, COL);
}
  void menu()
{
  printf("*****************\n");
  printf("******1.Play*****\n");
  printf("******2.Exit*****\n");
  printf("*****************\n");
}
int main()
{
  srand((unsigned int)time(NULL));
  menu();
  int choise = 0;
  printf("请输入1/2选择是否游戏:");
again:
  scanf_s("%d", &choise);
  switch (choise)
  {
  case 1:game(); break;
  case 2:printf("游戏结束"); break;
  default:printf("输入错误,请重新输入1\2选择是否游戏:");goto again;
  }
  printf("byebye\n");
  return 0;
}


三.game.c

#pragma once
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define lei 10
//初始化字符串,将字符串arr[row][col]变成a
void init_board(char arr[ROWS][COLS], int row, int col, char a)
{
  for (int i = 0;i<row;i++)
  {
    for (int j = 0; j < col; j++)
    {
      arr[i][j] = a;
    }
  }
}
//打印字符串  [row][col]的范围
void print_board(char arr[ROWS][COLS], int row, int col)
{
  printf("--------扫雷--------\n");
  printf("  ");
  for (int i = 1; i <=row; i++)
  {
    printf("%d ", i);
  }
  printf("\n");
  for (int i = 1; i<=row; i++)
  {
    printf("%d ", i );
    for (int j = 1; j <= col; j++)
    {
      printf("%c ", arr[i][j]);
    }
    printf("\n");
  }
}
//随机生成雷
void creat_mine(char arr[ROWS][COLS], int row, int col)
{
  int a = lei;
  while (1)
  {
    int x = rand()%9+1;
    int y = rand()%9+1;
     if (a == 0)
    {
    break;
    }
     else if (arr[x][y] == '0')
    {
      arr[x][y] = '1';
      a--;
    }
  }
}
//排查雷
//功能:输入一个坐标
// 如果不是雷,显示周围雷的数量,打印出新的print棋盘
// 如果是雷,提示被炸死,游戏结束
//形参:存放雷的棋盘,打印的雷
int count_mine(char mine[ROWS][COLS], int row, int col,int x,int y)
{
  int a = mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y + 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1];
  int b = mine[x][y] * 8;
  return a - b;
}//计算周围雷的数量
void find_mine(char mine[ROWS][COLS], char show[COLS][COLS], int row, int col)
{
  int x, y;
  while (1)
  {
    int win = 0;
    printf("请输入你要排查雷的位置:");
    scanf_s("%d %d", &x, &y);
    if (mine[x][y] == '1')
    {
      printf("恭喜你被炸死了\n");
      break;
    }
    else
    {
      int count = count_mine(mine, COL, ROW,x,y);
      show[x][y] = count + '0';
      win++;
      print_board(show, ROW, COL);
    }
    if (win == ROW * COL - lei)
    {
      printf("恭喜你扫雷大师\n");
      printf("     获胜     \n");
      break;
    }
  }
}


相关文章
|
3月前
|
C语言
c语言简单三子棋
c语言简单三子棋
|
3月前
|
C语言
以c语言为基础实现的简易三子棋
以c语言为基础实现的简易三子棋
31 1
|
3月前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
47 1
|
3月前
|
C语言
C语言之三子棋小游戏
C语言之三子棋小游戏
|
3月前
|
C语言
用c语言实现三子棋
用c语言实现三子棋
18 0
|
2月前
|
C语言
【海贼王编程冒险 - C语言海上篇】C语言如何实现简单的三子棋游戏?
【海贼王编程冒险 - C语言海上篇】C语言如何实现简单的三子棋游戏?
19 1
|
2月前
|
存储 C语言
三子棋(C语言版)
三子棋(C语言版)
|
3月前
|
C语言
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(二)
我们可以通过创建并定义符号常量NUMBER,来作为判断是否胜利的标准。如三子棋中,令NUMBER为3,则这八个方向中有任意一个方向达成3子连珠,则连珠的这个棋子所代表的玩家获胜。
45 1
|
3月前
|
算法 C语言 C++
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(一)
三子棋游戏设计的核心是对二维数组的把握和运用。
38 1
|
3月前
|
编译器 C语言
【C语言入门小游戏】三子棋
【C语言入门小游戏】三子棋
37 0
【C语言入门小游戏】三子棋