首页 > 其他分享 >初识C语言——7扫雷(低配)

初识C语言——7扫雷(低配)

时间:2023-07-24 23:02:22浏览次数:42  
标签:ACRS 低配 int COLS C语言 char ACR 初识 COL

主程序——text.c:

#define _CRT_SECURE_NO_WARNINGS 1


#include"game.h"


game()

{

	char Hide[ACRS][COLS] = {'0'};

	char Show[ACRS][COLS] = {'0'};

	//数组初识化

	Initialize(Hide, ACRS, COLS, '0');

	Initialize(Show, ACRS, COLS, '*');

	//棋盘打印

	/*Print(Hide, ACR, COL);*/

	Print(Show, ACR, COL);

	//布置雷

	Layout(Hide, ACR, COL);

	/*Print(Hide, ACR, COL);*/

	//扫雷

	Sweep(Hide, Show, ACR, COL);

  
}


menu()

{

	printf("##########################\n");

	printf("###### 1.play 0.exit######\n");

	printf("##########################\n");

}


text()

{

	int input = 0;

	srand((unsigned int)time(NULL));

	do

	{

  menu();

  printf("请选择模式:>");

  scanf("%d", &input);

  switch (input)

  {

  case 1: //游戏入口

  	game();

  	break;

  case 0: printf("退出游戏\n");

  	break;

  default:printf("输入异常,请重新输入\n");

  	break;

  }

	} while (input);

}

int main()

{

	//程序开始

	text();

	return 0;

}

函数的声明——game.h

#pragma once


#include<stdio.h>

#include<stdlib.h>

#include<time.h>



#define ACR 9

#define COL 9

#define ACRS ACR + 2

#define COLS COL + 2


void Initialize(char board[ACRS][COLS], int acrs, int cols, char s);

void Print(char board[ACRS][COLS], int acr, int col);

void Layout(char board[ACRS][ACRS], int acr, int col);


int Sweep(char board[ACRS][COLS], char board1[ACRS][COLS], int acr, int col);

函数的实现——game.c

#define _CRT_SECURE_NO_WARNINGS 1


#include"game.h"


void Initialize(char board[ACRS][COLS], int acrs, int cols, char s)

{

	int i = 0;

	int j = 0;

	for (i = 0; i < acrs; i++)

	{

  for (j = 0; j < cols; j++)

  {

  	board[i][j] = s;

  }

	}

}


void Print(char board[ACRS][COLS], int acr, int col)

{

	int i = 0;

	int j = 0;

	for (i = 0; i <= acr; i++)

	{

  printf("%d ", i);

  for (j = 1; j <= col; j++)

  {

  	if (0 == i)

  	{

    printf("%d ", j);

  	}

  	else

  	{

    printf("%c ", board[i][j]);

  	}

  }

  printf("\n");

	}

}


void Layout(char board[ACRS][ACRS], int acr, int col)

{

	int x = 0;

	int y = 0;

	int count = 10;

	while (count)

	{

  x = (rand() % 9) + 1;

  y = (rand() % 9) + 1;

  if (board[x][y] == '0')

  {

  	board[x][y] = '1';

  	count--;

  }

	}

}


int Judgment( char Hide[ACRS][COLS], int i, int j)

{

	return Hide[i - 1][j] - '0'

  + Hide[i - 1][j - 1] - '0'

  + Hide[i][j - 1] - '0'

  + Hide[i + 1][j - 1] - '0'

  + Hide[i + 1][j] - '0'

  + Hide[i + 1][j + 1] - '0'

  + Hide[i][j + 1] - '0'

  + Hide[i - 1][j + 1] - '0';

}


int Sweep(char Hide[ACRS][COLS], char Show[ACRS][COLS], int acr, int col)

