package view;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class Start {
public static void main(String[] args) {
View v = new View();
}
}
/**
* 2048游戏界面
* @author xiaoan
*
*/
class View extends JFrame{
NumLabel[] jl; //数字标签
JPanel jp;
int index,num; //随机出现的标签,和标签上的数字
GridLayout g;
public View(){
jp = new JPanel();
jl = new NumLabel[16];
g = new GridLayout(4,4,5,5);
jp.setLayout(g);
this.add(jp);
for(int i=0;i<jl.length;i++){ //在界面上添加标签
jl[i] = new NumLabel();
jl[i].setHorizontalAlignment(SwingConstants.CENTER);
jl[i].setOpaque(true);
jp.add(jl[i]);
}
index = (int)(Math.random()*16);
jl[index].setText(String.valueOf(2));
index = (int)(Math.random()*16);
while(!jl[index].getText().equals("")){
index = (int)(Math.random()*15);
}
jl[index].setText(String.valueOf(2));
this.setBounds(Toolkit.getDefaultToolkit().getScreenSize().width/2-200,Toolkit.getDefaultToolkit().getScreenSize().height/2-200,400,400); //窗口大小位置
this.setTitle("2048"); //标题
this.setVisible(true); //窗口可见
this.setResizable(false); //禁止最大化
this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
this.addKeyListener(new Event());
}
private void ranNum(){
if(Math.random()>0.5){ //按按键后显示的数字
num = 4;
}else{
num = 2;
}
index = (int)(Math.random()*16);
while(!jl[index].getText().equals("")){
index = (int)(Math.random()*16);
}
jl[index].setText(String.valueOf(num));
}
class Event implements KeyListener{//上下左右按键
boolean b;
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP){
for(int i=4;i<8;i++){
if(jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-4].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-4].isAdd==false&&jl[i-4].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i-4].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i-4].isAdd=true;
b = true;
}
}
for(int i=8;i<12;i++){
if(jl[i-8].getText().equals("")&&jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-8].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-8].isAdd==false&&jl[i-8].getText().equals(jl[i].getText())&&jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-8].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i-8].isAdd=true;
b = true;
}else if(jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-4].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-4].isAdd==false&&jl[i-4].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i-4].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i-4].isAdd=true;
b = true;
}
}
for(int i=12;i<16;i++){
if(jl[i-12].getText().equals("")&&jl[i-8].getText().equals("")&&jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-12].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-12].isAdd==false&&jl[i-12].getText().equals(jl[i].getText())&&jl[i-8].getText().equals("")&&jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-12].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i-12].isAdd=true;
b = true;
}else if(jl[i-8].getText().equals("")&&jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-8].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-8].isAdd==false&&jl[i-8].getText().equals(jl[i].getText())&&jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-8].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i-8].isAdd=true;
b = true;
}else if(jl[i-4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-4].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-4].isAdd==false&&jl[i-4].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i-4].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i-4].isAdd=true;
b = true;
}
}
for(int i=0;i<jl.length;i++){
jl[i].isAdd=false;
}
}
if(e.getKeyCode()==KeyEvent.VK_DOWN){
for(int i=8;i<12;i++){
if(jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+4].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i+4].isAdd==false&&jl[i+4].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i+4].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i+4].isAdd=true;
b = true;
}
}
for(int i=4;i<8;i++){
if(jl[i+8].getText().equals("")&&jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+8].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i+8].isAdd==false&&jl[i+8].getText().equals(jl[i].getText())&&jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+8].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i+8].isAdd=true;
b = true;
}else if(jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+4].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i+4].isAdd==false&&jl[i+4].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i+4].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i+4].isAdd=true;
b = true;
}
}
for(int i=0;i<4;i++){
if(jl[i+12].getText().equals("")&&jl[i+8].getText().equals("")&&jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+12].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i+12].isAdd==false&&jl[i+12].getText().equals(jl[i].getText())&&jl[i+8].getText().equals("")&&jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+12].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i+12].isAdd=true;
b = true;
}else if(jl[i+8].getText().equals("")&&jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+8].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i+8].isAdd==false&&jl[i+8].getText().equals(jl[i].getText())&&jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+8].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i+8].isAdd=true;
b = true;
}else if(jl[i+4].getText().equals("")&&!jl[i].getText().equals("")){
jl[i+4].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i+4].isAdd==false&&jl[i+4].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i+4].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText("");
jl[i+4].isAdd=true;
b = true;
}
}
for(int i=0;i<jl.length;i++){
jl[i].isAdd=false;
}
}
if(e.getKeyCode()==KeyEvent.VK_LEFT){
for(int i=1;i<=13;i=i+4){
if(jl[i-1].getText().equals("")&&!jl[i].getText().equals("")){
jl[i-1].setText(jl[i].getText());
jl[i].setText("");
b = true;
}else if(jl[i-1].isAdd==false&&jl[i-1].getText().equals(jl[i].getText())&&!jl[i].getText().equals("")){
jl[i-1].setText(String.valueOf(Integer.parseInt(jl[i].getText())*2));
jl[i].setText
java 2048源代码
需积分: 50 70 浏览量
2014-12-11
10:41:03
上传
评论
收藏 16KB ZIP 举报
a1df212
- 粉丝: 0
- 资源: 1
最新资源
- DatabaseWatermarkingBasedonTextFormat
- -移动通信-网络课程设计与研究
- 基于Python的PCA人脸识别算法的原理及实现代码+文档详解.zip
- 甘肃移动全业务工程建设项目管理流程优化研究
- 549springboot + vue 民宿管理平台.zip (可运行源码+数据库文件+文档)
- ZArchiver.Pro_0.9.5.apk
- vmware环境配置.mp4
- 548springboot + vue 大学生社团活动平台.zip(可运行源码+数据库文件+文档)
- 微信小程序 辩论倒计时小程序源码 作业设计demo 计算机专业参考
- 深入探究文件IO,嵌入式Linux
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