3.4 使用数组
虽然string对象提供了非常不错的使用字符序列的方法,但是数组可以用于任意类型的元素。也就是说,可以用数组存储一个整型序列来表示一个高分列表,也能够存储程序员自定义类型的元素,如RPG游戏中某个角色可能持有的物品构成的序列。
3.4.1 Hero's Inventory程序简介
Hero's Inventory程序维护一个典型RPG游戏中主人公的物品栏。像大多数RPG游戏一样,主人公来自一个不起眼的小村庄,他的父亲被邪恶的军阀杀害(如果他的父亲不去世的话就没有故事了)。现在主人公已经成年,是时候复仇了。
本程序中,主人公的物品栏用一个数组来表示。该数组是一个string对象的序列,每个string对象表示主人公拥有的一个物品。主人公可以交易物品,甚至发现新的物品。程序如图3-4所示。
从Course Technology网站(www.courseptr.com/downloads)或本书合作网站(http://www. tupwk.com.cn/downpage)上可以下载到该程序的代码。程序位于Chapter 3文件夹中,文件名为heros_inventory.cpp。
|
| (点击查看大图)图3-4 主人公的物品栏是存储在数组中的string对象序列 |
- // Hero's Inventory
- // Demonstrates arrays
- #include <iostream>
- #include <string>
- using namespace std;
- int main()
- {
- const int MAX_ITEMS = 10;
- string inventory[MAX_ITEMS];
- int numItems = 0;
- inventory[numItems++] = "sword";
- inventory[numItems++] = "armor";
- inventory[numItems++] = "shield";
- cout << "Your items:\n";
- for (int i = 0; i < numItems; ++i)
- {
- cout << inventory[i] << endl;
- }
- cout << "\nYou trade your sword for a battle axe.";
- inventory[0] = "battle axe";
- cout << "\nYour items:\n";
- for (int i = 0; i < numItems; ++i)
- {
- cout << inventory[i] << endl;
- }
- cout << "\nThe item name '" << inventory[0] << "' has ";
- cout << inventory[0].size() << " letters in it.\n";
- cout << "\nYou find a healing potion.";
- if (numItems < MAX_ITEMS)
- {
- inventory[numItems++] = "healing potion";
- }
- else
- {
- cout << "You have too many items and can't carry another.";
- }
- cout << "\nYour items:\n";
- for (int i = 0; i < numItems; ++i)
- {
- cout << inventory[i] << endl;
- }
- return 0;
- }