package com.edu.game;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
public class Saolei extends JFrame {
private JPanel contentPane;//全域面板
private JButton facebtn;//頂層標題
private JLabel lbtitle;//笑臉按鈕
private boolean start = true;//表示游戲是否開始
private JLabel leiNum;//顯示剩余雷個數的標簽
private int num = 5;//選中的雷的個數---總共五個
private int blNum = 0 ;//標識正確的雷的個數
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Saolei frame = new Saolei();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Saolei() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 650);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
init();// 對表單進行初始化
}
public void init() {
leiNum = new JLabel("");
leiNum. setFont(new Font("宋體",Font.BOLD, 18));
leiNum. setBounds(33,34,200,15);
leiNum. setText( "剩余雷數: "+num) ;
contentPane . add(leiNum);
facebtn = new JButton("");
facebtn.setBounds(284, 13, 40, 40);
contentPane.add(facebtn);
facebtn.setIcon(new ImageIcon("images/face0.png"));
facebtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 判斷---游戲狀態---如果失敗的時候
if (!start) {
start = true;
// 改變圖片
facebtn.setIcon(new ImageIcon("images/face0.png"));
contentPane.removeAll();// 將表單里的所有的內容全部移除掉
contentPane.repaint();// 重新繪制
// 重新開始
init();
}
}
});
contentPane.add(facebtn);
lbtitle = new JLabel("\u6E38\u620F\u5F00\u59CB");
lbtitle.setFont(new Font("宋體", Font.PLAIN, 19));
lbtitle.setBounds(357, 25, 132, 28);
// contentPane.add(lbtitle.setBorder(null)
contentPane.add(lbtitle);
addlei();
}
public void addlei() {
System.out.println("addlei....");
int[][] map = Leiqu.initlei();
// TODO 自動生成的方法存根
// 回圈添加雷----5行10列 i,j控制雷塊的個數 x,y軸坐標
int y = 70;
int i, j;
for (i = 0; i < 10; i++) {
int x = 50;
for (j = 0; j < 10; j++) {
// 添加雷區--按鈕
JButton lei = new JButton("");
// 為按鈕設定圖示
lei.setIcon(new ImageIcon("images/flag0.jpg"));
// 給按鈕設定位置大小
lei.setBounds(x, y, 50, 50);
contentPane.add(lei);
lei.setToolTipText(i + "-" + j);
// lei.setBorder(null);
// 滑鼠監聽事件
// 左鍵 判斷二維陣列的陣列---9就爆炸 不是9就正常打開
lei.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自動生成的方法存根
if(!start) {
return;
}
System.out.println("左鍵點擊");
//判斷--二維陣列的該位置是什么數字,如果是9--爆炸--如果不是9,正常打開
String text = lei.getToolTipText();
// 借助text 2-3和二維陣列系結
String[] split = text.split("-");
int x = Integer.parseInt(split[0]);
int y = Integer.parseInt(split[1]);
System.out.println("x" + x);
System.out.println("y" + y);
if (map[x][y] == 9) {
lei.setIcon(new ImageIcon("images/bomb0.jpg"));
facebtn.setIcon(new ImageIcon("images/face2.png"));
lbtitle.setText("游戲結束");
start = false;
} else {
lei.setIcon(new ImageIcon("images/" + map[x][y] + ".jpg"));
}
}
});
// 右鍵
lei.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(!start) {
return;
}
//左鍵和右鍵 單機和雙擊
if (e.getButton() == MouseEvent.BUTTON3) {//右鍵
if(num==0) {//說明雷都標完了
if(blNum==5) {
facebtn.setIcon(new ImageIcon("images/face1.png"));
lbtitle.setText("win");
return;
}
lbtitle.setText("error");
return;
}
num--;
leiNum.setText("剩余雷數:"+num);
lei.setIcon(new ImageIcon("images/flag1.jpg"));
String text = lei.getToolTipText();
//借助text 2-3和二維陣列進行系結
String[] split = text. split("-");
int x = Integer.parseInt(split[0]);
int y = Integer.parseInt(split[1]);
if(map[x][y]==9) {
// 標雷位置正確
blNum++;
}
}
}
});
x += 50;
}
y += 50;
}
}
}
uj5u.com熱心網友回復:
急急急,計時器,空白彈開的來個大佬幫幫忙
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/44420.html
標籤:Eclipse
上一篇:eclipse C++ CDT 版本。編譯C++專案后,錯誤輸出在Console 視窗中,如何雙擊打開錯誤檔案,定位錯誤行?
下一篇:提問
