用C写小游戏(扫雷)

2023-11-13

前言

说到扫雷大家都不陌生吧,特别是windowsXP开始的菜单中找到的小游戏中最吸引我们的便是扫雷了。从WindowsXP到win7微软都一直保留着这个游戏,然而在win10后我们再次熟悉的方式打开时却发现过往的回忆已经封存。1992年成立的"国际禁止地雷运动”的组织,他们曾见证过这些地雷带来的伤害,于是要求删除Windows操作系统中的《扫雷》游戏,原因就是《扫雷》伤害了冒着生命危险排雷的勇士以及众多地雷受害者。因此这个小游戏便不能在window中存在了。 不能玩不代表我们不能实现一个属于自己的扫雷游戏,就当是实现孩时回忆吧!
这次实现的扫雷游戏用到的知识点不会太多:函数,二维数组即可。

实现的基本要素

菜单

看过上一篇的三子棋,我们这次的菜单也是差不多这样实现。给予玩家选择:玩或是退出

void Meun()
{
	printf("|----------------------------------------|\n");
	printf("|     1.开始游戏         0.退出游戏      |\n");
	printf("|----------------------------------------|\n");
}

main函数的主体逻辑

int main()
{
	int input = 0;
	do
	{
		menu();//菜单
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			system("cls");
			printf("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
	return 0;
}

雷区设置与打印

1. 雷区

在实现之前我们先了解了扫雷的游戏规则。
在这里插入图片描述

我们点开的第一步就是红色方框内小红圈的位置,那么周围的1代表的是在这个9宫格内必定有一个雷,那么就好理解了,左下角就是雷。
我们游戏的有效区范围是如下图展示9 * 9
在这里插入图片描述
那我们不妨想到二维数组设置成9 * 9就可以了。这样想就错了,为什么呢?前面我们说到我们雷的提示区范围得是9宫格,但是我们的雷要是刚好就在边缘,99的数组是不是就不能够解决这个问题了。所以我们在设置数组的时候得多加两行两列,上下各加一行,左右各加一列,这样我们就得设置1111的二维数组了。

//雷区有效区我们用ROW和COL表示,我们改变ROW和COL就可以随意改变雷区大小。  
#define ROW 9
#define COL 9
//二维数组大小我们用ROWS和COLS来表示下标。
#define ROWS ROW + 2
#define COLS COL + 2

#define MINE 10 //雷的数目

在这里我们又得思考一个问题,雷的设置和雷区打印全部都放在同一个数组里面,这样雷和提示还有显示区全部打印出来全部紊乱了。为了解决这个问题,我们创建两个二维数组,一个用来存储雷,一个用来展示给玩家看。
游戏主体我们封装在game函数里面

void game()
{
	//定义用于存放雷和显示雷的数组
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
}

数组创建好了后我们进行初始化,在放雷的数组里面我们全部初始化为0。在展示的数组里面我们全部初始化;

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;   //set表示要初识化的字符
		}
	}
}

void game()
{
	//定义用于存放雷和显示雷的数组
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
	InitBoard(mine, ROWS, COLS, '0');
	InitBoard(show, ROWS, COLS, '*');
}

2.布置雷

大体布局准备好后我们开始布置雷,雷的生成当然不能是固定的那玩起来得多无聊。所以我们依照以往一样生成随机数来布置雷的位置。生成的随机数可能会覆盖原来的雷,所以我们还要考虑防止重复一个位置生成雷。

void SetMine(char board[ROWS][COLS], int row, int col)
{
	int count = MINE; //宏定义雷,好让我们随意改变
	while (count)
	{
		int x = rand() % row + 1;      //随机生成雷的坐标
		int y = rand() % col + 1;
		if (board[x][y] == '0')        //检查该位置是否已经有雷
		{
			board[x][y] = '1';
			count--;                  //每生成一个雷就减一次
		}
	}
}

3. 打印雷区

雷布置好了没有我们不知道,所以我们设置一个函数来打印出来,即可打印放雷的数组,也可以打印展示部分。

