標題:
踩地雷
[打印本頁]
作者:
buy
時間:
2010-11-13 17:19
標題:
踩地雷
boolean BombArr[][];
int CountBombArr[][];
void showBombArr()
{
}
void showCountBombArr()
{
}
複製代碼
作者:
buy
時間:
2010-11-13 17:55
本帖最後由 buy 於 2010-11-14 20:13 編輯
boolean BombArr[][];
int CountBombArr[][];
//開始遊戲
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
BombArr = new boolean [6][6];
CountBombArr = new int [6][6];
BombArr[3][1] = true;
BombArr[1][2] = true;
countAllBombArr();
showBombArr();
showCountBombArr();
//System.out.print(CountBombArr[3][3]);
}
void showBombArr()
{
for(int i=1;i<BombArr.length-1;i++)
{
for(int j=1;j<BombArr.length-1;j++)
{
System.out.print(String.valueOf(BombArr[i][j]) + "\t");
}
System.out.print('\n');
}
}
void showCountBombArr()
{
for(int i=1;i<BombArr.length-1;i++)
{
for(int j=1;j<BombArr.length-1;j++)
{
System.out.print(String.valueOf(CountBombArr[i][j]) + "\t");
}
System.out.print('\n');
}
}
void countBombArr(int x,int y)
{
int count = 0;
if(BombArr[x-1][y-1] == true)
{
count ++;
}else{ }
if(BombArr[x][y-1] == true)
{
count ++;
}else{ }
if(BombArr[x+1][y-1] == true)
{
count ++;
}else{ }
if(BombArr[x-1][y] == true)
{
count ++;
}else{ }
if(BombArr[x][y] == true)
{
count ++;
}else{ }
if(BombArr[x+1][y] == true)
{
count ++;
}else{ }
if(BombArr[x-1][y+1] == true)
{
count ++;
}else{ }
if(BombArr[x][y+1] == true)
{
count ++;
}else{ }
if(BombArr[x+1][y+1] == true)
{
count ++;
}else{ }
CountBombArr[x][y] = count;
}
複製代碼
作者:
buy
時間:
2010-11-14 21:03
boolean BombArr[][];
int CountBombArr[][];
javax.swing.JButton ButtonArr[][];
//開始遊戲
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
initialButtonArr();// 初始化按鈕
//實體化儲存炸彈的陣列,以及實體化儲存炸彈數目的陣列。
BombArr = new boolean [6][6];
CountBombArr = new int [6][6];
//放炸彈-測試用
BombArr[3][1] = true;
BombArr[1][2] = true;
//計算所有格子的炸彈數目
countAllBombArr();
//-Drbug用- 顯示目前炸彈陣列 與 炸彈數目陣列
showBombArr();
showCountBombArr();
ButtonArr[0][0].setText("0");
}
void initialButtonArr()
{
//...要寫的部分
}
void showBombArr()
{
for(int i=1;i<BombArr.length-1;i++)
{
for(int j=1;j<BombArr.length-1;j++)
{
System.out.print(String.valueOf(BombArr[i][j]) + "\t");
}
System.out.print('\n');
}
}
void showCountBombArr()
{
for(int i=1;i<BombArr.length-1;i++)
{
for(int j=1;j<BombArr.length-1;j++)
{
System.out.print(String.valueOf(CountBombArr[i][j]) + "\t");
}
System.out.print('\n');
}
}
void countBombArr(int x,int y)
{
int count = 0;
if(BombArr[x-1][y-1] == true)
{
count ++;
}else{ }
if(BombArr[x][y-1] == true)
{
count ++;
}else{ }
if(BombArr[x+1][y-1] == true)
{
count ++;
}else{ }
if(BombArr[x-1][y] == true)
{
count ++;
}else{ }
if(BombArr[x][y] == true)
{
count ++;
}else{ }
if(BombArr[x+1][y] == true)
{
count ++;
}else{ }
if(BombArr[x-1][y+1] == true)
{
count ++;
}else{ }
if(BombArr[x][y+1] == true)
{
count ++;
}else{ }
if(BombArr[x+1][y+1] == true)
{
count ++;
}else{ }
CountBombArr[x][y] = count;
}
void countAllBombArr()
{
for(int i=1;i<BombArr.length-1;i++)
{
for(int j=1;j<BombArr.length-1;j++)
{
countBombArr(i,j);
}
}
}
複製代碼
作者:
buy
時間:
2010-11-20 14:29
void clickEvent(int x,int y)
{
if(BombArr[x+1][y+1] == true)
{
System.out.println("遊戲結束");
}
else{
ButtonArr[x][y].setText("-");
ButtonArr[x][y].setEnabled(false);
showNearBombnumber(x, y);
}
}
void showNearBombnumber(int i,int j)
{
int I = i+1;
int J = j+1;
if(i-1 >= 0 && j-1 >=0) //左上方
{
ButtonArr[i-1][j-1].setText(String.valueOf(CountBombArr[I-1][J-1]));
}
//...
}
複製代碼
作者:
buy
時間:
2010-11-20 16:28
void showNearBombnumber(int i,int j)
{
int I = i+1;
int J = j+1;
if(!ButtonArr[i][j].getText().equals("-"))
{
//遞迴終止條件
}
else{
if(i-1 >= 0 && j-1 >=0) //左上方
{
if(CountBombArr[I-1][J-1] == 0)
{
if (ButtonArr[i-1][j-1].isEnabled() == true)
{
ButtonArr[i-1][j-1].setText("-");
ButtonArr[i-1][j-1].setEnabled(false);
showNearBombnumber(i-1, j-1);
}
}
else
{
if(ButtonArr[i-1][j-1].isEnabled() == true)
{
ButtonArr[i-1][j-1].setText(String.valueOf(CountBombArr[I-1][J-1]));
}
}
}
複製代碼
作者:
buy
時間:
2010-11-21 19:28
//重新設定按鈕 與 清空炸彈陣列
void ReGame()
{
for(int i =0; i< ButtonArr.length; i++)
{
for(int j =0; j< ButtonArr.length; j++)
{
ButtonArr[i][j].setText("x");
ButtonArr[i][j].setEnabled(true);
}
}
for(int i =0; i< BombArr.length; i++)
{
for(int j =0; j< BombArr.length; j++)
{
BombArr[i][j] = false;
}
}
}
//設定隨機炸彈方法
int[] RandomBomb()
{
int rdindex = 0,temp = 0;double rd; //打亂陣列用
int []lottery = new int[maxBomb*maxBomb]; //長度為5*5 = 25
for(int i = 0; i < maxBomb*maxBomb ; i++)
lottery[i] = i;
//隨機交換陣列值
for(int i=0 ; i<10 ; i++)
{
rd = Math.random()*10;
rdindex = (int)rd; //隨機取位置0~9
//兩個位置的值交換 lottery[i] lottery[?]
temp = lottery[i];
lottery[i] = lottery[rdindex];
lottery[rdindex] = temp;
}
return lottery;
}
void clickEvent(int x,int y)
{
if(BombArr[x+1][y+1] == true)
{
ButtonArr[x][y].setText("");
Frame frame = new Frame();
/*JOptionPane.showMessageDialog(frame,
"你踩到炸彈了,遊戲結束!",
"警告訊息",JOptionPane.WARNING_MESSAGE);*/
int i = JOptionPane.showConfirmDialog(frame,"你踩到炸彈了,遊戲結束!",
"警告訊息",JOptionPane.OK_CANCEL_OPTION);
if(i == 0)
{
System.out.println("你按下了確定");
}
else if(i == 2)
{
System.out.println("你按下了取消");
}
else{}
ReGame();
//System.out.println("遊戲結束");
}
else{
ButtonArr[x][y].setText("-");
ButtonArr[x][y].setEnabled(false);
showNearBombnumber(x, y);
}
}
複製代碼
作者:
buy
時間:
2010-11-21 20:48
void showNearBombnumber(int i,int j)
{
int I = i+1;
int J = j+1;
if(!ButtonArr[i][j].getText().equals("-"))
{
//遞迴終止條件
}
else{
if(i-1 >= 0 && j-1 >=0) //左上方
{
if(CountBombArr[I-1][J-1] == 0)
{
if (ButtonArr[i-1][j-1].isEnabled() == true)
{
ButtonArr[i-1][j-1].setText("-");
ButtonArr[i-1][j-1].setEnabled(false);
showNearBombnumber(i-1, j-1);
}
}
else
{
if(ButtonArr[i-1][j-1].isEnabled() == true && BombArr[I-1][J-1] == false)
{
ButtonArr[i-1][j-1].setText(String.valueOf(CountBombArr[I-1][J-1]));
}
}
}
boolean IsWin()
{
int countBomb=0,countNow=0;
for (int i = 0;i < ButtonArr.length ; i++)
{
for (int j = 0;j < ButtonArr.length ; j++)
{
if(ButtonArr[i][j].isEnabled() == true)
countNow++;
}
}
for (int i = 0;i < ButtonArr.length ; i++)
{
for (int j = 0;j < ButtonArr.length ; j++)
{
if(BombArr[i+1][j+1] == true)
countBomb++;
}
}
return (countBomb == countNow)?true:false;
}
void clickEvent(int x,int y)
{
if(BombArr[x+1][y+1] == true)
{
ButtonArr[x][y].setText("");
Frame frame = new Frame();
int i = JOptionPane.showConfirmDialog(frame,"你踩到炸彈了,[確定]重新遊戲,[取消]關閉遊戲",
"警告訊息",JOptionPane.OK_CANCEL_OPTION);
if(i == 0)
System.out.println("你按下了確定");
else if(i == 2)
System.exit(0);
else{}
ReGame();
//System.out.println("遊戲結束");
}
else{
ButtonArr[x][y].setText("-");
ButtonArr[x][y].setEnabled(false);
if(IsWin())
{
Frame frame = new Frame();
JOptionPane.showConfirmDialog(frame,"你贏了遊戲,[確定]重新遊戲,[取消]關閉遊戲",
"警告訊息",JOptionPane.OK_CANCEL_OPTION);
}
else
showNearBombnumber(x, y);
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2