【Java开源代码栏目提醒】:网学会员,鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“Board.java”一文,供大家参考学习!
package com.mot.j2me.midlets.jbombman;
import java.util.*;
//定义游戏的模型的类,可以将其看做一个棋盘
public class Board {
//定义棋盘的二维数组
public char[][] chBoard;
/*
N - None 表示什么也没有
W - Wall 表示砖墙
L - Pillar 表示岩石
P - Player 表示游戏主角
E - Enemy 表示敌人
B - Bomb 表示炸弹
U - Bomb under player 表示主角正在放置炸弹
X - Exploding 表示炸弹爆炸
*/
//声明一个随机数对象
private Random random;
//声明棋盘的行和列数
public int iCols, iRows;
//声明判断游戏是否结束的标识
public volatile boolean isGameOver;
//声明判断是否玩家胜利的标识
public volatile boolean isWin;
//构造函数,初始化棋盘的行数和列数,并构造随机数对象
public Board( int cols, int rows ) {
//构造随机数对象
random = new Random();
iCols = cols;
iRows = rows;
//构造表示棋盘的二维数组
chBoard = new char[iCols][iRows];
//调用棋盘的初始化方法
init();
}
//定义棋盘的初始化方法
public void init() {
//表示游戏结束的标识设置为false
isGameOver = false;
//表示玩家获胜的标识设置为false
isWin = false;
//遍历二维数组,为数组的每个元素设置值为'N',表示游戏中每个棋盘格上都为空
for( int i=0; i<iCols; i++ )
for( int j=0; j<iRows; j++ )
chBoard[i][j] = 'N';
// 遍历二维数组,每相隔一个元素设置值为'L',表示游戏中每相隔的棋盘格上放置一个岩石
for( int i=1; i<iCols; i+=2 )
for( int j=1; j<iRows; j+=2 )
chBoard[i][j] = 'L';
// 遍历二维数组,在棋盘上非岩石的位置随机放置砖墙
for( int i=0; i<iCols; i++ )
for( int j=0; j<iRows; j++ )
//判断当前遍历到的棋盘格是否为空
if( chBoard[i][j] == 'N' )
//如果当前棋盘格位置为空,则根据随机数的判断条件是否成立来判断是否放置砖墙
if( Math.abs( random.nextInt() ) % 2 == 0 )
chBoard[i][j] = 'W';
}
//判断某个棋盘格中是否是给定的元素
public boolean isElement( char ch, int x, int y ) {
if( x < 0 )
return false;
if( x >= iCols )
return false;
if( y < 0 )
return false;
if( y >= iRows )
return false;
return( chBoard[x][y] == ch );
}
//获取指定的某个棋盘格中的元素
public char getElement( int x, int y ) {
if( x < 0 )
return '?';
if( x >= iCols )
return '?';
if( y < 0 )
return '?';
if( y >= iRows )
return '?';
return chBoard[x][y];
}
//设置指定的某个棋盘格中的元素
public void setElement( char ch, int x, int y ) {
if( ch == '?' )
return;
if( x < 0 )
return;
if( x >= iCols )
return;
if( y < 0 )
return;
if( y >= iRows )
return;
chBoard[x][y] = ch;
}
//判断给定的位置是否在敌人的攻击范围内
public boolean near( char ch, int x, int y ) {
return isElement( ch, x-1, y )||isElement( ch, x, y-1 )
||isElement( ch, x+1, y )||isElement( ch, x, y+1 );
}
//判断给定的位置是否可以向某个方向移动2步
public boolean near2( char ch, int x, int y ) {
return ( isElement( ch, x-1, y )&&isElement( ch, x-2, y ) )
||( isElement( ch, x, y-1 )&&isElement( ch, x, y-2 ) )
||( isElement( ch, x+1, y )&&isElement( ch, x+2, y ) )
||( isElement( ch, x, y+1 )&&isElement( ch, x, y+2 ) );
}
}