用户:
Mellin_Amp查看:2908 回复:59 评论:73 创建时间:2020-07-11T21:57:06
本系列由“慕斯酱小号的小号”制作 不定期更新
————我要成为编程猫的“Code Star!”
本帖内容与以下作品的代码一起食用更佳:
https://shequ.codemao.cn/work/20808527
============分割线===========
看,训练师
这是Windows自带游戏[扫雷]的游戏截图
大家也都知道,编程猫也有一些创作者(包括慕斯我)在编程猫造出了扫雷
本系列教程,旨在通过对扫雷游戏制作的教程以向训练师普及编程时常用的方法
俗话说得好“工欲善其事,必先利其器”
想要制作一个扫雷,就要先把“雷区”布置好从上面的图片我们可以看出 扫雷的“雷区”
是9*9(简单模式)的方格组成的,每个格子只有2个状态
“有雷”或者“没有雷”
怎么来记录这个数据呢?
这时候,我们就要请出今天的主角——二维数组了
二维数组
顾名思义,就是有两个“维度”的数组
如果说一个列表是[1,2,3,4,5]这样的线
那么二维数组就是
这样的一个“面”
二维数组是由多个相同的一维数组组成
一维数组的元素我们用“第*个”定位
同理,二维数组的元素就可以用(第*列,第*行)来定位
举个例子 我们拿出一个二维数组Map
(书写可能并不标准,仅仅是形象演示)
注:按照程序的语言 第一个的序号是0 但为了教学效果
我们让第一个元素也是1好了
那么这个Map[1][1]就表示第一行第一列的元素 也就是0
Map[1][2]就表示第一行第二列的元素 也就是1
如果我们把扫雷的地图抽象成这样的一个二维数组
设置0是没有雷 1是有雷
那么制造扫雷,看起来也就不那么难了
读到这里,有的小朋友就要发问了:
没错
编程猫并没有内置“二维数组”的功能
但是别忘了,“自己动手丰衣足食”是我们的优良传统
编程猫没有二维数组? 我们就用列表自己造一个!
这是一个列表Map
首先我们得保证列表和二维数组转换前后元素没有发生改变
“为什么不把二维数组逐行连接呢?”
我们可以先创建一个大列表
第一步 把第一行的东西塞进去
之后把第二行的内容放到第一行的后面 开头与第一行内容的结尾相连接
这样我们可以实现把二维数组的内容,堆到编程猫的列表里
然而事情并没有那么简单 由于这样放置
我们丢失了原二维数组的“行数”和“列数”
不妨新建两个变量来表示吧
有了想法,我们便可以动手实现了
我们第一步要做的,是实现二维数组的元素map[a][b](第a行第b列的元素)
怎么对应到一维数组
我们很容易发现 第a行第b列
也就是从左向右 从上到下数的第 长度*(a-1)+b个
如果我们的二维数组横向有16个元素(16列)
那么列表里对应的元素我们可以用上图来获取
接下来要制作从列表里把二维数组的行与列抽出来的操作
这个基本作想必大家想一想就能明白
如果不明白可以自己画图来看一看
其中加的“如果”语句是为了防止在某些情况下发生的“第0项”而产生的报错
经过这些学习,我们学到了传说中【二维数组】的搭建和调用方法
学会二维数组,对我们的编程有很大帮助
拿它存储扫雷的地图想必是轻而易举
二维数组的应用可不限于此
如果大家有兴趣的话可以完成以下几个挑战
1.用二维数组 将班级同学的学号和座位位置相对应
2.做一个能够把二维数组中的所有元素相加的程序
3.二维数组都能做出来,来做一个三维数组吧(提示:三维数组是多个二维数组的叠加)
韵律源点Arcaea社区里好久没出现这么优质的教程了
点赞0
评论
不要尬吹,扫雷的干货凑起来也顶天是一期,我这就是为了当个什么社区星水的(屑慕斯)
精教程帖有一不能有二吗?屑慕斯(bushi)
我昨天熬夜写的宁能不能看看表(恼)
Chengxuyee_已退哦对了我最近买了一本“量子力学”看
点赞0
评论
听别人讲量子力学的时候脑子都快炸了
没有记错的话,《量子力学》是大二及以后“理论力学”课程范围内的一本书,膜一下大佬
额(⊙o⊙)…
哦对了,问一下,你知不知道量子力学(这里没加书名号)里面的公式多不多啊?比如m=m0/根号(1-v*v/(c*c))那个动质量公式(虽然这不是量子力学)
如果要正式学习量子力学,宁需要把大学的《高等数学》起码学一学,还需要《普通物理》和《分析力学》的基础才行。如果单纯是“了解”级别的入门可以出门右转看科普视频去
已经了解过了。包括那句:“谁要是第一次听到量子力学不恼火,那他一定是没听懂”
我确实有点恼火。特别是这三个:量子叠加态(既死又活?!?)、量子纠缠【超距作用?!?(不存在的)】、电子轨道【超距作用?!?(不存在的)】
不,是一个三角函数都不知道是啥的人就不要学带公式的了
我就是想知道量子力学有没有很多公式,有很多公式的话我先学基础数学(这话有点问题,几乎三年级和以上的人都知道三角函数是什么,但是不知道三角函数的公式)
额,我会三角函数啊
巨佬!
点赞0
评论
巨佬什么巨佬,NOIP我特别屑,我就是一学隔壁物理竞赛的()
你是真巨佬,你小号的小号比我赞还多!!
我小号的小号比大号还强()
我信你个鬼(√)
你别不信,慕斯小号的小号确实比慕斯的小号和慕斯大号赞要多……