连连看java源代码

  

连连看java源代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //分别记录两次被选中的按钮
int grid[][] = new int[8][7];//储存游戏按钮位置
static boolean pressInformation=false; //判断是否有按钮被选中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
public void init(){
mainFrame=new JFrame("JKJ连连看");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel=new JPanel();
southPanel=new JPanel();
northPanel=new JPanel();
thisContainer.add(centerPanel,"Center");
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
centerPanel.setLayout(new GridLayout(6,5));
for(int cols = 0;cols < 6;cols++){
for(int rows = 0;rows < 5;rows++ ){
diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton=new JButton("退出");
exitButton.addActionListener(this);
resetButton=new JButton("重列");
resetButton.addActionListener(this);
newlyButton=new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280,100,500,450);
mainFrame.setVisible(true);
}
public void randomBuild() {
int randoms,cols,rows;
for(int twins=1;twins<=15;twins++) {
randoms=(int)(Math.random()*25+1);
for(int alike=1;alike<=2;alike++) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=randoms;
}
}
}
public void fraction(){
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));
}
public void reload() {
int save[] = new int[30];
int n=0,cols,rows;
int grid[][]= new int[8][7];
for(int i=0;i<=6;i++) {
for(int j=0;j<=5;j++) {
if(this.grid[i][j]!=0) {
save[n]=this.grid[i][j];
n++;
}
}
}
n=n-1;
this.grid=grid;
while(n>=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=save[n];
n--;
}
mainFrame.setVisible(false);
pressInformation=false; //这里一定要将按钮点击信息归为初始
init();
for(int i = 0;i < 6;i++){
for(int j = 0;j < 5;j++ ){
if(grid[i+1][j+1]==0)
diamondsButton[i][j].setVisible(false);
}
}
}
public void estimateEven(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
pressInformation=true;
}
else {
x0=x;
y0=y;
fristMsg=secondMsg;
firstButton=secondButton;
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
if(fristMsg==secondMsg && secondButton!=firstButton){
xiao();
}
}
}
public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释
if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻
remove();
}
else{
for (j=0;j<7;j++ ) {
if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空
if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0) {
k=0;
break;
}
else{ k=1; } //K=1说明通过了第一次验证
}
if (k==1) {
linePassOne();
}
}
if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边
for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0){
k=0;
break;
}
else { k=1; }
}
if (k==1){
linePassOne();
}
}
if (y==j ) {
linePassOne();
}
}
if (k==2) {
if (x0==x) {
remove();
}
if (x0<x) {
for (n=x0;n<=x-1;n++ ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 && n==x-1) {
remove();
}
}
}
if (x0>x) {
for (n=x0;n>=x+1 ;n-- ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 && n==x+1) {
remove();
}
}
}
}
}
for (i=0;i<8;i++ ) { //列
if (grid[i][y0]==0) {
if (x>i) {
for (j=x-1;j>=i ;j-- ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x<i) {
for (j=x+1;j<=i;j++ ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x==i) {
rowPassOne();
}
}
if (k==2){
if (y0==y) {
remove();
}
if (y0<y) {
for (n=y0;n<=y-1 ;n++ ) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y-1) {
remove();
}
}
}
if (y0>y) {
for (n=y0;n>=y+1 ;n--) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y+1) {
remove();
}
}
}
}
}
}
}
public void linePassOne(){
if (y0>j){ //第一按钮同行空按钮在左边
for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮
if (grid[x0][i]!=0) {
k=0;
break;
}
else { k=2; } //K=2说明通过了第二次验证
}
}
if (y0<j){ //第一按钮同行空按钮在与第二按钮之间
for (i=y0+1;i<=j ;i++){
if (grid[x0][i]!=0) {
k=0;
break;
}
else{ k=2; }
}
}
}
public void rowPassOne(){
if (x0>i) {
for (j=x0-1;j>=i ;j-- ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
if (x0<i) {
for (j=x0+1;j<=i ;j++ ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
}
public void remove(){
firstButton.setVisible(false);
secondButton.setVisible(false);
fraction();
pressInformation=false;
k=0;
grid[x0][y0]=0;
grid[x][y]=0;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==newlyButton){
int grid[][] = new int[8][7];
this.grid = grid;
randomBuild();
mainFrame.setVisible(false);
pressInformation=false;
init();
}
if(e.getSource()==exitButton)
System.exit(0);
if(e.getSource()==resetButton)
reload();
for(int cols = 0;cols < 6;cols++){
for(int rows = 0;rows < 5;rows++ ){
if(e.getSource()==diamondsButton[cols][rows])
estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);
}
}
}
public static void main(String[] args) {
lianliankan llk = new lianliankan();
llk.randomBuild();
llk.init();
}
}

//old 998 lines
//new 318 lineshttp://t.qq.com/lj201323

  http://t.qq.com/tyymyy

  http://t.qq.com/ls56445

  http://t.qq.com/ls8647665

  http://t.qq.com/ls864545325

  http://t.qq.com/nk456465465

  http://t.qq.com/nk4546486

  http://t.qq.com/ls846324435

  http://t.qq.com/nk5456151

  http://t.qq.com/nk5456151

  http://blog.sina.com.cn/s/blog_de3383930101o6ay.html

  http://blog.sina.com.cn/s/blog_de3383930101o6au.html

  http://blog.sina.com.cn/s/blog_de3383930101o6ar.html

  http://blog.sina.com.cn/s/blog_de3383930101o6aq.html

  http://blog.sina.com.cn/s/blog_de3383930101o6ap.html

  http://blog.sina.com.cn/s/blog_de3383930101o6al.html

  http://blog.sina.com.cn/s/blog_de3383930101o6aa.html

  http://tyymyy.blog.163.com/blog/static/224581075201371835521828/

  http://tyymyy.blog.163.com/blog/static/224581075201371835449144/

  http://tyymyy.blog.163.com/blog/static/224581075201371835422800/

  http://tyymyy.blog.163.com/blog/static/224581075201371835231474/

  http://tyymyy.blog.163.com/blog/static/224581075201371835011429/

  http://tyymyy.blog.163.com/blog/static/224581075201371834823406/

  http://tyymyy.blog.163.com/blog/static/224581075201371834646890/

  http://tyymyy.blog.163.com/blog/static/22458107520137183450718/

  http://tyymyy.blog.163.com/blog/static/224581075201371834234943/

  http://tyymyy.blog.163.com/blog/static/224581075201371834051862/

  http://blog.csdn.net/u011733758/article/details/10047981

  http://blog.csdn.net/u011733758/article/details/10047975

  http://blog.csdn.net/u011733758/article/details/10047967

  http://blog.csdn.net/u011733758/article/details/10047961

  http://blog.csdn.net/u011733758/article/details/10047953

  http://blog.cnfol.com/T15453/article/1376814763-88416494.html

  http://blog.cnfol.com/T15453/article/1376814734-88416490.html

  http://blog.cnfol.com/T15453/article/1376814678-88416488.html

  http://blog.cnfol.com/T15453/article/1376814638-88416484.html

  http://blog.cnfol.com/T15453/article/1376814501-88416476.html

  http://www.zhihu.com/collection/21811405

  http://www.zhihu.com/collection/21811489

  http://www.zhihu.com/collection/21811526

  http://www.zhihu.com/collection/21811641

  http://www.zhihu.com/collection/21811693

  http://www.zhihu.com/collection/21811742

  http://www.zhihu.com/collection/21811890

  http://www.zhihu.com/collection/21811945

  http://www.zhihu.com/collection/21811966

  http://t.163.com/event/info/eventId/4213518387613887433

  http://t.163.com/event/info/eventId/2119647604047392746

  http://t.163.com/event/info/eventId/-5498538100190759214

  http://t.163.com/event/info/eventId/4368902235689449606

  http://t.163.com/event/info/eventId/-3456481464061143138

  http://t.163.com/event/info/eventId/8970370908567308942

  http://t.163.com/event/info/eventId/585803130069418865

  http://t.163.com/event/info/eventId/1410054761704237160

  http://t.163.com/event/info/eventId/-972921300656984948

  http://t.163.com/event/info/eventId/5413341910798540536

  http://t.163.com/event/info/eventId/7669437157309820132

  http://t.163.com/event/info/eventId/5360290517895680656

  http://photo.163.com/q/6520627/?mid=173596049

  http://photo.163.com/q/6520630/?mid=173596049

  http://photo.163.com/q/6520639/?mid=173596049

  http://photo.163.com/q/6520642/?mid=173596049

  http://photo.163.com/q/6520644/?mid=173596049

  http://photo.163.com/q/6525083/?mid=173584240

  http://photo.163.com/q/6525084/?mid=173584240

  http://photo.163.com/q/6525085/?mid=173584240

  http://photo.163.com/q/6525086/?mid=173584240

  http://photo.163.com/q/6525087/?mid=173584240

  http://t.hexun.com/22097565/default.html

  http://t.hexun.com/22143754/default.html

  http://q.hexun.com/114221/default.html

  http://q.hexun.com/114222/default.html

  http://q.hexun.com/114223/default.html

  http://www.huihui.cn/share/7604213

  http://www.huihui.cn/share/7604195

  http://www.huihui.cn/share/7604186

  http://www.huihui.cn/share/7604177

  http://www.huihui.cn/share/7604169

  http://www.huihui.cn/share/7604155

  http://www.huihui.cn/share/7604147

  http://www.huihui.cn/share/7604138

  http://www.huihui.cn/share/7604123

  http://www.huihui.cn/share/7604110

  http://bbs.e23.cn/thread-175535932-1-1.html

  http://bbs.e23.cn/thread-175535934-1-1.html

  http://bbs.e23.cn/thread-175535938-1-1.html

  http://bbs.e23.cn/thread-175535940-1-1.html

  http://wenwen.soso.com/z/q474896183.htm

  http://wenwen.soso.com/z/q474896199.htm

  http://wenwen.soso.com/z/q474896514.htm

  http://wenwen.soso.com/z/q474896532.htm

  http://wenwen.soso.com/z/q474896548.htm

  http://wenwen.soso.com/z/q474896599.htm

  http://wenwen.soso.com/z/q474897116.htm

  http://wenwen.soso.com/z/q474897134.htm

  http://wenwen.soso.com/z/q474897154.htm

  http://wenwen.soso.com/z/q474897173.htm

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java连连看代码 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.*; public class Game extends JFrame{ private int num[][]; //实现数组 private JButton gamebutton[][]; //游戏Button组 private Container cont; //内容面板 private JLabel timelabel; //时间标签 private JButton play; //开始游戏按钮 private JButton exit; //退出按钮 private JButton replay; //重新开始按钮 private JButton back; //返回主界面按钮 private JComboBox choice;//游戏等级 private JButton chongle; //游戏按钮重列 private JPanel gamepanel; //游戏按钮面板 private JPanel panel; //开始游戏面板 private int time=0; //时间记录 private Time T; //记时线程 private Thread t=new Thread(T); //记时线程 private int shu=1; //记录获取游戏按钮事件的个数 private int x=0,y=0,a=0,b=0;//按钮的坐标 private JButton button1=null,button2=null;//点击了的按钮 private boolean can;//能否消除 private int lvx,lvy; //游戏等级数组标列数 private int framex,framey; //框架大小 private int again=1;//记录重列次数 public Game(){ itincomponent(); } private void itincomponent(){ //设置面板属性 if(cont!=null) cont.removeAll(); this.setSize(500, 500); this.setLocationRelativeTo(null); //获取内容面板 cont=this.getContentPane(); //开始和退出按钮 panel=new JPanel(); play=new JButton("开始游戏"); choice=new JComboBox(); choice.addItem("低级"); choice.addItem("中级"); choice.addItem("高级"); choice.setSelectedItem("低级"); exit=new JButton("退出游戏"); panel.add(choice); panel.add(play); panel.add(exit); cont.add(panel,"South"); exit.addActionListener(new Exit());//结束事件监听 play.addActionListener(new Play());//开始事件监听 this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } ////获得新的面板 private void p(){ //设置面板属性 this.setSize(framex, framey); this.setLocationRelativeTo(null); //获取内容面板 cont=this.getContentPane(); //开始和退出按钮 panel=new JPanel(); exit=new JButton("退出游戏"); replay=new JButton("重新开始"); back=new JButton("返回主界面"); chongle=new JButton("重列"); panel.add(chongle); panel.add(replay); panel.add(exit); panel.add(back); cont.add(panel,"South"); exit.addActionListener(new Exit());//结束事件监听 replay.addActionListener(new Playbutton());//重新开始事件监听 back.addActionListener(new Back());//返回主界面事件监听 chongle.addActionListener(new Chongle());//重列事件监听 //时间面板 timelabel=new JLabel("游戏时间:"+time+"s",JLabel.CENTER); cont.add(timelabel,"North"); //生成游戏操作面板 gamepanel=new JPanel(); gamepanel.setLayout(new GridLayout(lvx,lvy,3,3)); //设置为表格布局 for (int i = 0; i < lvx; i++) { for (int j = 0; j <lvy; j++) { if(gamebutton[i][j].isVisible()){ gamebutton[i][j].setIcon(new ImageIcon(num[i][j]+".jpg")); } gamepanel.add(gamebutton[i][j]); gamebutton[i][j].addActionListener(new Gamebutton()); } } cont.add(gamepanel, "Center"); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值