3.6 使用多維數(shù)組
如您所見,序列在游戲中用處很大。它們能夠以字符串的形式存儲玩家的名字,或者以數(shù)組的形式存儲RPG游戲中的物品。但是有時線性列表不能滿足游戲中某些部分的迫切需求,所以需要使用更高維的結(jié)構(gòu)。例如,一個含64個元素的數(shù)組可以用來表示棋盤,但是8×8元素構(gòu)成的二維實體用起來則更加直觀。幸運(yùn)的是,可以使用二維或三維(甚至更高維)數(shù)組來最好地滿足游戲的需求。
3.6.1 Tic-Tac-Toe Board程序簡介
Tic-Tac-Toe Board程序顯示了一個井字棋游戲棋盤。程序顯示棋盤并宣布X為勝者。盡管可以用一維數(shù)組來編寫,但程序使用了二維數(shù)組來表示棋盤。程序如圖3-5所示。
從Course Technology網(wǎng)站(www.courseptr.com/downloads)或本書合作網(wǎng)站(http://www. tupwk.com.cn/downpage)上可以下載到該程序的代碼。程序位于Chapter 3文件夾中,文件名為tic-tac-toe_board.cpp。
圖3-5 井字棋游戲棋盤用二維數(shù)組表示
// 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;
}