首页 > 代码库 > 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实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。