使用java开发的2048游戏(附代码)

来源:互联网 发布:巴基斯坦人 知乎 编辑:程序博客网 时间:2024/06/04 01:02
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
事在许多网页游戏中发现2048这款小游戏非常好玩,虽然操作起来不难,但是想要成功并不是件容易的事,下边我将自己在努力之后得到的该游戏代码为大家呈现,并对部分代码做了解释。
package com.yuanhonglong.game2048;

import java.util.Timer;
import java.util.TimerTask;
import javax.swing.SwingUtilities;

//程序入口

public class Game2048{
    
    // 用于记录数据
    public static int[][] data=new int[4][4];
    private static ScoreFrame frame;
    
    // 每一局成功后初始化数据
 
    public static void init(){
        MainFrame.keyControl=0;
        frame.dispose();
        data=new int[4][4];
        clear();
        initGame();
    }
    
    // 清理界面数据
 
    public static void clear(){
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                MainFrame.myButtons[i][j].value=0;
            }
        }
        MainFrame.refreshButtons();
    }
    
  
//游戏成功

    public static void win(){
        MainFrame.keyControl=2;
        final FlashFrame flashFrame=new FlashFrame("   成功!");
        flashFrame.setVisible(true);
        Timer timer=new Timer();
        final TimerTask task1=new TimerTask(){
            
            @Override
            public void run(){
                flashFrame.setLocation(flashFrame.getX(),flashFrame.getY()-8);
            }
        };
        TimerTask task2=new TimerTask(){
            
            @Override
            public void run(){
                task1.cancel();
                flashFrame.dispose();
                showScore();
            }
        };
        timer.schedule(task1,0,10);
        timer.schedule(task2,1000);
    }
    //游戏失败

    public static void failed(){
        MainFrame.keyControl=2;
        final FlashFrame flashFrame=new FlashFrame("   失败!");
        flashFrame.setVisible(true);
        Timer timer=new Timer();
        final TimerTask task1=new TimerTask(){
            
            @Override
            public void run(){
                flashFrame.setLocation(flashFrame.getX(),flashFrame.getY()-8);
            }
        };
        TimerTask task2=new TimerTask(){
            
            @Override
            public void run(){
                task1.cancel();
                flashFrame.dispose();
                showScore();
            }
        };
        timer.schedule(task1,0,10);
        timer.schedule(task2,1000);
    }
    
    /**
     * 欢迎
     */
    public static void welcome(){
        final FlashFrame flashFrame=new FlashFrame("   欢迎!");
        flashFrame.setVisible(true);
        Timer timer=new Timer();
        final TimerTask task1=new TimerTask(){
            
            @Override
            public void run(){
                flashFrame.setLocation(flashFrame.getX(),flashFrame.getY()-12);
            }
        };
        TimerTask task2=new TimerTask(){
            
            @Override
            public void run(){
                task1.cancel();
                flashFrame.dispose();
            }
        };
        timer.schedule(task1,0,10);
        timer.schedule(task2,1000);
    }
    
    /*
     * 检查是否失败
     */
    public static void checkForFailed(){
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                if((data[i][j]==data[i][j+1])||(data[i][j]==data[i+1][j])){
                    return;
                }
            }
        }
        for(int i=0;i<3;i++){
            if((data[i][3]==data[i+1][3])||(data[3][i]==data[3][i+1])){
                return;
            }
        }
        failed();
    }
    
   *
      /** 得到分数,所有格子分数之和*/
   
    public static int getScore(){
        int score=0;
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                score+=data[i][j];
            }
        }
        return score;
    }
    
    /**
     * 显示分数
     */
    public static void showScore(){
        frame=new ScoreFrame("Score:"+((Integer)getScore()).toString());
        frame.setVisible(true);
        Timer timer=new Timer();
        final TimerTask task1=new TimerTask(){
            
            @Override
            public void run(){
                if(frame.getY()>200){
                    frame.setLocation(frame.getX(),frame.getY()-4);
                }
                else{
                    frame.setBounds(frame.getX(),200,440,150);
                }
            }
        };
        TimerTask task2=new TimerTask(){
            
            @Override
            public void run(){
                task1.cancel();
            }
        };
        timer.schedule(task1,0,10);
        timer.schedule(task2,1000);
    }
    
 
       /** 开始游戏  */
 
    public static void stsrtGame2048(){
        MainFrame frame=new MainFrame();
        frame.setVisible(true);
        initGame();
    }
    
    /**
     * 初始化两个格子的数据
     */
    public static void initGame(){
        int m=(int)(Math.random()*16);
        int n=(int)(Math.random()*16);
        int p=Math.abs(m-n);
        if(p==n){
            p=p>7?p-1:p+1;
        }
        MainFrame.myButtons[p/4][p%4].value=2;
        MainFrame.myButtons[n/4][n%4].value=2;
        data[p/4][p%4]=2;
        data[n/4][n%4]=2;
        MainFrame.myButtons[p/4][p%4].setText("2");
        MainFrame.myButtons[n/4][n%4].setText("2");
        MainFrame.myButtons[p/4][p%4].changeBackground();
        MainFrame.myButtons[n/4][n%4].changeBackground();
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                data[i][j]=MainFrame.myButtons[i][j].value;
            }
        }
    }
    
    public static void flushUp(){
        for(int j=0;j<4;j++){
            if(data[1][j]==0){
                continue;
            }
            else if(data[0][j]==0){
                MainFrame.myButtons[1][j].goUp();
            }
            else if(data[1][j]==data[0][j]){
                MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[0][j]);
            }
        }
        for(int j=0;j<4;j++){
            if(data[2][j]==0){
                continue;
            }
            else if(data[1][j]==0){
                MainFrame.myButtons[2][j].goUp();
                if(data[0][j]==0){
                    MainFrame.myButtons[1][j].goUp();
                }
                else if(data[0][j]==data[1][j]){
                    MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[0][j]);
                }
            }
            else if(data[2][j]==data[1][j]){
                MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[1][j]);
            }
        }
        for(int j=0;j<4;j++){
            if(data[3][j]==0){
                continue;
            }
            else if(data[2][j]==0){
                MainFrame.myButtons[3][j].goUp();
                if(data[1][j]==0){
                    MainFrame.myButtons[2][j].goUp();
                    if(data[0][j]==0){
                        MainFrame.myButtons[1][j].goUp();
                    }
                    else if(data[0][j]==data[1][j]){
                        MainFrame.myButtons[1][j].addTo(MainFrame.myButtons[0][j]);
                    }
                }
                else if(data[2][j]==data[1][j]){
                    MainFrame.myButtons[2][j].addTo(MainFrame.myButtons[1][j]);
                }
源代码下载:http://download.csdn.net/detail/u014687186/7593887
0 0
原创粉丝点击