3.6 使用多维数组
如您所见,序列在游戏中用处很大。它们能够以字符串的形式存储玩家的名字,或者以数组的形式存储RPG游戏中的物品。但是有时线性列表不能满足游戏中某些部分的迫切需求,所以需要使用更高维的结构。例如,一个含64个元素的数组可以用来表示棋盘,但是8×8元素构成的二维实体用起来则更加直观。幸运的是,可以使用二维或三维(甚至更高维)数组来最好地满足游戏的需求。
3.6.1 Tic-Tac-Toe Board程序简介
Tic-Tac-Toe Board程序显示了一个井字棋游戏棋盘。程序显示棋盘并宣布X为胜者。尽管可以用一维数组来编写,但程序使用了二维数组来表示棋盘。程序如图3-5所示。
从Course Technology网站(www.courseptr.com/downloads)或本书合作网站(http://www. tupwk.com.cn/downpage)上可以下载到该程序的代码。程序位于Chapter 3文件夹中,文件名为tic-tac-toe_board.cpp。
图3-5 井字棋游戏棋盘用二维数组表示
// Tic-Tac-Toe Board
// Demonstrates multidimensional arrays
#include <iostream>
using namespace std;
int main()
{
const int ROWS = 3;
const int COLUMNS = 3;
char board[ROWS][COLUMNS] = { {'O', 'X', 'O'},
{' ', 'X', 'X'},
{'X', 'O', 'O'} };
cout << "Here’s the tic-tac-toe board:\n";
for (int i = 0; i < ROWS; ++i)
{
for (int j = 0; j < COLUMNS; ++j)
{
cout << board[i][j];
}
cout << endl;
}
cout << "\n’X’ moves to the empty location.\n\n";
board[1][0] = ’X’;
cout << "Now the tic-tac-toe board is:\n";
for (int i = 0; i < ROWS; ++i)
{
for (int j = 0; j < COLUMNS; ++j)
{
cout << board[i][j];
}
cout << endl;
}
cout << "\n’X’ wins!";
return 0;
}