for循环、字符串与数组(12)

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;

}

读书导航