Java学习—125.2048代码

本篇帖的是部分动作代码。

每个方法前都有注释说明本方法的功能。

//随机选取一个位置,并填入数字2.如果此位置中已有数字,那么换一个位置。

public void rule(){

x=ran.nextInt(4);

y=ran.nextInt(4);

//System.out.println(x+""+y);

String s=shuzi[x][y].getText();

if (s.equals(" ")) {

shuzi[x][y].setText("2");

count++;

} else {

rule();

}

}

//重新游戏。为游戏按钮中的每个按钮取消上面的数字,并重新调用rule()开始新一轮的游戏,并将几个变量设置为其初始值。

public void again(){

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

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

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

count=0;

iswin=false;

result.setVisible(false);

rule();

}

//判断游戏是否结束,是否胜利

public boolean win(String s){

//System.out.println(s);

int n=Integer.parseInt(s);

if(n==2048){

JOptionPane.showMessageDialog(this, "恭喜您,胜利了!");

iswin=true;

}

else if(n>2048)

{

JOptionPane.showMessageDialog(this, "数字大于2048,有误!!!游戏重新开始!");

iswin=true;

}

return iswin;

}

//向上合并的规则

public void uprule(){

if(iswin){

result.setVisible(true);

}

else{

int i=1,j=0;

for(i=1;i<4;i++){

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

str = shuzi[i][j].getText();

st = shuzi[i-1][j].getText();

if (st.equals(" ")&&!str.equals(" ")) {

shuzi[i-1][j].setText(str);

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

//System.out.println(str);

if(win(str))

break;

}

else if(!st.equals(" ")&&!str.equals(" ")){

num = Integer.parseInt(st);

number=Integer.parseInt(str);

num*=number;

//System.out.println(num);

String s=String.valueOf(num);

shuzi[i-1][j].setText(s);

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

if(win(s))

break;

}

}

}

if(!iswin)

rule();

}

}

//向左合并的规则

public void leftrule(){

if(iswin){

result.setVisible(true);

}

else{

int i=0,j=1;

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

for(j=1;j<4;j++){

str = shuzi[i][j].getText();

st = shuzi[i][j-1].getText();

if (st.equals(" ")&&!str.equals(" ")) {

shuzi[i][j-1].setText(str);

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

if(win(str))

break;

//System.out.println(str);

} else if(!st.equals(" ")&&!str.equals(" ")){

num = Integer.parseInt(st);

number=Integer.parseInt(str);

num*=number;

//System.out.println(num);

String s=String.valueOf(num);

shuzi[i][j-1].setText(s);

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

if(win(s))

break;

}

}

}

if(!iswin)

rule();

}

}

//向下合并的规则

public void downrule(){

if(iswin){

result.setVisible(true);

}

else{

int i=0,j=0;

for(i=0;i<3;i++){

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

str = shuzi[i][j].getText();

st = shuzi[i+1][j].getText();

if (st.equals(" ")&&!str.equals(" ")) {

shuzi[i+1][j].setText(str);

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

if(win(str))

break;

//System.out.println(str);

} else if(!st.equals(" ")&&!str.equals(" ")){

num = Integer.parseInt(st);

number=Integer.parseInt(str);

number*=num;

//System.out.println(number);

String s=String.valueOf(number);

shuzi[i+1][j].setText(s);

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

if(win(s))

break;

}

}

}

if(!iswin)

rule();

}

}

//向右合并的规则

public void rightrule(){

if(iswin){

result.setVisible(true);

}

else{

int i=0,j=0;

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

for(j=0;j<3;j++){

str = shuzi[i][j].getText();

st = shuzi[i][j+1].getText();

if (st.equals(" ")&&!str.equals(" ")) {

shuzi[i][j+1].setText(str);

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

if(win(str))

break;

//System.out.println(str);

} else if(!st.equals(" ")&&!str.equals(" ")){

num = Integer.parseInt(st);

number=Integer.parseInt(str);

number*=num;

//System.out.println(number);

String s=String.valueOf(number);

shuzi[i][j+1].setText(s);

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

if(win(s))

break;

}

}

}

if(!iswin)

rule();

}

}

(0)

相关推荐

  • 吊打面试官系列:说说Integer缓存范围

    回复"000"获取大量电子书 本文主要大致思路为: 不管从工作中还是面试,这篇文章都应该好好看完,本人认为是非常有用的. 案例 Integer是基本类型int的封装类.平时不管是入 ...

  • java中 equals 使用时的注意事项

    假设在比较 str 和 "hehe"两个字符串是否相等我们可以采用以下两种方式: (1) String str = null; if ("hehe".equal ...

  • Java学习—124.2048代码

    游戏的主界面的代码在类game_2048中. 本类主要包括两个方面: 一是布局. 二是动作,按钮的动作. 其中,动作又有菜单动作,按钮动作.而按钮动作又有多方面,在下一篇的代码中会有注释说明. 本篇帖 ...

  • Java学习—123.2048小游戏

    好久又没出现了,还好后台也没几条信息,我也不至于很愧疚,只是人气不太旺盛,好尴尬 最近稍微有点忙,也是自己放松了一下,哈哈...... 抱歉一下,之前给我信息的各位亲,由于时间有点久,我就不一一回复了 ...

  • Java学习-126.2048代码

    本篇帖的是按钮的代码. 因为按钮比较多,包括菜单项的动作,为了区分,我用了两个内部类来实现这两部分代码. //本类是Game_2048类的内部类,用来实现上.下.左.右四个按钮,以及重新开始和退出游戏 ...

  • java学习——121.Java连数据库代码说明

    本篇介绍用JDBC连接数据库时各代码的含义. 1.指定JDBC驱动程序 调用Java.lang.Class类的forName()方法指定JDBC驱动程序类. 要注意的是,不同的数据库其forName( ...

  • Java学习-注解和反射

    注解 java.Annotation Annotation的作用:可以呗其他程序读取 Annotation的格式 注解是:@注释名 在代码中存在,还可以添加一些参数 ​@SuppressWarning ...

  • Java学习-多线程

    多线程 任务(Task).进程(Process).线程(Thread) 进程的创建 1.继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用sta ...

  • Java学习-Mybatis

    Mybatis Maven依赖: <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependenc ...

  • Java 学习笔记

    您对计算机(电脑)有了解吗? 计算机组成 系统软件 直接和硬件交互的软件叫系统软件,例如 win7.win8.Linux.mac等操作系统 应用软件 通常在运行在系统软件上,也就是在系统软件上开发的软 ...

  • Java学习—问题

    上个月参加了一个考试,然后面试,准备.折腾了好久时间,身心俱疲,也没有更新公众号,后台有好多留言,但时间已过,我已经回不了了 请各位见谅...... 在后台看到一个小伙伴的留言,要解决一个问题, 本篇 ...