📄 duiduipeng.java~1~
字号:
delete();
back = false;
}
if (back == true) {
comeback();
}
//check();
}
}
public boolean change() { //交换
if (frist && second) {
Icon temp;
temp = jButton[fristx][fristy].getIcon();
jButton[fristx][fristy].setIcon(jButton[secondx][secondy].
getIcon());
jButton[secondx][secondy].setIcon(temp);
jButton[fristx][fristy].setBackground(Color.white);
frist = false;
second = false;
return true;
} else {
return false;
}
}
public void comeback() { //返回原来的状态
Icon temp;
temp = jButton[fristx][fristy].getIcon();
jButton[fristx][fristy].setIcon(jButton[secondx][secondy].
getIcon());
jButton[secondx][secondy].setIcon(temp);
}
public int getIconID(int a, int b) { //获得icon的序号
String s = jButton[a][b].getIcon().toString();
if (s.equals("images/1.gif")) {
return 1;
} else if (s.equals("images/2.gif")) {
return 2;
} else if (s.equals("images/3.gif")) {
return 3;
} else if (s.equals("images/4.gif")) {
return 4;
} else if (s.equals("images/5.gif")) {
return 5;
} else if (s.equals("images/6.gif")) {
return 6;
} else {
return 7;
}
}
public boolean waitdel() { //算法的核心,判断当前有没有可以消掉的
int now; //行或列,用一个int del[][]存储,返回true;
for (int i = 0; i < 7; i++) { //0-6
for (int j = 0; j < 7; j++) { //0-6
now = getIconID(i, j); //now 1-7
if (i > 0 && i < 6 && now == getIconID(i - 1, j) &&
now == getIconID(i + 1, j)) { //先分析横向 1-5
insertDel(i - 1, j);
insertDel(i, j);
insertDel(i + 1, j);
int t = i + 1; //t.max=6;
while (t < 6 && now == getIconID(t + 1, j)) {
insertDel(t + 1, j);
t++;
}
}
if (j > 0 && j < 6 && now == getIconID(i, j - 1) &&
now == getIconID(i, j + 1)) { //再分析纵向 1-5
insertDel(i, j - 1);
insertDel(i, j);
insertDel(i, j + 1);
int t = j + 1; //t.max=6;
while (t < 6 && now == getIconID(i, t + 1)) {
insertDel(i, t + 1);
t++;
}
}
}
}
if (delnumber > 2) {
mark += delnumber * 5;
jTextField1.setText(String.valueOf(mark));
return true;
} else {
return false;
}
}
public void insertDel(int a, int b) {
if (del[a][b] == 1) {
del[a][b] = 0;
delnumber++;
doblat.setblat(this.getIconID(a, b));
}
}
public void delete() { //删除,并重整界面
for (int j = 0; j < 7; j++) { //对每一列处理
for (int i = 6; i > -1; i--) {
if (del[i][j] == 0) {
for (int t = i - 1; t > -2; t--) {
if (t == -1) { //新建icon
jButton[i][j].setIcon(icon[r.nextInt(7)]);
del[i][j] = 1;
delnumber--;
break;
}
if (del[t][j] == 1) { //覆盖
jButton[i][j].setIcon(jButton[t][j].getIcon());
del[i][j] = 1;
del[t][j] = 0;
break;
}
}
}
}
}
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
del[i][j] = 1;
}
}
}
public void overgame() { //时间到,结束游戏
soundthread[i - 1].stopthread();
URL file = getClass().getResource("end.wav");
AudioClip s = java.applet.Applet.newAudioClip(file);
s.play();
int i = JOptionPane.showConfirmDialog(null,
"您的得分是:" + String.valueOf(mark) +
"分\n您想再玩一把吗?", "游戏结束",
JOptionPane.YES_NO_OPTION);
s.stop();
if (i == 0) { // yes
start();
} else { //no
System.exit(0);
}
}
/*public boolean check() {
boolean shuffle = true;
for (int i = 0; i < 7; i++) { //横向
for (int j = 0; j < 6; j++) {
frist = true;
second = true;
fristx = i;
fristy = j;
secondx = i;
secondy = j + 1;
change();
if (waitdel()) {
comeback();
shuffle = false;
}
}
}
for (int j = 0; j < 7; j++) {
for (int i = 0; i < 6; i++) {
frist = true;
second = true;
fristx = i;
fristy = j;
secondx = i + 1;
secondy = j;
change();
if (waitdel()) {
comeback();
shuffle = false;
System.out.print("111111111111");
}
}
}
if (shuffle) {
shuffle();
System.out.print("comehere......");
}
return shuffle;
}*/
}
class duiduipeng_jButton51_actionAdapter implements ActionListener {
private duiduipeng adaptee;
duiduipeng_jButton51_actionAdapter(duiduipeng adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.shuffle();
}
}
class duiduipeng_jButton50_actionAdapter implements ActionListener {
private duiduipeng adaptee;
duiduipeng_jButton50_actionAdapter(duiduipeng adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.start();
}
}
class duiduipeng_jMenuFileExit_ActionAdapter implements ActionListener {
duiduipeng adaptee;
duiduipeng_jMenuFileExit_ActionAdapter(duiduipeng adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent actionEvent) {
adaptee.jMenuFileExit_actionPerformed(actionEvent);
}
}
class duiduipeng_MouseAdapter extends MouseAdapter {
int i, j;
duiduipeng f;
public duiduipeng_MouseAdapter(int a, int b, duiduipeng t) {
i = a;
j = b;
f = t;
}
public void mouseClicked(MouseEvent e) {
try {
f.clickButton(i, j);
} catch (Exception error) {
error.printStackTrace();
}
}
}
class TimeThread extends Thread {
duiduipeng f;
boolean restart = true;
public TimeThread(duiduipeng t) {
f = t;
}
public void run() {
try {
restart = false;
int time = 1000;
f.jTextField2.setText(String.valueOf(time) + "秒");
f.jButton50.setEnabled(false);
f.jButton51.setEnabled(false);
f.jMenuItem2.setEnabled(false);
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
f.jButton[i][j].setEnabled(false);
}
}
Thread.sleep(3000);
f.jButton51.setEnabled(true);
f.jMenuItem2.setEnabled(true);
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
f.jButton[i][j].setEnabled(true);
}
}
f.jButton50.setEnabled(true);
while (restart == false && time > 0) {
time--;
f.jTextField2.setText(String.valueOf(time) + "秒");
Thread.sleep(1000);
}
if (time == 0) {
f.overgame();
}
} catch (Exception e) {}
}
public void stopthread() {
restart = true;
}
}
class SoundThread extends Thread {
URL file;
AudioClip s;
public SoundThread() {
}
public void run() {
try {
file = getClass().getResource("sound/ready.wav");
s = java.applet.Applet.newAudioClip(file);
s.play();
Thread.sleep(2000);
file = getClass().getResource("sound/start.wav");
s = java.applet.Applet.newAudioClip(file);
s.play();
file = getClass().getResource("sound/background.mid");
s = java.applet.Applet.newAudioClip(file);
s.loop();
//sequencer = MidiSystem.getSequencer();
//sequencer.open();
//myFile = new File("sound/background.mid");
//myseq = MidiSystem.getSequence(myFile);
//sequencer.setSequence(myseq);
//sequencer.start();
} catch (Exception e) {}
}
public void stopthread() {
try {
s.stop();
} catch (Exception e) {}
//sequencer.stop();
//sequencer.close();
}
}
class Doblat { //声效
int blat = 0;
URL file;
AudioClip s;
public void setblat(int a) {
if (blat == 0) {
blat = a;
}
}
public void play() {
if (blat != 0) {
file = getClass().getResource("sound/"+blat + ".wav");
s = java.applet.Applet.newAudioClip(file);
s.play();
blat = 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -