package 弹球;
import javax.swing.JOptionPane;
/**
* 线程类
*
* @author Administrator
*
*/
public class MyThread extends Thread {
private int width = 20, height = 20;
private int x, y;
private java.awt.Graphics g;
private GameUI UI;
private boolean isexist = true;
private MyListener listener;
private int speed;
private int x1 = 12, y1 = 12;
private long start, end;
private long last_time;
private int response;
private boolean isFinish = true;
private boolean isPause = true;
private java.util.ArrayList<MyThread> list;
private float value = 320;
private java.awt.Color color = java.awt.Color.blue;
/*
* 重写构造器
*/
public MyThread(java.awt.Graphics g, MyListener listener, GameUI UI, int x,
int y, int speed) {
this.g = g;
this.UI = UI;
this.x = x;
this.y = y;
this.speed = speed;
this.listener = listener;
}
/*
* (non-Javadoc)重写run的方法
*
* @see java.lang.Thread#run()
*/
public void run() {
drawOval();
}
/**
* 创建线程的方法
*/
public void drawOval() {
start = System.currentTimeMillis();
while (isFinish) {
while (isPause) {
synchronized(this.g){
// 画一个圆
g.setColor(java.awt.Color.black);
g.fillOval(x, y, width, height);
x += x1;
y += y1;
getColors();
g.setColor(color);
g.fillOval(x, y, width, height);
}
int x2 = listener.getX();
if (x > 580) {
x1 = -12;
}
if (x < 10) {
x1 = 12;
}
if (y < 90) {
y1 = 12;
}
if (y > 595 && x > x2 && x < x2 + 100) {
y1 = -12;
}
if (y > 630) {
if (isexist) {
isAgain();
}
stopThread();
}
try {
Thread.sleep(speed);
value -= 0.1;
} catch (Exception ef) {
ef.printStackTrace();
}
// 将前一次画的清除掉
end = System.currentTimeMillis();
last_time = 100 - (end - start) / 1000;
UI.text_field.setText(last_time + "s");
UI.pBar.setValue((int) value);
if (last_time == 0) {
list = UI.list;
for (int j = 0; j < list.size(); j++) {
// 停在线程,并且去掉最后一个圆
list.get(j).stopThread();
list.get(j).fadeOval();
}
stopThread();
showDialog();
}
}
}
}
/**
* 线程结束时消去最后一个圆的方法
*/
public void fadeOval() {
g.setColor(java.awt.Color.black);
g.fillOval(x, y, width, height);
}
/**
* 重来对话框的处理方法
*/
public void isAgain() {
isexist = false;
list = UI.list;
System.out.println(list.size());
for (int j = 0; j < list.size(); j++) {
// 停在线程,并且去掉最后一个圆
list.get(j).stopThread();
list.get(j).fadeOval();
}
Object[] options = { "是", "否" };
String command = UI.getCommand();
response = JOptionPane.showOptionDialog(null,
"哈哈,你输了!不要灰心\n坚持就是胜利,是否再来一次?", null, JOptionPane.YES_OPTION,
JOptionPane.NO_OPTION, null, options, null);
System.out.println(response);
if (response == 0) {
if (command.equals("简单") || command.equals("开始")) {
AgainThread();
if (list.size() != 0) {
// 现将原来的对象从队列中移除
list.removeAll(list);
UI.creatBall(20, 1);
}
}
if (command.equals("中等")) {
AgainThread();
if (list.size() != 0) {
list.removeAll(list);
UI.creatBall(50, 2);
}
}
if (command.equals("困难")) {
AgainThread();
if (list.size() != 0) {
list.removeAll(list);
UI.creatBall(40, 2);
}
}
}
// 如果点击关闭,则将线程对象从队列中移除
if (response == -1 || response == 1) {
list.removeAll(list);
}
}
/**
* 停止线程的方法
*/
public void stopThread() {
isFinish = false;
isPause = false;
}
/**
* 暂停线程的方法
*/
public void PauseThread() {
isPause = false;
}
/**
* 继续线程的方法
*/
public void ContinueThread() {
isPause = true;
}
/**
* 是否重来的方法
*/
public void AgainThread() {
isFinish = true;
isPause = true;
}
public void getColors() {
if (x % 2 == 0 && y % 2 == 0) {
color = java.awt.Color.green;
}
if (x % 2 == 0 && y % 2 != 0) {
color = java.awt.Color.red;
}
if (x % 2 != 0 && y % 2 != 0) {
color = java.awt.Color.orange;
}
if (x % 2 != 0 && y % 2 != 0) {
color = java.awt.Color.yellow;
}
}
public void showDialog() {
javax.swing.JOptionPane
.showInputDialog("好样的,你是真的高手,\n恭喜你坚持了100s\n请输入您的大名");
}
}
最近下载更多
qqqww11 LV2
2024年6月26日
微信网友_6979151039729664 LV2
2024年5月4日
hero97 LV1
2024年4月25日
1撒大沙发 LV1
2023年11月18日
微信网友_6531849175846912 LV1
2023年6月23日
sjxl158837 LV1
2023年6月7日
rsznb123 LV1
2023年4月29日
616525 LV1
2023年4月16日
ndsf20210588 LV1
2022年12月21日
理工铝孩 LV1
2022年12月20日
最近浏览更多
wahukkk LV1
6月22日
qqqww11 LV2
2024年6月26日
微信网友_6979151039729664 LV2
2024年5月4日
hero97 LV1
2024年4月25日
微信网友_6779138954678272
2023年12月15日
暂无贡献等级
1撒大沙发 LV1
2023年11月18日
jkjfdgbkl LV2
2023年11月1日
wangjialiang1 LV17
2023年8月23日
微信网友_6545707135012864
2023年7月3日
暂无贡献等级
lin010715
2023年7月1日
暂无贡献等级