void PrintBorad(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 1; i <= row; i++)
	{
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);
		}
		printf("\n");
	}
}
	SetMine(mine, ROW, COL);
	PrintfBoard(mine, ROW, COL);
	PrintfBoard(show, ROW, COL);

在这里插入图片描述

在这里我们打印的雷位置和展示部分,1代表都是雷,0表示安全区。但是这样打印出来的难免会不知道哪行哪列,到时我们输入坐标找都会找到眼花,所以我们将打印函数改进美观显示行和列
在这里插入图片描述

void PrintBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	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("|");
		printf("\n");
	}
	for (i = 0; i <= 2 * row+2; i++)
		printf("-");
	printf("\n");
}

雷范围标识与排雷

1. 雷范围标识

在这里插入图片描述

如图红色标识九宫格内数字1代表这个九宫格内只有一个雷,黑色标识的范围内数字2代表有两个雷。所以这些数字都是提示玩家雷的大体位置,那么问题来了怎么去提示位置呢?我们在九宫格内除去中间的发现一个雷我们就计数++即可,因此我们可以这样设计

int MineCount(char board[ROWS][COLS], int x, int y)
{
	int i = 0;
	int j = 0;
	int count = 0;
	for (i = x - 1; i <= x + 1; i++)
	{
		for (j = y - 1; j <= y + 1; j++)
		{
			if (board[i][j] == '1')
			{
				count++;
			}
		}
	}
	return count;
}

2. 排雷

排雷的时候我们得考虑以下几个问题:

  1. 玩家坐标是否走过同样的位置
  2. 玩家是不是踩雷
  3. 玩家排雷坐标是不是超过雷区或者输入其他字符
  4. 排雷结束的条件

我们把玩家下的坐标值对比放雷的数组,然后打印出来的结果用展示数组来呈现给玩家观看。

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0; 
	int judge = 0; //判断是否排完雷
	int* sz = judge;
	while (judge < row * col - MINE) // 若是坐标还没有排完雷继续游戏
	{
		printf("请输入坐标->");
		scanf("%d %d", &x, &y);
		if (x >= 1 && x <= row && y >= 1 && y <= col)   //判断坐标合法性
		{
			if (mine[x][y] == '1')
			{
				system("cls");
				printf("很遗憾,你被炸死了!\n");
				PrintBoard(mine, row, col);     
				break;
			}
			else
			{
				if (show[x][y] != '*')   //判断是否重复排查
				{
					printf("该坐标已被排查,请重新输入!\n");
					continue;  //直接进入下一次循环
				}
				else
				{
					ShowBlanks(mine, show, row, col, x, y, sz);  //展示一片除提示雷的空白
					system("cls");  
					PrintBoard(show, row, col);  
				}
			}
		}
		else
		{
			printf("输入错误,请重新输入!\n");
			system("pause"); 
			getchar(); 防止输入错误造成死循环
		}
	}
	if (judge == row * col - MINE_COUNT)
	{
		system("cls");
		printf("恭喜你,排雷成功!\n");
		PrintBoard(show, row, col);
		return;
	}
}

玩家要一个一个坐标的下难免会对这个游戏失去兴趣。这时我们就要实现一个函数来展示在有雷的附近才停下来,这样就可以防止一个一个的输入坐标9*9这么多的次数了。
在这里插入图片描述

递归展示空白时我们得考虑一下会不会造成死递归。

void ShowBlanks(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col, int x, int y, int* sz)
{
	if (x >= 1 && x <= row && y >= 1 && y <= col)  //判断坐标是否为排查范围内
	{
		int num = MineCount(mine, x, y);   //获取坐标周围雷的个数
		if (num == 0)
		{
			(*sz)++;
			show[x][y] = ' ';   //如果该区域没有雷就设置成空格
			int i = 0;
			int j = 0;
			for (i = x - 1; i <= x + 1; i++)
			{
				for (j = y - 1; j <= y + 1; j++)
				{
					if (show[i][j] == '*')    //防止已经排查过的坐标再次递归
						ShowBlanks(mine, show, row, col, i, j, sz);
				}
			}
		}
		else
		{
			(*sz)++;
			show[x][y] = num + '0';
		}
	}
}