{

	int i = 0;

	int j = 0;

	int count = 0;

	int uncover = 0;

	while (1)

	{

  scanf("%d%d", &i, &j);

  //判断雷的个数

  if (i >= 1 && i <= 9 && j >= 1 && j <= 9)

  {

  	if (Hide[i][j] == '1')

  	{

    //踩雷

    printf("很遗憾,您踩到雷了\n");

    break;

  	}

  	else

  	{

    int count = Judgment(Hide, i, j);

    Show[i][j] = count + '0';

    uncover++;

    Print(Show, ACR, COL);

    if (uncover == 71)

    {

    	printf("恭喜您,扫雷成功\n");

    	break;

    }

  	}

  }

  else

  {

  	printf("非法输入,请重新输入");

  }


	}

}

标签:ACRS,低配,int,COLS,C语言,char,ACR,初识,COL
From: https://blog.51cto.com/u_16190050/6840524

相关文章

  • C语言分支与循环(7)--- do...while()循环
    一.do语句的语法do循环语句;while(表达式);我们可以发现do后面的循环语句一定会被执行一次,随后再去执行while()循环语句,去判断表达式,如果为真则返回do语句继续执行,若为假则不进入do语句循环,如以下代码:#include<stdio.h>intmain(void){ inti=0; do { printf("%d",i);......
  • 我的第五次C语言练习
    今天写书上的练习。//第一章练习//intmain(void)//{// intinch;// floatcm;// inch=0;// scanf("%d",&inch);// cm=2.54*inch;// printf("cm=%f\n",cm);// return0;//}发现之前第一章还有练习没写,是将英尺转换为厘米,因为inch乘了个2.54,所以cm是小数,用的是flo......
  • 简单理解:C语言中的分支和循环语句
    一、C语言中的循环语句while循环while(//条件语句){//语句块}执行的逻辑:在执行到while()这一行时,会根据条件语句的真和假来判断是否继续进行循环,若条件语句为真则继续循环,如果条件为假则结束循环。dowhile循环do{//语句块}while(条件语句);执行的逻辑:和while类似,但是要注......
  • 【Spring Boot 初识丨maven】
    上一篇讲了使用spirngboot自带的构建器构建项目本篇来讲一讲如何从零开始构建一个maven项目前提:jdk推荐java17及以上maven推荐Maven3.5+(maven构建)一、安装maven  Maven的安装需要依赖JDK的安装,所以必须先安装完成JDK且配置好JDK环境变量后在进行Maven的安装。......
  • C语言指针的常见问题
    1值传递下面看一个列子,student结构体中包含该学生的各种信息,我们在change函数中对其进行部分修改,再在主函数中输出其结果#include<stdio.h>#include<string.h>#defineformat"%d\n%s\n%f\n%f\n%f\n"structstudent{intnum;charname[20];floatscore[3]......
  • C语言模拟银行排队叫号系统(链队)
    一.队列队列是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队尾,而从队列中删除元素时则总是删除队头元素。由于队列具有FIFO特性,因此队列通常用于需要按照顺序处理数据的场......
  • 初始C语言
    基本了解C语言的基础知识,对C语言有个初步的认识。C语言是什么?人与人之间的交流使用的是自然语言。如汉语,英语,日语。人与计算机是怎么交流的呢?使用计算机语言。目前已知已经有上千种计算机语言。人们是通过计算机语言写的程序,给计算机工作的。C语言是一门通用的计算机编程语......
  • java并发编程(一)----初识
    一、什么是并发  先看“科普中国”给出的官方解释。并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。   通俗来讲,并发就是指同一时间间隔内发生两个或多......
  • 初识机器学习及机器学习线性拟合的实现
    从最小二乘法到机器学习1,什么是机器学习?机器学习有下⾯⼏种定义:机器学习是⼀⻔⼈⼯智能的科学,该领域的主要研究对象是⼈⼯智能,特别是如何在经验学习中改善具体算法的性能。机器学习是对能通过经验⾃动改进的计算机算法的研究。机器学习是⽤数据或以往的经验,以此优化计算机程......
  • C语言的一些不常用的编译知识
    1.__stringifyLinux内核中有如下两个宏:#define__stringify_1(x...)#x#define__stringify(x...)__stringify_1(x)作用:会将x替换成()里面的内容。2.GCC__attribute__使用__attribute__((used)):表示对于这个函数可能不会调用它、可能用不到它,编译器不用进行warning提......