在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Java语言基础 → 2048小游戏源码(java)

2048小游戏源码(java)

Java语言基础

下载此实例
  • 开发语言:Java
  • 实例大小:0.03M
  • 下载次数:27
  • 浏览次数:371
  • 发布时间:2019-07-02
  • 实例类别:Java语言基础
  • 发 布 人:lihang131
  • 文件格式:.rar
  • 所需积分:2

实例介绍

【实例简介】

【实例截图】

from clipboard



from clipboard

【核心代码】

package frame;

import java.awt.BorderLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.Box;
import javax.swing.JLabel;

import java.awt.GridLayout;

import javax.swing.SwingConstants;

import java.awt.Font;
import javax.swing.JButton;
import suanfa.Move;
import suanfa.Tools;
import suanfa.TurnJLabelToString;

import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MainFrame extends JFrame 
{

	/**
	 * 
	 */
	private static final long serialVersionUID = -1437480348206159174L;
	private JPanel contentPane;
	private JLabel[] DataLabel = new JLabel[16];
	private TurnJLabelToString turn;
	private String SCORE;
	private JLabel SCORELabel_DATA;
	private String HIGH_SCORE;
	private JLabel HIGH_SCORELabel_DATA;
	private Properties props;
	/**
	 * Launch the application.
	 */
//	public static void main(String[] args)
//	{
//		//windows外观
//		try 
//		{  
//	          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
//	         
//	    } 
//		catch (Exception e) 
//		{  
//	          e.printStackTrace();  
//	    }
//		EventQueue.invokeLater(new Runnable() 
//		{
//			public void run()
//			{
//				try 
//				{
//					MainFrame frame = new MainFrame();
//					frame.setVisible(true);
//				}
//				catch (Exception e) 
//				{
//					e.printStackTrace();
//				}
//			}
//		});
//	}
	public MainFrame() 
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(600, 300, 150, 400);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		setResizable(false);//锁钉尺寸
		
		JPanel panel = new JPanel();
		panel.setBackground(Color.WHITE);
		contentPane.add(panel, BorderLayout.CENTER);
		panel.setLayout(new GridLayout(4, 4, 0, 0));
		
		//设置16×16的数据表格
		for (int i = 0; i < 16; i  ) 
		  {
			DataLabel[i] = new JLabel("", JLabel.CENTER);// 将显示的字符设置为居中 
			DataLabel[i].setFont(new Font("宋体", Font.BOLD, 12));
			DataLabel[i].setForeground(Color.black);//设置字体颜色
			DataLabel[i].setBorder(BorderFactory.createLineBorder(Color.BLACK));//设边框体颜色
			DataLabel[i].setOpaque(true);
			DataLabel[i].setBackground(Color.WHITE);//将背景设置成白色
		    panel.add(DataLabel[i]);
		    DataLabel[i].setText("0");
		  }
		
		Box verticalBox = Box.createVerticalBox();
		contentPane.add(verticalBox, BorderLayout.NORTH);
		
		JPanel panel_1 = new JPanel();
		verticalBox.add(panel_1);
		panel_1.setLayout(new GridLayout(1, 0, 0, 0));
		
		JPanel panel_6 = new JPanel();
		panel_1.add(panel_6);
		
		JLabel label_2 = new JLabel("2048");
		label_2.setHorizontalAlignment(SwingConstants.CENTER);
		label_2.setForeground(new Color(178, 34, 34));
		panel_6.add(label_2);
		label_2.setFont(new Font("Times New Roman", Font.BOLD, 34));
		
		JPanel panel_3 = new JPanel();
		panel_1.add(panel_3);
		panel_3.setLayout(new GridLayout(4, 0, 0, 0));
		
		JLabel SCORELabel = new JLabel("SCORE:");
		SCORELabel.setFont(new Font("Times New Roman", Font.BOLD, 11));
		panel_3.add(SCORELabel);
		
		SCORELabel_DATA = new JLabel("0");
		SCORELabel_DATA.setForeground(Color.RED);
		SCORELabel_DATA.setFont(new Font("Times New Roman", Font.BOLD, 15));
		panel_3.add(SCORELabel_DATA);
		
		JLabel HIGH_SCORELabel = new JLabel("HIGH SCORE:");
		HIGH_SCORELabel.setFont(new Font("Times New Roman", Font.BOLD, 11));
		panel_3.add(HIGH_SCORELabel);
		
		HIGH_SCORELabel_DATA = new JLabel("0");
		HIGH_SCORELabel_DATA.setForeground(Color.red);
		HIGH_SCORELabel_DATA.setFont(new Font("Times New Roman", Font.BOLD, 15));
		panel_3.add(HIGH_SCORELabel_DATA);
		
		JPanel panel_2 = new JPanel();
		verticalBox.add(panel_2);
		panel_2.setLayout(new BorderLayout(0, 0));
		
		JLabel label_3 = new JLabel("2 2=4 4=8...");
		label_3.setFont(new Font("宋体", Font.BOLD, 15));
		panel_2.add(label_3);
		
		JPanel panel_7 = new JPanel();
		contentPane.add(panel_7, BorderLayout.SOUTH);
		panel_7.setLayout(new BorderLayout(0, 0));
		
		JPanel panel_10 = new JPanel();
		panel_7.add(panel_10);
		panel_10.setLayout(new GridLayout(0, 1, 0, 0));
		
		JPanel panel_11 = new JPanel();
		panel_10.add(panel_11);
		panel_11.setLayout(new GridLayout(0, 3, 0, 0));
		
		JPanel panel_14 = new JPanel();
		panel_11.add(panel_14);	
		JPanel panel_15 = new JPanel();
		panel_11.add(panel_15);
		JPanel panel_16 = new JPanel();
		panel_11.add(panel_16);		
		JPanel panel_12 = new JPanel();
		panel_10.add(panel_12);
		panel_12.setLayout(new GridLayout(0, 3, 0, 0));		
		JPanel panel_17 = new JPanel();
		panel_12.add(panel_17);		
		
		
		
		JButton btnU = new JButton("\u2191");
		btnU.setMnemonic(KeyEvent.VK_UP);
		
		JButton btnL = new JButton("\u2190");
		btnL.setMnemonic(KeyEvent.VK_LEFT);
		
		JLabel lblRst = new JLabel("Re");
		
		JButton btnR = new JButton("\u2192");
		btnR.setMnemonic(KeyEvent.VK_RIGHT);
		
		JButton btnD = new JButton("\u2193");
		btnD.setMnemonic(KeyEvent.VK_DOWN);
		
		panel_15.add(btnU);
		
		panel_17.add(btnL);		
		JPanel panel_18 = new JPanel();
		panel_12.add(panel_18);		
		
		panel_18.add(lblRst);
		
		JPanel panel_19 = new JPanel();
		panel_12.add(panel_19);		
		
		panel_19.add(btnR);
		
		JPanel panel_13 = new JPanel();
		panel_10.add(panel_13);
		panel_13.setLayout(new GridLayout(0, 3, 0, 0));
		
		JPanel panel_20 = new JPanel();
		panel_13.add(panel_20);
		
		JPanel panel_21 = new JPanel();
		panel_13.add(panel_21);		
		
		panel_21.add(btnD);
		
		JPanel panel_22 = new JPanel();
		panel_13.add(panel_22);

		/*
		 * 启动后读取配置参数,分数、最高分、data数据
		 * 显示在界面中
		 */	
		props = new Properties();
		try 
		{
			props.load(new FileInputStream("DATA.ini"));
		} 
		catch (FileNotFoundException e) 
		{
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} 
		catch (IOException e) 
		{
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		SCORE = props.getProperty("SCORE");//分数
		HIGH_SCORE = props.getProperty("HIGH_SCORE");//历史最高
		String DATA = props.getProperty("DATA");//数据
		
		SCORELabel_DATA.setText(SCORE);//把分数显示在分数栏上
		HIGH_SCORELabel_DATA.setText(HIGH_SCORE);//把历史最高显示在历史最高栏上
		String[] chrstr = DATA.split("_");	//把数据转化为String数组
		if(Tools.All0OrNot(chrstr))//如果全0,随机在2处填2
		{
			int a=(int)(Math.random()*chrstr.length);
			chrstr[a]="2";
			int b=(int)(Math.random()*chrstr.length);
			chrstr[b]="2";
			ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel );
		}
		else
		{
			ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel );	//把数据改变对应颜色后显示在数据区内
		}
		Move.scorecut();
		Move.setscore(SCORE);
		
		//上按键监听
		btnU.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				turn=new TurnJLabelToString (DataLabel);
				String[] s=turn.DataUP();
				if(turn.stringArrayCompare())
				{
					ChangeJLabel.ChangeJLabelColor(s,DataLabel );
					int point2=turn.getRandomFromArray(s);
					DataLabel[point2].setText(Tools.Select1());
					
					if(DataLabel[point2].getText().equals("2"))
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(Color.WHITE);
					}
					else
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(new Color(255,165,0));
					}		
					
					
					SCORELabel_DATA.setText(Move.getscore());
					
					if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE))
					{
						HIGH_SCORELabel_DATA.setText(Move.getscore());
					}
					
					try 
					{
						OutputStream fos = new FileOutputStream("DATA.ini");
						props.setProperty("SCORE", Move.getscore());
						
						props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText());
						String indata=new String();
						String[] indata2=new String[16];
						for(int i=0;i<DataLabel.length;i  )
						{
							indata2[i]=DataLabel[i].getText();
							
						}
						for(int i=0;i<indata2.length;i  )
						{
							indata=indata indata2[i] "_";
						}
						
						props.setProperty("DATA", indata);
						props.store(fos, "Update '"   "SCORE"   "' value");
						
					} 
					catch (FileNotFoundException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					} 
					catch (IOException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					}					
				}								
			}
		});
		//下按键监听
		btnD.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent arg0)
			{
				turn=new TurnJLabelToString (DataLabel);
				String[] s=turn.DataDOWN();
				if(turn.stringArrayCompare())
				{
					ChangeJLabel.ChangeJLabelColor(s,DataLabel );
					int point2=turn.getRandomFromArray(s);
					DataLabel[point2].setText(Tools.Select1());
					if(DataLabel[point2].getText().equals("2"))
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(Color.WHITE);
					}
					else
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(new Color(255,165,0));
					}
					
					
					SCORELabel_DATA.setText(Move.getscore());
					if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE))
					{
						HIGH_SCORELabel_DATA.setText(Move.getscore());
					}
					try 
					{
						OutputStream fos = new FileOutputStream("DATA.ini");
						props.setProperty("SCORE", Move.getscore());
						
						props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText());
						String indata=new String();
						String[] indata2=new String[16];
						for(int i=0;i<DataLabel.length;i  )
						{
							indata2[i]=DataLabel[i].getText();
							
						}
						for(int i=0;i<indata2.length;i  )
						{
							indata=indata indata2[i] "_";
						}
						props.setProperty("DATA", indata);
						props.store(fos, "Update '"   "SCORE"   "' value");
						
					} 
					catch (FileNotFoundException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					} 
					catch (IOException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					}
				}					
			}
		});
		//左按键监听
		btnL.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent arg0)
			{
				turn=new TurnJLabelToString (DataLabel);
				String[] s=turn.DataLEFT();
				if(turn.stringArrayCompare())
				{
					ChangeJLabel.ChangeJLabelColor(s,DataLabel );
					int point2=turn.getRandomFromArray(s);
					DataLabel[point2].setText(Tools.Select1());
					if(DataLabel[point2].getText().equals("2"))
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(Color.WHITE);
					}
					else
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(new Color(255,165,0));
					}
					
					
					SCORELabel_DATA.setText(Move.getscore());
					if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE))
					{
						HIGH_SCORELabel_DATA.setText(Move.getscore());
					}
					try 
					{
						OutputStream fos = new FileOutputStream("DATA.ini");
						props.setProperty("SCORE", Move.getscore());
						
						props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText());
						String indata=new String();
						String[] indata2=new String[16];
						for(int i=0;i<DataLabel.length;i  )
						{
							indata2[i]=DataLabel[i].getText();
							
						}
						for(int i=0;i<indata2.length;i  )
						{
							indata=indata indata2[i] "_";
						}
						props.setProperty("DATA", indata);
						props.store(fos, "Update '"   "SCORE"   "' value");
						
					} 
					catch (FileNotFoundException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					} 
					catch (IOException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					}
				}				
			}
		});
		//右按键监听
		btnR.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0)
			{
				turn=new TurnJLabelToString (DataLabel);
				String[] s=turn.DataRIGHT();
				if(turn.stringArrayCompare())
				{
					ChangeJLabel.ChangeJLabelColor(s,DataLabel );
					int point2=turn.getRandomFromArray(s);
					DataLabel[point2].setText(Tools.Select1());
					if(DataLabel[point2].getText().equals("2"))
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(Color.WHITE);
					}
					else
					{
						DataLabel[point2].setForeground(Color.black);
						DataLabel[point2].setBackground(new Color(255,165,0));
					}
					
					
					SCORELabel_DATA.setText(Move.getscore());
					if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE))
					{
						HIGH_SCORELabel_DATA.setText(Move.getscore());
					}
					try 
					{
						OutputStream fos = new FileOutputStream("DATA.ini");
						props.setProperty("SCORE", Move.getscore());
						
						props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText());
						String indata=new String();
						String[] indata2=new String[16];
						for(int i=0;i<DataLabel.length;i  )
						{
							indata2[i]=DataLabel[i].getText();
							
						}
						for(int i=0;i<indata2.length;i  )
						{
							indata=indata indata2[i] "_";
						}
						props.setProperty("DATA", indata);
						props.store(fos, "Update '"   "SCORE"   "' value");
						
					} 
					catch (FileNotFoundException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					} 
					catch (IOException e) 
					{
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					}
				}				
			}
		});
		
		//双击Re后恢复初始状态
		lblRst.addMouseListener(new MouseAdapter() 
		{
			@Override
			public void mouseClicked(MouseEvent e)
			{
				int clickTimes = e.getClickCount();
				 if (clickTimes == 2)
				 {
					 int res=JOptionPane.showConfirmDialog(null, "确定要重置吗?", "重置", JOptionPane.YES_NO_OPTION);
					 if(res==JOptionPane.YES_OPTION)
					 	{ 
						 	//点击“是”后执行这个代码块
						 	SCORE ="0";//分数
							
							SCORELabel_DATA.setText(SCORE);//把分数显示在分数栏上
							
							
							String[] chrstr=new String[16];
							for(int i=0;i<chrstr.length;i  )
							{
								chrstr[i]="0";
							}
							ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel );
							if(Tools.All0OrNot(chrstr))//如果全0,随机在2处填2
							{
								int a=(int)(Math.random()*chrstr.length);
								chrstr[a]="2";
								int b=(int)(Math.random()*chrstr.length);
								chrstr[b]="2";
								ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel );
							}
							else
							{
								ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel );	//把数据改变对应颜色后显示在数据区内
							}
							Move.scorecut();
							Move.setscore(SCORE);
					 	}
					 else
					 	{
						 	//点击“否”后执行这个代码块
					        return;
					 	} 								
				 }
			}
		});
	}
	//得到DataLabel数组
	public JLabel[] getJLabel()
	{
		return DataLabel;	
	}
	public void setJLabel()
	{
		
	}
}

实例下载地址

2048小游戏源码(java)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警