
import javaawtBorderLayout;
import javaawtColor;
import javaawtGridLayout;
import javaawtImage;
import javaawtToolkit;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventWindowAdapter;
import javaawteventWindowEvent;
import javanetURLClassLoader;
import javautilArrayList;
import javautilCollections;
import javaxswingAction;
import javaxswingIcon;
import javaxswingImageIcon;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJOptionPane;
import javaxswingJPanel;
/
@author zhan
N年前写的扫雷了。。有没有BUG也懒得改了。。
最少是3年前写的了。。如果我现在写肯定不这样写了。。。汗
/
public class Minesweeper extends JFrame implements ActionListener {
ArrayList<Integer> random = new ArrayList<Integer>();
LButton[] bombs = new LButton[81];
boolean finish = false;
boolean win = false;
//设置窗口
public void lanchFrame() {
thissetBounds(0, 0, 500, 500);
thisaddWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Systemexit(0);
}
});
thissetTitle("Minesweeper01");
addBombArea();
setVisible(true);
}
//显示所有炸d
public void showBombs() {
for (int i = 0; i < 10; i++) {
bombs[randomget(i)]setBackground(ColorBLACK);
}
}
//添加组件
public void addBombArea() {
JPanel bombArea = new JPanel();
bombAreasetLayout(new GridLayout(9, 9, 1, 1));
for (int i = 0; i < 81; i++) {
bombs[i] = new LButton();
bombs[i]setPosition(i);
bombs[i]addActionListener(this);
bombAreaadd(bombs[i]);
}
setBombs();
thisadd(bombArea, BorderLayoutCENTER);
}
//设置炸d的方法
public void setBombs() {
randomNo();
for (int i = 0; i < 10; i++) {
bombs[randomget(i)]setBomb();
}
}
//获胜的条件
public boolean youWIn() {
for (int i = 0; i < 10; i++) {
bombs[randomget(i)]setShow(true);
}
win = true;
for (int i = 0; i < 81; i++) {
if (!bombs[i]isShow()) {
win = false;
}
}
for (int i = 0; i < 10; i++) {
bombs[randomget(i)]setShow(false);
}
return win;
}
//取得随机数字的方法
public void randomNo() {
randomclear();
for (int i = 0; i < 81; i++) {
randomadd(new Integer(i));
}
Collectionsshuffle(random);
}
//扫雷的方法。。。。用的递归
public void sweeping(LButton checkButton) {
int[] girdNum = new int[8];
int sum = 0;
if (checkButtonisBomb()) {
finish = true;
JOptionPaneshowMessageDialog(null, "you lose", "System:",
JOptionPaneINFORMATION_MESSAGE, null);
showBombs();
} else {
if (!checkButtonisShow()) {
girdNum[0] = checkButtongetPosition() - 10;
girdNum[0] = (girdNum[0] < 0 || (girdNum[0] % 8) == 0) -1
: girdNum[0];
girdNum[1] = checkButtongetPosition() - 9;
girdNum[1] = (girdNum[1] < 0) -1 : girdNum[1];
girdNum[2] = checkButtongetPosition() - 8;
girdNum[2] = (girdNum[2] < 0 || (girdNum[2] % 9) == 0) -1
: girdNum[2];
girdNum[3] = checkButtongetPosition() - 1;
girdNum[3] = (girdNum[3] % 8 == 0) -1 : girdNum[3];
girdNum[4] = checkButtongetPosition() + 1;
girdNum[4] = (girdNum[4] % 9 == 0) -1 : girdNum[4];
girdNum[5] = checkButtongetPosition() + 8;
girdNum[5] = (girdNum[5] > 80 || (girdNum[5] % 8) == 0) -1
: girdNum[5];
girdNum[6] = checkButtongetPosition() | +9;
girdNum[6] = (girdNum[6] > 80) -1 : girdNum[6];
girdNum[7] = checkButtongetPosition() + 10;
girdNum[7] = (girdNum[7] > 80 || (girdNum[7] % 9) == 0) -1
: girdNum[7];
for (int i = 0; i < 8; i++) {
if (girdNum[i] != -1) {
if (bombs[girdNum[i]]isBomb()
&& !bombs[girdNum[i]]isShow())
sum++;
}
}
if (sum > 0) {
checkButtonsetShow(true);
checkButtonsetBackground(Colorgray);
checkButtonsetText("" + sum);
sum = 0;
} else if (sum == 0) {
checkButtonsetShow(true);
checkButtonsetBackground(Colorgray);
for (int i = 0; i < 8; i++) {
if (girdNum[i] != -1 && !bombs[girdNum[i]]isShow()) {
sweeping(bombs[girdNum[i]]);
}
}
}
}
if (youWIn()) {
JOptionPaneshowMessageDialog(null, "You win!!", "System: ",
JOptionPaneINFORMATION_MESSAGE, null);
showBombs();
finish = true;
}
}
}
public static void main(String[] args) {
Minesweeper myMinesweeper = new Minesweeper();
myMinesweeperlanchFrame();
}
public void actionPerformed(ActionEvent e) {
LButton a = (LButton) (egetSource());
if (!finish) {
sweeping(a);
}
}
//自定义的Jbutton用于更好的显示扫雷界面
public class LButton extends JButton {
private int position;
private boolean bomb;
private boolean show;
public LButton() {
super();
}
public LButton(Action a) {
super(a);
}
public LButton(Icon icon) {
super(icon);
}
public LButton(String text, Icon icon) {
super(text, icon);
}
public LButton(String text) {
super(text);
}
public boolean isShow() {
return show;
}
public void setShow(boolean show) {
thisshow = show;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
thisposition = position;
}
public boolean isBomb() {
return bomb;
}
public void setBomb() {
thisbomb = true;
}
}
}
以上就是关于怎样用Java语言在Eclipse中写个和windows自带的那样的“扫雷”游戏,一模一样的全部的内容,包括:怎样用Java语言在Eclipse中写个和windows自带的那样的“扫雷”游戏,一模一样的、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)