Java学习—124.2048代码

游戏的主界面的代码在类game_2048中。

本类主要包括两个方面:

一是布局。

二是动作,按钮的动作。

其中,动作又有菜单动作,按钮动作。而按钮动作又有多方面,在下一篇的代码中会有注释说明。

本篇帖的是布局。其初始化界面如下:

其布局代码如下:

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

public class game_2048 extends JFrame implements KeyListener,Runnable{

/**

*

*/

private static final long serialVersionUID = 1L;

private JButton[][] shuzi=new JButton[4][4];//游戏按钮

private JMenuBar menubar;//菜单栏

private JMenuItem item[];//菜单项

private JLabel label,labelcount,result;//计步,步数,结果标签

private int count=0,x,y,num,number;//步数,坐标,数字

private JButton start,cancel,up,down,left,right;//重新开始,退出游戏,上,下,左,右按钮

private String str,st;//取游戏按钮上的值

private boolean iswin;//判断是否胜利

Random ran = new Random();//随机值

public game_2048(){

super("2048小游戏—by张熹熹");

this.setSize(400, 600);

this.setLocationRelativeTo(this);

this.setResizable(false);//窗口最大化按钮

this.setVisible(true);

this.getContentPane().setForeground(SystemColor.inactiveCaption);

this.getContentPane().setBackground(Color.pink);

this.setLayout(null);

this.addmenu();//添加菜单

this.addanniu();//添加主按钮

this.addfunc();// 添加计分栏

this.addbu();//添加功能按钮

this.addresult();

}

public void addmenu(){

menuAct m=new menuAct();

menubar=new JMenuBar();

this.setJMenuBar(menubar);

String items[]={"开始游戏","游戏规则","关于我"};

item=new JMenuItem[items.length];

for(int i=0;i<items.length;i++){

item[i]=new JMenuItem(items[i]);

item[i].addActionListener(m);

menubar.add(item[i]);

}

}

public void addanniu(){

JPanel anniu=new JPanel();

anniu.setLayout(new GridLayout(4,4));

anniu.setLocation(40, 80);

anniu.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, new Color(252, 250, 242)));

anniu.setSize(320, 320);

anniu.setBackground(SystemColor.textText);

for (int i = 0; i < 4; i++) {

for (int j = 0; j < 4; j++) {

shuzi[i][j] = new JButton();

shuzi[i][j].setText(" ");

anniu.add(shuzi[i][j]);

}

}

this.getContentPane().add(anniu);

}

public void addfunc(){

JPanel func=new JPanel();

func.setLocation(10, 10);

func.setSize(380, 50);

func.setBackground(SystemColor.activeCaptionBorder);

label=new JLabel("计步");

label.setHorizontalAlignment(SwingConstants.RIGHT);

label.setFont(new Font("仿宋", Font.BOLD, 17));

label.setBounds(10, 0, 59, 50);

func.add(label);

labelcount = new JLabel(String.valueOf(count));

labelcount.setFont(new Font("宋体", Font.PLAIN, 27));

labelcount.setBounds(79, -1, 114, 50);

func.add(labelcount);

this.getContentPane().add(func);

}

public void addbu(){

btAction act=new btAction();

start=new JButton("重新开始");

start.setBounds(40, 433, 93, 40);

cancel=new JButton("退出游戏");

cancel.setBounds(40, 483, 93, 40);

up=new JButton("up");

down=new JButton("down");

left=new JButton("left");

right=new JButton("right");

up.setBounds(249, 433, 60, 40);

down.setBounds(249, 483, 60, 40);

left.setBounds(178, 483, 60, 40);

right.setBounds(320, 483, 60, 40);

start.addActionListener(act);

cancel.addActionListener(act);

up.addActionListener(act);

down.addActionListener(act);

left.addActionListener(act);

right.addActionListener(act);

this.addKeyListener(this);

this.getContentPane().add(start);

this.getContentPane().add(cancel);

this.getContentPane().add(up);

this.getContentPane().add(down);

this.getContentPane().add(left);

this.getContentPane().add(right);

}

public void addresult(){

result=new JLabel("游戏结束,如需再玩,请点击重新开始!");

result.setForeground(Color.red);

result.setBounds(40, 393, 280, 40);

result.setBackground(Color.black);

result.setVisible(false);

this.getContentPane().add(result);

}

(0)

相关推荐