代码展示

#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
  
#define ROW 9
#define COL 9
#define ROWS ROW + 2
#define COLS COL + 2
#define MINE 10 

void Meun()
{
	printf("|----------------------------------------|\n");
	printf("|     1.开始游戏         0.退出游戏      |\n");
	printf("|----------------------------------------|\n");
}

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;   
		}
	}
}

void SetMine(char board[ROWS][COLS], int row, int col)
{
	int count = MINE; 
	while (count)
	{
		int x = rand() % row + 1;     
		int y = rand() % col + 1;
		if (board[x][y] == '0')       
		{
			board[x][y] = '1';
			count--;                  
		}
	}
}

void PrintBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	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("|");
		printf("\n");
	}
	for (i = 0; i <= 2 * row+2; i++)
		printf("-");
	printf("\n");
}

int MineCount(char board[ROWS][COLS], int x, int y)
{
	int i = 0;
	int j = 0;
	int count = 0;
	for (i = x - 1; i <= x + 1; i++)
	{
		for (j = y - 1; j <= y + 1; j++)
		{
			if (board[i][j] == '1')
			{
				count++;
			}
		}
	}
	return count;
}

void ShowBlanks(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col, int x, int y, int* sz)
{
	if (x >= 1 && x <= row && y >= 1 && y <= col)  
	{
		int num = MineCount(mine, x, y);   
		if (num == 0)
		{
			(*sz)++;
			show[x][y] = ' ';  
			int i = 0;
			int j = 0;
			for (i = x - 1; i <= x + 1; i++)
			{
				for (j = y - 1; j <= y + 1; j++)
				{
					if (show[i][j] == '*')    
						ShowBlanks(mine, show, row, col, i, j, sz);
				}
			}
		}
		else
		{
			(*sz)++;
			show[x][y] = num + '0';
		}
	}
}

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0; 
	int judge = 0; 
	int* sz = &judge;
	while (judge < row * col - MINE) 
	{
		printf("请输入坐标->");
		scanf("%d %d", &x, &y);
		if (x >= 1 && x <= row && y >= 1 && y <= col)   
		{
			if (mine[x][y] == '1')
			{
				system("cls");
				printf("很遗憾,你被炸死了!\n");
				PrintBoard(mine, row, col); 
				printf("1是雷0是安全区\n");    
				break;
			}
			else
			{
				if (show[x][y] != '*')   
				{
					printf("该坐标已被排查,请重新输入!\n");
					continue;  
				}
				else
				{
					ShowBlanks(mine, show, row, col, x, y, sz);  
					system("cls");  
					PrintBoard(show, row, col);  
				}
			}
		}
		else
		{
			printf("输入错误,请重新输入!\n");
			system("pause"); 
			getchar(); 
		}
	}
	if (judge == row * col - MINE)
	{
		system("cls");
		printf("恭喜你,排雷成功!\n");
		PrintBoard(show, row, col);
		return;
	}
}

void game()
{
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
	InitBoard(mine, ROWS, COLS, '0');
	InitBoard(show, ROWS, COLS, '*');
	SetMine(mine, ROW, COL);
	system("cls");   //清除菜单,美观整洁
	PrintBoard(show, ROW, COL);	
	FindMine(mine, show, ROW, COL);
}

int main()
{
	//设置随机数的种子
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		Meun();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			system("cls");
			printf("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
	return 0;
}

以上就是扫雷全部内容,感谢大家支持!!

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用C写小游戏(扫雷) 的相关文章

  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【C++】__declspec含义

    目录 一 declspec dllexport 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 declspec dllexport declspec dllexport 是 Microsoft Visual C 编译器提供的一个扩展
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 史上最全Java面试八股文(带全部答案)2024年最新版

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • 计算机Java项目|基于SSM的微课学习系统

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 详解Java信号量-Semaphore

    第1章 引言 大家好 我是小黑 今天 咱们一起来深入探讨一下Semaphore 在Java中 正确地管理并发是一件既挑战又有趣的事情 当谈到并发控制 大家可能首先想到的是synchronized关键字或者是ReentrantLock 但其实
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 15天学会Python深度学习,我是如何办到的?

    陆陆续续有同学向我们咨询 Python编程如何上手 深度学习怎么学习 如果有人能手把手 一对一帮帮我就好了 我们非常理解初学者的茫然和困惑 大量视频 书籍 广告干扰了大家的判断 学习Python和人工智能 成为内行人不难 为此 我们推出了
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 初学者如何快速入门Python(内附详细攻略),一文讲清

    目前python可以说是一门非常火爆的编程语言 应用范围也非常的广泛 工资也挺高 未来发展也极好 Python究竟应该怎么学呢 我自己最初也是从零基础开始学习Python的 给大家分享Python的学习思路和方法 一味的买书看书 看视频 是
  • 学Python,一个月从小白到大神?看你怎么学!

    Python是一门超强大而且超受欢迎的编程语言 它被用在各种领域 比如网站开发 数据分析 人工智能和机器学习 学会Python会给你创造很多职业机会 所以绝对是值得一试的 但你有没有过这样的梦想 一个月时间 从Python小白变成Pytho
  • 【C#】基础巩固

    最近写代码的时候各种灵感勃发 有了灵感 就该实现了 可是 实现起来有些不流畅 总是有这样 那样的卡壳 总结下来发现了几个问题 1 C 基础内容不是特别牢靠 理解的不到位 导致自己想出来了一些内容 但是无法使用正确的C 代码实现 导致灵感无法
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 计算机Java项目|人体健康信息管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • scala简介与安装

    一 简介 1 scala是啥 Scala用一种简洁的高级语言将面向对象和函数式编程结合在一起 Scala的静态类型有助于避免复杂应用程序中的错误 其JVM和JavaScript运行时使您能够轻松访问庞大的库生态系统来构建高性能系统 2 为啥
  • C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)

    1 如果基类定义了不带参数的默认构造函数 则编译器为派生类自动生成的默认构造函数会调用基类的默认构造函数 2 如果基类定义了拷贝构造函数 则编译器为派生类自动生成的拷贝构造函数同样会调用基类的拷贝构造函数 3 如果基类定义了带参数的构造函数
  • Git-3-项目初体验

    Git的使用需求 IAR工程文件夹 包含多个工程 多个文件夹和文件 c文件 h文件以及库文件 编译文件等等 a 只跟踪c文件和h文件的版本 实现一个大的多层文件夹中的 c和 h文件 能够更新 b 建立分支 分别对各个工程进行操作 proje
  • 如何使用指向类的成员函数的指针(详解!)

    我们首先复习一下 指向函数的指针 如何使用 void print void pfun 声明一个指向函数的指针 函数的参数是 void 函数的返回值是 void pfun print 赋值一个指向函数的指针 pfun 使用一个指向函数的指针
  • vue tab切换

  • Dicom 医学图像与 nii 标签数据处理

    Dicom 医学图像与 nii 标签数据处理 Dicom医学图像处理 nii标记数据处理 综合数据处理 1 code1 2 需要说明 3 code2 Dicom医学图像处理 reference https blog csdn net u01
  • 【Linux】传输层协议 — TCP协议

    Linux 博客主页 一起去看日落吗 分享博主的在Linux中学习到的知识和遇到的问题 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 看似不起波澜的日复一日 一定会在某一天让你看见坚持的意义 祝我们都能在鸡零狗碎里找
  • 【k8s】kube-proxy 工作模式

    文章目录 Userspace模式 iptables模式 负载均衡 Load Balancing LB 轮询 Round Robin SessionAffinity 最少连接 Least Connection IP哈希 IP Hash Ses
  • 升级AGP 7.x以后,引入带冒号‘:‘的插件规则

    升级到AGP7 x后 插件的使用规则有变化 插件id只支持 点 下划线 中划线 三种特殊字符 对于包含 的插件 比如 com alibaba arouter register 1 0 2 在plugins闭包中使用 编译报错 plugin
  • cmd进入mysql及常用的mysql操作

    cmd进入mysql操作 win R 输入cmd 打开cmd窗口 进入到 mysql bin目录的路径下 第一步 启动mysql服务 可以通过 net start myql 命令实现 第二步 先使用DOS命令进入mysql的安装目录下的bi
  • PCB对点之Mark点检测

    一 Mark点的作用 Mark点是电路板设计中PCB应用于自动贴片机上的位置识别点 Mark点标记可以是裸铜 清澈的防氧化涂层保护的裸铜 PCB板Mark点也叫基准点 为表面贴装工艺中的所有步骤提供共同的可测量点 保证了SMT设备能精确的定
  • 【MySQL】如何导入SQL数据库

    目录 如何导入SQL数据库 例子1 以Terminal终端命令行导入 例子2 以SQLyog图形化软件导入 如何导入SQL数据库 如何将现成的数据库导入到MySQL中 有两种方式 通过终端命令行语句导入 mysql gt source SQ
  • 51单片机入学第五课——蜂鸣器的原理与应用

    文章目录 三极管 三极管的应用 三极管工作原理 PNP型 NPN型 蜂鸣器工作原理 电路分析 编程实践 总结 三极管 三极管两种封装方式 三极管的应用 三极管 全称应为半导体三极管 也称双极型晶体管 晶体三极管 是一种控制电流的半导体器件
  • cookie记录了服务器相关的信息,使用cookie记录信息(精选).ppt

    文档介绍 第6章使用cookie记录信息 1 6 1 1 什么是cookie 什么是Cookies 小甜饼 Cookies就是服务器暂存放在你的电脑里的资料 txt格式的文本文件 好让服务器用来辨认你的计算机 当浏览网站的时候 Web服务器
  • DDR3 关键时间参数

    1 传输速率 比如 1066MT S 1600MT S 1866MT S 等 这个是首要考虑的 因为这个决定了 DDR3 内存的最高传输速率 2 tRCD 参数 tRCD 全称是 RAS to CAS Delay 也就是行寻址到列寻址之间的
  • 《Learning Spark》第十一章:Spark(MLlib)与机器学习

    2020 07 06 引言 我一直以为这部分内容 其实没有什么大不了的 反正就是弄出来数据 然后跑算法就完事了嘛 但是仔细读了读这小节 发现了一些不一样的地方 这里来列举一下 我读完这个章节之后的一些想法 然后再具体来记录这部分的主要内容
  • 计算机组成原理 总线与微命令实验

    总线与微命令实验 实验环境 计算机组成原理实验环境 实验目的 理解总线的概念和作用 连接运算器与存储器 熟悉计算机的数据通路 理解微命令与微操作的概念 实验要求 做好实验预习 读懂实验电路图 熟悉实验元器件的功能特性和使用方法 按照实验内容
  • 手把手教你阅读开源代码【附Python开源项目包】

    文末领取 Python开源项目包 1 为什么要阅读开源代码 阅读 Python 开源项目代码主要有如下三个原因 在工作过程中遇到一些问题 Google 和 StackOverFlow 等网站找不到解决办法 只能去翻源码 对某些项目或者方向非
  • VS2010 error LNK2019: unresolved external symbol _WinMain

    MSVCRTD lib crtexew obj error LNK2019 unresolved external symbol WinMain 16 referenced in funct 本来应该是console application
  • 用C写小游戏(扫雷)

    扫雷 前言 实现的基本要素 菜单 雷区设置与打印 1 雷区 2 布置雷 3 打印雷区 雷范围标识与排雷 1 雷范围标识 2 排雷 代码展示 前言 说到扫雷大家都不陌生吧 特别是windowsXP开始的菜单中找到的小游戏中最吸引我们的便是扫雷