基本信息
源码名称:2048小游戏源码(java)
源码大小:0.03M
文件格式:.rar
开发语言:Java
更新时间:2019-07-02
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
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() { } }