首页 电脑 电脑学堂 查看内容

2048游戏的Java实现

2014-12-13 15:54 635 0

摘要: 写的比较匆忙,功能较为单一,界面丑,操作步数应该还能优化。最终还是要写AI,但好像没那么简单,写了几个关于格局评价的函数,还得继续学习。。。上下左右方向键操作。源代码:[java] view...
关键词: nbsp import int Random numlabellist new scorelabel public JLabel 格子

写的比较匆忙,功能较为单一,界面丑,操作步数应该还能优化。最终还是要写AI,但好像没那么简单,写了几个关于格局评价的函数,还得继续学习。。。上下左右方向键操作。源代码:[java] view plaincopyprint?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 = Ran
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部