首页 > 代码库 > 2048游戏的Java实现

2048游戏的Java实现

写的比较匆忙,功能较为单一,界面丑,操作步数应该还能优化。

最终还是要写AI,但好像没那么简单,写了几个关于格局评价的函数,还得继续学习。。。


上下左右方向键操作。


源代码:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.*;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class My2048 extends JFrame {
	JPanel numpanel = new JPanel();
	JPanel scorepanel = new JPanel();
	
	JLabel numlabellist[][] = new JLabel[4][4];// 数字格子
	int numlist[][] = new int[4][4];// 数组格子对应数值
	int blanks = 16;// 空白格子数
	int score=0;//总得分
	JLabel scorelabel=new JLabel();
	
	int numlist2[][] = new int[4][4];//用于格局评价时的数组
	int smoothweight=1;
	int monoweight=10;
	int emptyweight=27;
	int maxweight=10;
	
	public static void main(String[] args) {
		new My2048().launchFrame();
	}

	public void AddNumArea() {
		for (int i = 0; i < 4; i++)
			for (int j = 0; j < 4; j++) {
				numlabellist[i][j] = new JLabel();
				numlist[i][j] = 0;
				numlabellist[i][j].setBackground(Color.LIGHT_GRAY);
				numlabellist[i][j].setBorder(new TitledBorder(""));
				numlabellist[i][j].setFont(new Font("Romantic", Font.BOLD, 35));
				numlabellist[i][j].setHorizontalAlignment(JTextField.CENTER);
				numpanel.add(numlabellist[i][j]);
			}
	}

	public void AddScoreLabel(){
		scorelabel.setBackground(Color.MAGENTA);
		scorelabel.setFont(new Font("Romantic", Font.BOLD, 35));
		scorelabel.setHorizontalAlignment(JTextField.CENTER);
		scorelabel.setText("score:"+Integer.toString(score));
		scorepanel.add(scorelabel);
	}
	
	// 随机选一个空白格子
	public int RandomIndex(int blanks) {
		Random random = new Random(System.currentTimeMillis());
		int result = random.nextInt(blanks)+1;
		return result;
	}

	// 2,4随机选一个
	public int RandomValue() {
		Random random = new Random();
		int result = random.nextInt(2);
		return (result+1)*2;
	}

	//空白处产生一新值,自带refresh功能
	public void NewValue() {
		int newvalue = http://www.mamicode.com/RandomValue();// 新值>






2048游戏的Java实现