C语言实现扫雷(下)

简介: 笔记

四、微小优化


11.png

在电脑布雷的时候我们定义了count,让他等于10,

12.png

玩家输入坐标并判断输赢时候,我们也用到了数字10


我们为了方便,在game.h里可#define COT 10


到时候可以直接用COT来代替10


五、测试


5.1排完雷结果测试

由于有10个雷,71个空格我们一一排查需耗费大量时间,所以我们将雷设置为80,此时只有一个位置没有雷,这时候我们选中这个位置

13.png

此时7,7这个地方没有雷,当我们选中时,告诉我们排雷成功


5.2踩到雷结果测试

将雷数量重新设置回10

14.png

此时踩到了雷,宣布被炸死


5.3未踩到雷结果测试

15.png

4,4坐标显示没有雷,但其周围8个地方又有2个雷,此时4,4位置打印数字2


六、待优化


待优化点:点开一个不是雷的地方开铺开一大片显示没雷的地方


七、代码部分


game.h

#pragma once
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define ROW 9
#define COL 9
#define COT 10
#define COLS COL+2
#define ROWS ROW+2
Itnboard(char board[ROWS][COLS], int rows, int cols, char set);
Displayboard(char board[ROWS][COLS], int row, int col);
ComputerSet(char board[ROWS][COLS], int row, int col);
Playmove(char board[ROWS][COLS],char mine[ROWS][COLS], int row, int col);//玩家排雷

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void menu()
{
  printf("**********************************\n");
  printf("***********1.play*****************\n");
  printf("***********0.exit*****************\n");
  printf("**********************************\n");
}
void game()
{
  char board[ROWS][COLS] = { 0 };
  char mine[ROWS][COLS] = { 0 };
  Itnboard(board, ROWS, COLS, '0');
  Itnboard(mine, ROWS, COLS, '*'); //初始化棋盘
  Displayboard(mine, ROW, COL);//打印棋盘
  ComputerSet(board,ROW,COL);
  Playmove(board,mine, ROW, COL);
}
int main()
{
  srand((unsigned int)time(NULL));
  int input;
  while (1)
  {
  menu();
  printf("请选择:");
  scanf("%d", &input);
  switch (input)
  {
  case 1:
    printf("扫雷游戏:\n");
    game();
    break;
  case 0:
    printf("退出菜单");
    break;
  default:
    printf("输入错误请重新输入:");
  }
  }
}

game.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
Itnboard(char board[ROWS][COLS], int rows, int cols, char set)
{
  int i;
  int j;
  for (i = 0; i < rows; i++)
  for (j = 0; j < cols; j++)
    board[i][j] = set;
}
int fun(char board[ROWS][COLS], int x, int y)
{
  return board[x - 1][y - 1] +
  board[x - 1][y] +
  board[x - 1][y + 1] +
  board[x][y - 1] +
  board[x][y + 1] +
  board[x + 1][y - 1] +
  board[x + 1][y] +
  board[x + 1][y + 1] - 8 * '0';
}
Displayboard(char board[ROWS][COLS], int row, int col)
{
  int i;
  int j;
  printf("---------------- 扫雷游戏----------------------\n");
  for (i = 0; i <=row; i++)
  printf("%d ", i);
  printf("\n");
  for (i = 1; i <=row ; i++)
  {
  printf("%d ", i);
  for (j = 1; j <=col ; j++)
  {
    printf("%c ", board[i][j]);
  }
  printf("\n");
  }
  printf("---------------- 扫雷游戏----------------------\n");
}
Playmove(char board[ROWS][COLS],char mine[ROWS][COLS], int row, int col)
{
  int x;
  int y;
  int count=0;
  while (count< row*col- COT)
  {
  printf("请输入坐标:");
  scanf("%d%d", &x, &y);
  if (x >= 1 && x <= 9 && y >= 1 && y <= 9)
  {
    if (board[x][y] == '1')
    {
    printf("你被炸死了:");
    break;
    }
    else
    {    
    int ch = fun(board, x, y);
    mine[x][y] = ch + '0';
    Displayboard(mine,row,col);
    count++;
    }
  }
  else
  {
    printf("输入错误,请重新输入");
  }
  }
  if (count == row * col - COT)
  printf("恭喜你,排雷成功");
}
ComputerSet(char board[ROWS][COLS], int row, int col)
{
  int x;
  int y;
  int count = COT;
  while(count)
  {
  x = rand() % row + 1;
  y = rand() % col + 1;
  if (board[x][y] == '0')
  {
    board[x][y] = '1';
    count--;
  }
  }
  Displayboard(board, row, col);
}
相关文章
|
2月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
125 0
|
4月前
|
机器学习/深度学习 C语言
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
【8月更文挑战第5天】本篇文章用C语言采用多文件编写实现了一个基础的扫雷游戏(附源码),并讲解了关于函数递归的基础概念及其相对应的习题练习(附源码)
47 1
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
|
3月前
|
存储 安全 算法
C 语言——实现扫雷小游戏
本文介绍了使用二维数组创建棋盘并实现扫雷游戏的方法。首先,通过初始化数组创建一个9x9的棋盘,并添加行列标识以便操作。接着,利用随机数在棋盘上布置雷。最后,通过判断玩家输入的坐标来实现扫雷功能,包括显示雷的数量和处理游戏胜利或失败的情况。文中提供了完整的代码实现。
57 1
C 语言——实现扫雷小游戏
|
2月前
|
存储 算法 安全
C语言实现扫雷游戏
C语言实现扫雷游戏
|
2月前
|
C语言
初学者指南:使用C语言实现简易版扫雷游戏
初学者指南:使用C语言实现简易版扫雷游戏
44 0
|
2月前
|
C语言
C语言扫雷游戏(详解)
C语言扫雷游戏(详解)
45 0
|
2月前
|
存储 编译器 C语言
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
41 0
|
4月前
|
C语言
扫雷(C语言)
扫雷(C语言)
49 4
|
5月前
|
存储 编译器 C语言
|
6月前
|
C语言
【海贼王编程冒险 - C语言海上篇】怎样用C语言实现简单的扫雷游戏?
【海贼王编程冒险 - C语言海上篇】怎样用C语言实现简单的扫雷游戏?
43 1