使用场景:实现 RPG 游戏中记录并显示物品栏中某物品的名称与数量
目标:实现游戏道具名称和数量的存储和读取
实例:
一维数组:
本案例实现的逻辑是:定义一维数组,
之后对数组进行赋值,记录道具的数量,
在点击物品时,读取数组的值,显示物品的数量。
实现的代码为:
intitemNum[5];//定义一维数组itemNum,用来分别记录5种物品的数量
int itemNum[5] ={
1, // 魔法瓶的数量为 1
3, // 火柴的数量为 3
5, // 鞋子的数量为 5
7, // 石头的数量为 7
9 // 剑的数量为 9
};
当鼠标点击鞋子后显示其数量
![5-5-2.png 5-5-2.png](http://www.dongyo.cn/bbs/data/attachment/forum/201209/20/110416kk651u6of1x2s1bf.png)
代码为:
sprintf(txt.text1,"%d", itemNum[2]);
如此即可输出第三个物品鞋子的数量
从上面的例子可以得知:
数组的格式 :类型说明符 数组名 [ 常量表达式 ]
数组的定义 :数组是有序数据 ( 必须是相同的数据类型结构 ) 的集合。
例如 :
int itemNum[5];
一维数组的初始化
在对数组定义完毕后,我们将对数组进行初始化
例如:
intitemNum[5] =
{1, // 魔法瓶的数量为 1
3, // 火柴的数量为 3
5, // 鞋子的数量为 5
7, // 石头的数量为 7
9 // 剑的数量为 9
};
初始化完成后玩家就可对数组进行引用。
数组的引用形式:
数组名 [ 下标 ]
数组必须先定义,后使用。只能逐个引用数组元素,而不能一次引用整个数组,其中,下标可以是整型常量也可以是整型表达式。
但是我们会发现,鞋子的名字 “shoes” 无法显示,这时我们可以再定义一个
二维数组:
实现的逻辑:
定义二维数组,
之后对数组进行赋值,记录道具的名字,
在点击物品时,读取数组的值,显示物品的名字。
MC 中实现代码如下:
charitemName[5][6] ={ 'm','a','n','a',' ',0,
'm','a','t','c','h',0,'s','h','o','e','s',0,
's','t','o','n','e',0,
's','w','o','r','d',0
}; // 定义二维数组 itemName, 用来分别记录 5 种物品的名字
当鼠标点击鞋子后显示其名字
代码如下:
for(i = 0; i< 6; i++)
{sprintf(txt.text,"%c ", itemName[3]);
}如此即可输出第三个物品鞋子的名字
从上面的例子中可以知道,
二维数组的格式 :
类型说明符 数组名 [ 常量表达式 1][ 常量表达式 2]
其中,表达式 1 表示:第一维下标的长度; 表达式 2 表示:第二维下标的长度;
注意:
二维数组在概念上是二维的 , 就是说其下标在两个方向上变化 , 数组元素在数组中的位置也处于一个平面中 , 并不向一维数组 , 所有的元素是线性的 , 但是 , 二维数组中的元素和一维数组中的元素一样 , 也是按线性存储的。
二维数组的初始化
二维数组定义完成后,需要对数组进行初始化如:
charitemName[5][6]={'m','a','n','a',' ',0,
'm','a','t','c','h',0,'s','h','o','e','s',0,
's','t','o','n','e',0,
's','w','o','r','d',0
}
分别将: ‘mana’ ‘match’ ‘shoes’ ‘stone’ ‘ sword’ 这 5 个名称记录下来
二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可以按行分段赋值 , 也可以按行连续赋值。
1 、按行分段赋值
inta[2][3]={{1,2,3},{4,5,6}};
2 、按行连续赋值inta[2][3]={1,2,3,4,5,6};
本节的实例就是使用连续赋值完成的这两种赋值的结果是完全相同的;
说明 :
1 、可以只对部分元素赋值,未赋值的元素自动取 0 ;
例如: int a[3][3]={{1},{2},{3}};
是对每行的第一列元素赋值 , 未赋值的元素自动取 0 。
2 、如果对所有的元素赋初值 , 则第一维的长度可以不给出;
例如: inta[3][3]={1,2,3,4,5,6,7,8,9};
可以改为: inta[][3]={1,2,3,4,5,6,7,8,9};
二维数组的引用在数组初始化完毕后,即可进行引用如下:
for(i = 0; i <6; i++)
{sprintf(txt.text,"%c ", itemName[3]);
}使用for循环来为输出数组itemName[3][1] - itemName[3][6]的所有字符,即物品3的名称。
引用形式: 数组名[下标][下标]
其中下标应该为整型常量或整型表达式:
例如:
char itemName[3][4];
表示数组itemName的第三行第四列的元素为“s”。注意:
下标变量和数组说明在形式上有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度;而数组元素中的下标是该元素在数组中的位置标识;数组说明中的方括号内只能是常量,而数组元素中方括号中的下标可以是常量,变量或表达式。
Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2501&extra=page%3D2%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline