📄 linkgame.java
字号:
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.ScrollPaneConstants;
import javax.swing.ButtonGroup;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;
import javax.swing.Icon;
import javax.swing.JScrollPane;
import javax.swing.ImageIcon;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.lang.Math;
import sun.audio.*;
import java.io.*;
import java.awt.*;
import java.net.*;
import javax.swing.JProgressBar;
class BackGroundPane extends JPanel {
private ImageIcon imageIcon;
public ImageIcon getImageIcon() {
return imageIcon;
}
public void setImageIcon(ImageIcon imageIcon) {//设置图片
this.imageIcon = imageIcon;
}
public BackGroundPane() {
super();
//this.setOpaque(false);
}
protected void paintChildren(Graphics g) {//重绘JPanel下的Components
super.paintChildren(g);
for(int i =0;i<this.getComponents().length;i++){
this.getComponent(i).repaint();
}
g.dispose();
}
protected void paintComponent(Graphics g) {
Graphics2D g2D = (Graphics2D)g;
super.paintComponent(g2D);
if(imageIcon!=null){//绘制背景
g2D.drawImage(imageIcon.getImage(), 0, 0,this.getWidth(),this.getHeight(),this);
}
g2D.dispose();
}
}
public class LinkGame extends JFrame{
private int fwidth,fheight;
private JMenuItem startItem,pauseItem,exitItem;
private JRadioButtonMenuItem DefaultItem,QItem,viewItem,onItem,offItem,
easyItem,normalItem,hardItem;
private JButton[] jButton;
private int[] a;
private int[][] b;
private int mk=0;
private JButton startButton,pauseButton,exitButton,reSetButton;
private BackGroundPane jFramePane,jpcenter;
ImageIcon[] image;
MonitorButton mb;
int level=37;
public JProgressBar progress= new JProgressBar(1,100);
BackMusicThread bmt;
JPanel splash = new JPanel();
public AudioStream as;
public void initGame(){
mb=new MonitorButton();
jButton=new JButton[150];
a=new int[150];
for(int i=0;i<(level*4);i++){
a[i]=(i%level)+1;
}
for(int i=level*4;i<150;i++){
a[i]=0;
}
for(int i=0;i<1000;i++){
int b=(int)(Math.random()*150);
int index;
index=a[0];
a[0]=a[b];
a[b]=index;
}
image=new ImageIcon[37];
for(int i=0;i<37;i++){
switch(i){
case 0:image[i]=new ImageIcon("01.jpg");break;
case 1:image[i]=new ImageIcon("02.jpg");break;
case 2:image[i]=new ImageIcon("03.jpg");break;
case 3:image[i]=new ImageIcon("04.jpg");break;
case 4:image[i]=new ImageIcon("05.jpg");break;
case 5:image[i]=new ImageIcon("06.jpg");break;
case 6:image[i]=new ImageIcon("07.jpg");break;
case 7:image[i]=new ImageIcon("08.jpg");break;
case 8:image[i]=new ImageIcon("09.jpg");break;
case 9:image[i]=new ImageIcon("10.jpg");break;
case 10:image[i]=new ImageIcon("11.jpg");break;
case 11:image[i]=new ImageIcon("12.jpg");break;
case 12:image[i]=new ImageIcon("13.jpg");break;
case 13:image[i]=new ImageIcon("14.jpg");break;
case 14:image[i]=new ImageIcon("15.jpg");break;
case 15:image[i]=new ImageIcon("16.jpg");break;
case 16:image[i]=new ImageIcon("17.jpg");break;
case 17:image[i]=new ImageIcon("18.jpg");break;
case 18:image[i]=new ImageIcon("19.jpg");break;
case 19:image[i]=new ImageIcon("20.jpg");break;
case 20:image[i]=new ImageIcon("21.jpg");break;
case 21:image[i]=new ImageIcon("22.jpg");break;
case 22:image[i]=new ImageIcon("23.jpg");break;
case 23:image[i]=new ImageIcon("24.jpg");break;
case 24:image[i]=new ImageIcon("25.jpg");break;
case 25:image[i]=new ImageIcon("26.jpg");break;
case 26:image[i]=new ImageIcon("27.jpg");break;
case 27:image[i]=new ImageIcon("28.jpg");break;
case 28:image[i]=new ImageIcon("29.jpg");break;
case 29:image[i]=new ImageIcon("30.jpg");break;
case 30:image[i]=new ImageIcon("31.jpg");break;
case 31:image[i]=new ImageIcon("32.jpg");break;
case 32:image[i]=new ImageIcon("33.jpg");break;
case 33:image[i]=new ImageIcon("34.jpg");break;
case 34:image[i]=new ImageIcon("35.jpg");break;
case 35:image[i]=new ImageIcon("36.jpg");break;
case 36:image[i]=new ImageIcon("37.jpg");break;
}
}
for(int i=0;i<150;i++){
if(a[i]==0){
jButton[i]=new JButton();jButton[i].setVisible(false);jpcenter.add(jButton[i]);jButton[i].addActionListener(mb);
}
else
{jButton[i]=new JButton(image[a[i]-1]);jpcenter.add(jButton[i]);jButton[i].addActionListener(mb);
}
}
b=new int[10][15];
int m=0;
for(int i=0;i<10;i++){
for (int j=0;j<15;j++){
b[i][j]=a[m];
m++;
}
}
}
public void reSet(){
int num=0;
for(int i=0;i<10;i++){
for(int j=0;j<15;j++){
a[num]=b[i][j];
num++;
}
}
for(int i=0;i<1000;i++){
int b=(int)(Math.random()*150);
int index;
index=a[0];
a[0]=a[b];
a[b]=index;
}
for(int i=0;i<150;i++){
if(a[i]==0){
jButton[i].setVisible(false);
}
else{
jButton[i].setIcon(image[a[i]-1]);jButton[i].setVisible(true);
}
}
int nu=0;
for(int i=0;i<10;i++){
for(int j=0;j<15;j++){
b[i][j]=a[nu];
nu++;
}
}
}
public void backMusic()
{
try
{
FileInputStream fileau=new
FileInputStream("truelove.wav");
as=new AudioStream(fileau);
AudioPlayer.player.start(as);
}
catch (Exception e) {}
}
public void selectMusic()
{
try
{
FileInputStream fileau=new
FileInputStream("select.wav");
AudioStream ab=new AudioStream(fileau);
AudioPlayer.player.start(ab);
}
catch (Exception e) {}
}
public void cancleMusic()
{
try
{
FileInputStream fileau=new
FileInputStream("cancle.wav");
AudioStream ab=new AudioStream(fileau);
AudioPlayer.player.start(ab);
}
catch (Exception e) {}
}
public void resetMusic()
{
try
{
FileInputStream fileau=new
FileInputStream("reset.wav");
AudioStream ab=new AudioStream(fileau);
AudioPlayer.player.start(ab);
}
catch (Exception e) {}
}
public void winMusic()
{
try
{
FileInputStream fileau=new
FileInputStream("win.MID");
AudioStream ab=new AudioStream(fileau);
AudioPlayer.player.start(ab);
}
catch (Exception e) {}
}
public void gameOver(){
AudioPlayer.player.stop(as);
for(int i=0;i<jButton.length;i++)
jButton[i].setEnabled(false);
//JOptionPane.showMessageDialog(this, "Sorry,You Lose! Again?", "Game Over",
// JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
JOptionPane msg=new JOptionPane();
//msg.showConfirmDialog(jFramePane,
//"You are Lost!!!! Again?", "choose one", JOptionPane.YES_NO_OPTION);
msg.showMessageDialog(jFramePane,"You are Lost!!! Again?","Lost",msg.INFORMATION_MESSAGE,image[36]);
}
public boolean check1(int x1,int y1,int x2,int y2){
if(x1==x2)
{ if(y1>y2)
{ for(int i=y2+1;i<y1;i++)
{ if(b[x1][i]!=0)
return false;
}
// return true;
}
else if(y1<y2)
{ for(int i=y1+1;i<y2;i++)
{ if(b[x1][i]!=0)
return false;
}
// return true;
}
}
else if(y1==y2)
{if(x1>x2)
{ for(int i=x2+1;i<x1;i++)
{ if(b[i][y1]!=0)
return false;
}
// return true;
}
else if(x1<x2)
{ for(int i=x1+1;i<x2;i++)
{ if(b[i][y1]!=0)
return false;
}
// return true;
}
}
return true;
}
public boolean check2(int x1,int y1,int x2,int y2){
if(check1(x2,y2,x1,y2)&&check1(x1,y1,x1,y2)&&b[x1][y2]==0||check1(x1,y1,x2,y1)&&check1(x2,y1,x2,y2)&&b[x2][y1]==0)
return true;
else
return false;
}
public boolean check3(int x1,int y1,int x2,int y2){
for(int i=0;i<=14;i++)
{ if(i!=y2&&i!=y1)
{
if(check1(x1,i,x2,i)&&(b[x1][i]==0)&&(b[x2][i]==0)&&check1(x1,i,x1,y1)&&check1(x2,i,x2,y2))
return true;
}
}
for(int j=0;j<=9;j++)
{ if(j!=x2&&j!=x1)
{
if(check1(j,y1,j,y2)&&(b[j][y1]==0)&&(b[j][y2]==0)&&check1(j,y1,x1,y1)&&check1(j,y2,x2,y2))
return true;
}
}
return false;
}
public boolean check(int x1,int y1,int x2,int y2){
if(x1==x2&&y1==y2)
return false;
else if(x1==x2&&(y1==y2+1||y2==y1+1)||y1==y2&&(x1==x2+1||x2==x1+1))
return true;
// else
// return false;
else if(x1==x2||y1==y2)
{if(check1(x1,y1,x2,y2))
return true;
else
if(check3(x1,y1,x2,y2))
return true ;
}
else
{ if(check2(x1,y1,x2,y2))
return true;
else if(check3(x1,y1,x2,y2))
return true;
}
return false;
}
public LinkGame(String title){
setTitle(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
fwidth=800;
fheight=600;
setBounds(75,75,fwidth,fheight);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
setResizable(false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -