⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 llk.txt

📁 连连看小游戏,很好玩的.具体里面附带有说明.
💻 TXT
字号:
我写的一个连连看游戏程序
/*很好玩的东东,大家都能做出来的东东,大家如果想把这个复制下去运行的话,记得在这个文件同目录下新建一*个叫做images文件夹。其中存放 liu1.gif,liu2.gif,liu3.gif,liu4.gif,liu5.gif,liu6.gif这样六张图片,

*具体图片可以任意,但名称与格式一定要正确

*/



import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class frame1 extends JFrame 
{
ImageIcon beauty=new ImageIcon("images/liu8.gif");
//JLabel jl=new JLabel(beauty);
private String [] images={"liu1.gif","liu2.gif","liu3.gif","liu4.gif","liu5.gif","liu6.gif"};
private ImageIcon[] ii=new ImageIcon[6];
private JButton [] buttons=new JButton[36];
private int ptr=0;
private JButton[] buttonGroup=new JButton[2];
private int[] 位置绑定=new int[2];
private int ptr1=0;
private int[] sequence=new int[36];
private JButton 激活按钮=new JButton("激活按钮",beauty);
private JButton 重置按钮=new JButton("重置按钮");
private JButton 炸弹按钮=new JButton("炸弹");
private int[]  重置按钮组=new int[36];
private int ptr2=0;
private int [][] matrix={
   {1,1,1,1,1,1},//0
   {1,1,1,1,1,1},//1
   {1,1,1,1,1,1},//2
   {1,1,1,1,1,1},//3
   {1,1,1,1,1,1},//4
   {1,1,1,1,1,1}//5
  };    // 0/1/2/3/4/5
public frame1(String title,int width,int height)
{
//设置窗体基本信息
super(title);
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
   final Container con =getContentPane();
ImageIcon ii=new ImageIcon("images/middle.gif");
setIconImage(ii.getImage());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(width,height);
int w=getSize().width;
int h=getSize().height;
w=(dim.width-w)/2;
h=(dim.height-h)/2;
//添加按钮
激活按钮.setToolTipText("点此按钮将激活所有按钮,继续玩!");
激活按钮.addActionListener(new ActionListener()
{
  public void actionPerformed (ActionEvent f)
  {
   for(int i=0 ;i<36;i++)
   {
    buttons.setEnabled (true);
    matrix[i/6][i%6]=1;    
   }
  }
        });
重置按钮.setToolTipText("点此按钮对图片进行重排!");
重置按钮.addActionListener(new ActionListener()
{
  public void actionPerformed (ActionEvent f)
  {
   for(int i=0 ;i<36;i++)
   {
    if(buttons.isEnabled ())
    重置按钮组=1;
    else
    重置按钮组=0;    
   }
   con.removeAll();
   con.setLayout(new GridLayout(7,6));
   buildSequence();
   for(int j=0 ; j<36;j++)
   {
    matrix[j/6][j%6]=重置按钮组[sequence[j]];
    if(重置按钮组[sequence[j]]==0)
    buttons[sequence[j]].setEnabled(false);
    con.add(buttons[sequence[j]]);
   }
  add(激活按钮);
  add(重置按钮);
  con.add(炸弹按钮);
  show(); 
  }
        });
炸弹按钮.setToolTipText("慎用,少用,否则你会后悔!");
炸弹按钮.addActionListener(new ActionListener()
{
public void actionPerformed (ActionEvent f)
{
   JButton[] 待爆=new JButton[2];
label:  for(int i=0;i<36;i++)
  { 待爆[0]=getEnabledButton(i);
   待爆[1]=getEnabledButton(i+1);
   if (待爆[0]==null&&待爆[1]==null)
   JOptionPane.showMessageDialog(null,"No buttons is visible!\n请激活......","提示框",JOptionPane.INFORMATION_MESSAGE);
   if (待爆[0]!=null&&待爆[1]!=null&&待爆[0]!=待爆[1])
   {
    for(int j=0;j<36;j++)
    {
     if(待爆[0]==buttons[sequence[j]])
     {
      位置绑定[0]=j;
      break;
     }
      
    }
    for(int j=0;j<36;j++)
    {
      if(待爆[1]==buttons[sequence[j]])
      { 位置绑定[1]=j;
      break;
      }
    }
    if(isConnected((位置绑定[0])/6,(位置绑定[0])%6,(位置绑定[1])/6,(位置绑定[1]%6)))
    { 
     待爆[0].setEnabled(false);
     待爆[1].setEnabled(false); 
     matrix[(位置绑定[0])/6][(位置绑定[0])%6]=0;
     matrix[(位置绑定[1])/6][(位置绑定[1])%6]=0;
     
     break label;
    }
   }
  }
}
        });
setButtons();
setLayout(new GridLayout(7,6));
buildSequence();
for(int i=0 ; i<36;i++)
{
  con.add(buttons[sequence]);
}
for( int i=0;i<36;i++)
{ 
  buttons[sequence].addActionListener(new ActionListener()
  {
   public void actionPerformed (ActionEvent e)
   {
    int p=ptr;
                                for(int j=0;j<36;j++)
    {
     if((JButton)e.getSource()==buttons[sequence[j]])
     {
      位置绑定[ptr1]=j;
     }
    }
    if(p==0||p==1)
    {
     buttonGroup[p]=(JButton)(e.getSource());
     ptr++;
     ptr1++;
     System.out.println("ptr="+ptr);
    }
    if (p==1)
    {      
     System.out.println("("+(位置绑定[0])/6+","+(位置绑定[0])%6+") and ("+(位置绑定[1])/6+","+(位置绑定[1])%6+")");
     boolean bl=isConnected((位置绑定[0])/6,(位置绑定[0])%6,(位置绑定[1])/6,(位置绑定[1])%6);
     System.out.println ("point x("+(位置绑定[0])/6+","+(位置绑定[0])%6+") is connected with point ("+(位置绑定[1])/6+","+(位置绑定[1])%6+") is "+bl);
     if(buttonGroup[0]==buttonGroup[1])
     {
      ptr=0;
      ptr1=0;
     }
     else if((buttonGroup[0].getIcon())==(buttonGroup[1].getIcon())&&isConnected((位置绑定[0])/6,(位置绑定[0])%6,(位置绑定[1])/6,(位置绑定[1]%6)))
     {

      buttonGroup[0].setEnabled(false);
      buttonGroup[1].setEnabled(false);
      matrix[(位置绑定[0])/6][(位置绑定[0])%6]=0;
      matrix[(位置绑定[1])/6][(位置绑定[1])%6]=0;
      ptr=0;
      ptr1=0;
     }
     else
     {
      ptr=0;
      ptr1=0;
     }
    }
    boolean bl=true;
           for (int i=0; i<36;i++)
    {
     if(buttons.isEnabled())
     {
     bl=false;
     break; 
     }
    }  
           if(bl)
    {
     String str=JOptionPane.showInputDialog(" 嗨,哥们!这美女现在送给你了!\n请留下尊姓大名:  ");
     JOptionPane.showMessageDialog(null,"笨蛋,"+str+"! \n今天虽然不是愚人节,可世上哪有这么便宜的事","你个傻瓜",JOptionPane.INFORMATION_MESSAGE);
    }
    
   }
  });
  
} 
con.add(激活按钮);
con.add(重置按钮);
con.add(炸弹按钮);
setVisible(true);
}
public void setButtons()
{
for(int i=0;i<6;i++)
{
  this.ii=new ImageIcon("images/"+this.images);
  for(int j=0;j<6;j++)
  {
   this.buttons[i*6+j]=new JButton(this.ii);
  }
}
}
//这个方法声称已随机数列(0~35)
public void buildSequence ()
{
Random random= new Random();
sequence[0]=random.nextInt(36);
for(int i=0;i<35;i++)
{
  int r=random.nextInt(36);
  if (notEqual(r,i))
  {
   sequence[i+1]=r;
  }
  else
  i--;
}
for(int i=0;i<36;i++)
System.out.println(sequence);

}

public boolean notEqual(int r,int ptr)
{
for(int i=0;i<=ptr;i++)
{
  if(r==sequence)
  return false;
}
return true;
}
public boolean isConnected (int x,int y,int p,int q)
{
if(matrix[x][y]==0||matrix[p][q]==0)
return false;

for(int i=1;i<6-y;i++)
{
int result=0;
result=right(x,y,i,result);
result=down(x,y+i,p-x,result);
result=right(p,y+i,q-y-i,result);
//System.out.println("____________________________________");
if(result==1)
return true;
}
for(int i=1;i<=y;i++)
{
int result=0;
result=right(x,y,-i,result);
result=down(x,y-i,p-x,result);
result=right(p,y-i,q+i-y,result);
//System.out.println("____________________________________");
if(result==1)
return true;
}
for(int i=1;i<=x;i++)
{
int result=0;
result=down(x,y,-i,result);
result=right(x-i,y,q-y,result);
result=down(x-i,q,p+i-x,result);
//System.out.println("____________________________________");
if(result==1)
return true;
}
for(int i=1;i<6-x;i++)
{
int result=0;
result=down(x,y,i,result);
result=right(x+i,y,q-y,result);//right(3,)
result=down(x+i,q,p-x-i,result);
//System.out.println("____________________________________");
if(result==1) 
return true;
}
return false;

}
public int down (int x,int y,int steps, int result)
{

if(steps<0)
{
  for(int i=1; i<=Math.abs(steps);i++)
  {
   result+=matrix[x-i][y];
  }
  //System.out.println("向上走"+Math.abs(steps)+"步,result 为"+result);
  return result;
}
for(int i=1; i<=Math.abs(steps);i++)
{
  result+=matrix[x+i][y];
}
  //System.out.println("向下走"+steps+"步,result 为"+result);
  return result ;
}
public int right (int x,int y,int steps, int result)
{ 


if(steps<0)
{
  for(int i=1; i<=Math.abs(steps);i++)
  {
   result+=matrix[x][y-i];
  }
  //System.out.println("向左走"+Math.abs(steps)+"步,result 为"+result);
  return result;
}
  for(int i=1; i<=Math.abs(steps);i++)
{
  result+=matrix[x][y+i];
}
//System.out.println("向右走"+steps+"步,result 为"+result);
return result ;
}
public JButton getEnabledButton(int begining )
{ 
for(int i=begining ;i<36;i++)
{
  if(buttons.isEnabled())
  return buttons; 
}

return null;
}
public static void main (String[] args )
{
        
JFrame.setDefaultLookAndFeelDecorated(true);
  frame1 f= new frame1("陶士强的连连看",500,500);
f.show();

       
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -