用java做一个2048小游戏

xiaoxiao2021-02-28  63

昨天,自己突发奇想,能不能在忙碌的学习里抽一点时间来做一点事情,然后,我就有了一个要做一个2048小游戏的想法。说真的,java我已经认真学习了一段时间了,现在也刚刚学到Swing,虽然做这个2048还有很多东西没有学习过,但是,一边学一边做才是我们菜鸟的样子吧。

做这个东西,自己没有什么经验,我是这样想的:先做个需求出来吧,然后就有了第一部分的需求了;再按照需求,把开始部分想法做出来。

package My2048; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Text { public static void main(String[] args) { new Text(); } /* * 1.先做界面 * 2.做一个面板1,存放游戏里面移动的数字的地方(先用按钮代替) * 3.再做一个面板2,里面是有开始,暂停,结束按钮,游戏分数,游戏时间 */ public Text() { JFrame frame = new JFrame(); // 标题 frame.setTitle("我的2048"); // 窗体的大小 frame.setSize(600, 600); //添加面板1 frame.setContentPane(getPanel1()); // 添加面板2 //frame.setContentPane(getPanel2()); // 关闭窗体 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 布局 //frame.setLayout(new GridLayout(4, 0)); // 窗体可见 frame.setVisible(true); //窗体居中显示 frame.setLocationRelativeTo(null); } //创建面板1 private JPanel panel1 = null; private JLabel label = null; //分数 private JTextField jtf = null;//分数显示 private JLabel label2 = null;//时间 private JTextField jtf2 = null;//显示时间 public JPanel getPanel1(){ if(panel1 == null){ panel1 = new JPanel(); label = new JLabel("分数:"); jtf = new JTextField(10); label2 = new JLabel("时间:"); jtf2 = new JTextField(10); //添加组件 panel1.add(getBeginButton()); panel1.add(getStopButton()); panel1.add(getEndButton()); panel1.add(label); panel1.add(jtf); panel1.add(label2); panel1.add(jtf2); panel1.setLayout(new FlowLayout()); } return panel1; } //开始按钮 private JButton BeginButton = null; public JButton getBeginButton(){ if(BeginButton == null){ BeginButton = new JButton("开始游戏"); } return BeginButton; } //暂停按钮 private JButton StopButton = null; public JButton getStopButton(){ if(StopButton == null){ StopButton = new JButton("暂停"); } return StopButton; } //结束按钮 private JButton EndButton = null; public JButton getEndButton(){ if(EndButton == null){ EndButton = new JButton("结束"); } return EndButton; } // 创建面板2 private JPanel panel2 = null; public JPanel getPanel2() { if (panel2 == null) { panel2 = new JPanel(); panel2.add(getButton1()); panel2.add(getButton2()); panel2.add(getButton3()); panel2.add(getButton4()); panel2.add(getButton5()); panel2.add(getButton6()); panel2.add(getButton7()); panel2.add(getButton8()); panel2.add(getButton9()); panel2.add(getButton10()); panel2.add(getButton11()); panel2.add(getButton12()); panel2.add(getButton13()); panel2.add(getButton14()); panel2.add(getButton15()); panel2.add(getButton16()); panel2.setLayout(new GridLayout(4, 0)); // panel2.setLayout(new FlowLayout()); } return panel2; } // 按钮1 private JButton button1 = null; public JButton getButton1() { if (button1 == null) { button1 = new JButton("1"); button1.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { } }); } return button1; } // 按钮2 private JButton button2 = null; public JButton getButton2() { if (button2 == null) { button2 = new JButton("2"); button2.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { } }); } return button2; } 这就是我当时写的,因为是晚上,而且第二天还要上课,写到1点就不写了,里面有太多的bug,但是我的想法还是要做出最基础的效果可视界面出来,所以就成这样的了

当时还想了一下第二天要做的事情:

对组件位置的任意设置 双面板的可视性 制作秒表

唉,第一次想做这些东西,根本没有一个全局的概念,只要想到哪里做那里了。

还想上传一点图,然后自己第一次写这个博客,不知道上传成功了没有 >--<||

转载请注明原文地址: https://www.6miu.com/read-97342.html

最新回复(0)