📄 gamemodel.java
字号:
}
}
//右下
if ( (x + 1) < xx && (y + 1) < yy) {
if (blockArray[x + 1][y + 1].isOpened() == false) {
recursionOpen( (x + 1), (y + 1));
}
}
}
// public void leftPress
public void mark(int x, int y) {
BlockModel bm = blockArray[x][y];
if (!bm.isOpened()) {
int currentmark = bm.getMark();
if (currentmark == BlockModel.UnopenMark) { //如果没有标记
bm.setMark(BlockModel.FlagMark); //标记为旗子
mineleaved--;
mineleaveListener.mineLeaveCountChange(mineleaved);
if (bm.isMine()) {
realmineleaved--;
}
else {
wrongOptionSet.add(new Integer(y * xx + x));
}
//----
//System.out.println(realmineleaved+" "+mineleaved);
if (realmineleaved == 0 && mineleaved == 0) {
timer.stop();
gameTimeListener.gameTimeEnd(0);
//通知游戏成功结束
}
}
else
if (currentmark == BlockModel.FlagMark) { //如果已经是旗子
if (gameConfigure.isUseMark() == true) { //游戏使用标记
bm.setMark(BlockModel.QuestionMark); //标为问号
}
else {
bm.setMark(BlockModel.UnopenMark);
}
mineleaved++;
mineleaveListener.mineLeaveCountChange(mineleaved);
if (bm.isMine()) {
realmineleaved++;
}
else {
wrongOptionSet.remove(new Integer(y * xx + x));
}
if (realmineleaved == 0 && mineleaved == 0) {
timer.stop();
gameTimeListener.gameTimeEnd(0);
//通知游戏成功结束
}
}
else
if (currentmark == BlockModel.QuestionMark) {
bm.setMark(BlockModel.UnopenMark);
}
}
}
public void numberCheckOpen(int x, int y) {
BlockModel bm = blockArray[x][y];
if (bm.isOpened() && !bm.isMine()) {
int number = bm.getNumber();
int aroundflag = getAroundFlag(x, y);
if (number == aroundflag) {
openAroundblock(x, y);
}
}
}
private void openAroundblock(int x, int y) {
BlockModel bm = null;
//左上
if ( (x - 1) >= 0 && (y - 1) >= 0) {
bm = blockArray[x - 1][y - 1];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x - 1, y - 1);
}
}
}
//上
if ( (y - 1) >= 0) {
bm = blockArray[x][y - 1];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x, y - 1);
}
}
}
//右上
if ( (x + 1) < xx && (y - 1) >= 0) {
bm = blockArray[x + 1][y - 1];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x + 1, y - 1);
}
}
}
//左
if ( (x - 1) >= 0) {
bm = blockArray[x - 1][y];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x - 1, y);
}
}
}
//右
if ( (x + 1) < xx) {
bm = blockArray[x + 1][y];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x + 1, y);
}
}
}
//左下
if ( (x - 1) >= 0 && (y + 1) < yy) {
bm = blockArray[x - 1][y + 1];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x - 1, y + 1);
}
}
}
//下
if ( (y + 1) < yy) {
bm = blockArray[x][y + 1];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x, y + 1);
}
}
}
//右下
if ( (x + 1) < xx && (y + 1) < yy) {
bm = blockArray[x + 1][y + 1];
if (bm.isOpened() == false) {
if (! (bm.getMark() == 10 && bm.isMine())) {
open(x + 1, y + 1);
}
}
}
}
private int getAroundFlag(int x, int y) {
int count = 0;
if ( (x - 1) >= 0 && (y - 1) >= 0) {
if (blockArray[x - 1][y - 1].isOpened() == false) {
if (blockArray[x - 1][y - 1].getMark() == 10) {
count++;
}
}
}
//上
if ( (y - 1) >= 0) {
if (blockArray[x][y - 1].isOpened() == false) {
if (blockArray[x][y - 1].getMark() == 10) {
count++;
}
}
}
//右上
if ( (x + 1) < xx && (y - 1) >= 0) {
if (blockArray[x + 1][y - 1].isOpened() == false) {
if (blockArray[x + 1][y - 1].getMark() == 10) {
count++;
}
}
}
//左
if ( (x - 1) >= 0) {
if (blockArray[x - 1][y].isOpened() == false) {
if (blockArray[x - 1][y].getMark() == 10) {
count++;
}
}
}
//右
if ( (x + 1) < xx) {
if (blockArray[x + 1][y].isOpened() == false) {
if (blockArray[x + 1][y].getMark() == 10) {
count++;
}
}
}
//左下
if ( (x - 1) >= 0 && (y + 1) < yy) {
if (blockArray[x - 1][y + 1].isOpened() == false) {
if (blockArray[x - 1][y + 1].getMark() == 10) {
count++;
}
}
}
//下
if ( (y + 1) < yy) {
if (blockArray[x][y + 1].isOpened() == false) {
if (blockArray[x][y + 1].getMark() == 10) {
count++;
}
}
}
//右下
if ( (x + 1) < xx && (y + 1) < yy) {
if (blockArray[x + 1][y + 1].isOpened() == false) {
if (blockArray[x + 1][y + 1].getMark() == 10) {
count++;
}
}
}
return count;
}
public BlockModel[][] getBlocks() {
return blockArray;
}
public int getMineleaved() {
return mineleaved;
}
public void setGameTimeListener(TimeListener listener) {
this.gameTimeListener = listener;
}
public void setMineLeaveCountListener(MineLeaveCountListener listener) {
this.mineleaveListener = listener;
}
public int getGametime() {
return gametime;
}
private Set getPositions(int positionCount, int maxPositionNumber,
int reserved) {
Random rand = new Random();
Set set = new HashSet();
while (set.size() != positionCount) {
int t = rand.nextInt(maxPositionNumber);
if (t == reserved) {
continue;
}
set.add(new Integer(t));
}
return set;
}
/**
* 实现接口
*/
public void exitGame() {
gameConfigure.savetoconfigure();
System.exit(0);
}
public void setGameLevel(int level) {
gameConfigure.setLevel(level);
}
public void setUseMark(boolean isusemark) {
gameConfigure.setUseMark(isusemark);
}
public void startGame() {
if(timer!=null) timer.stop();
initlistener.gameinit();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -