package LMS;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;

public class test {

public static void main(String[] args)
{
test pro = new test();
String[] num = new String[16];
num = pro.GetRandom();
pro.printArray(num);
int i = 0;
String temp = "";

while (true)
{
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
if (pro.isWin(num))
{
System.out.println("You win!");
break;
}
if (n == 1)
{
for (i = 0; i < 16; i++)
{
if (num[i] == " " && i != 0 && i != 1 && i != 2 && i != 3)
{
temp = num[i];
num[i] = num[i - 4];
num[i - 4] = temp;
try{clear();}catch(AWTException e){}
pro.printArray(num);
break;
}
}
}
else if (n == 2)
{
for (i = 0; i < 16; i++)
{
if (num[i] == " " && i != 12 && i != 13 && i != 14 && i != 15)
{
temp = num[i];
num[i] = num[i + 4];
num[i + 4] = temp;
try{clear();}catch(AWTException e){}
pro.printArray(num);
break;
}
}
}
else if (n == 3)
{
for (i = 0; i < 16; i++)
{
if (num[i] == " " && i != 0 && i != 4 && i != 8 && i != 12)
{
temp = num[i];
num[i] = num[i - 1];
num[i - 1] = temp;
try{clear();}catch(AWTException e){}
pro.printArray(num);
break;
}
}
}
else if (n == 4)
{
for (i = 0; i < 16; i++)
{
if (num[i] == " " && i != 3 && i != 7 && i != 11 && i != 15)
{
temp = num[i];
num[i] = num[i + 1];
num[i + 1] = temp;
try{clear();}catch(AWTException e){}
pro.printArray(num);
break;
}
}
}
}

}

public static void clear() throws AWTException
{
Robot r = new Robot();
r.delay(100);
r.mousePress(InputEvent.BUTTON3_MASK); // 按下鼠标右键
r.mouseRelease(InputEvent.BUTTON3_MASK); // 释放鼠标右键
r.keyPress(KeyEvent.VK_CONTROL); // 按下Ctrl键
r.keyPress(KeyEvent.VK_R); // 按下R键
r.keyRelease(KeyEvent.VK_R); // 释放R键
r.keyRelease(KeyEvent.VK_CONTROL); // 释放Ctrl键
r.delay(100);
}

boolean isWin(String[] num)
{
for (int i = 0; i < 16; i++)
{
if (i == 0 && num[i]!=" ")
{
return false;
}
if (num[i] != String.valueOf(i))
{
return false;
}
}
return true;
}

void printArray(String[] num)
{
for (int i = 0; i < 16; i++)
{
if(num[i] == " ")
{
System.out.print(num[i]+" ");
}
else if(Integer.valueOf(num[i])>9)
{
System.out.print(num[i]+" ");
}
else if(Integer.valueOf(num[i])<=9)
{
System.out.print(num[i]+" ");
}
if ((i + 1) % 4 == 0)
{
System.out.println();
}
}
}

String[] GetRandom()
{
String[] num = new String[16];
int i = 0;
for (i = 0; i < 16; i++)
{
if (i == 0)
{
num[i] = " ";
}
else
{
num[i] = String.valueOf(i);
}
}
Random rd = new Random();
for (i = 0; i < 16; i++)
{
int index = rd.nextInt(num.length - i);
String temp = "";
temp = num[index];
num[index] = num[num.length - i - 1];
num[num.length - i - 1] = temp;
}
return num;
}
}

魔方---java的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 算法笔记_233:二阶魔方旋转(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下:x轴正向:绿x轴 ...

  3. Java实现二阶魔方旋转

    魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴反向:橙 z轴正向: ...

  4. Java实现第八届蓝桥杯魔方状态

    魔方状态 题目描述 二阶魔方就是只有2层的魔方,只由8个小块组成. 如图p1.png所示. 小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色,如下: 前面:橙色 右面:绿色 上面:黄色 ...

  5. 2016-2017-2 《Java程序设计》预备作业2总结

    2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...

  6. JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...

  7. (转)JAVA 调用matlab

    本文仅用于学习. 原文地址链接:http://blog.csdn.net/wannshan/article/details/5907877 前段时间摸索了java调用matlab东西,不说学的有多深, ...

  8. 42-2017蓝桥杯b java

    1.购物单    小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.    这不,XX大促销又来了!老板夫人开出了长长的购物单,都 ...

  9. Java之IO(七)ObjectInputStream和ObjectOutputStream

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7003536.html 1.前言 本章介绍Java字节流中重要的成员,对象流ObjectInputStream和O ...

随机推荐

  1. 洛谷P3398 仓鼠找suger

    传送门啦 思路: 那么从 $ A $ 到 $ B $ 可以分解成 先从 $ A $ 到 $ X $ 再从 $ X $ 到 $ B $ ... 另一个同理 假设能相遇 那么 要么在 $ A $ 到 $ ...

  2. word 内容控件属性编辑

    场景: 别人发给自己一份word模板,基于统一性,里面包含了很多“内容控件”,一般情况下,只需要根据内容控件进行编辑即可,但如果想对内容控件本身做编辑操作,例如删除等. 操作: 单击 文件>选项 ...

  3. python数据类型小测试

    # 1. 有两个列表,其中一个列表a,每一项映射到另一个列表b每一项,先对a排序,要求b的中映射关系位置保持不变,给b也按照排序, (b的8对应a的[1,2], 7对应[3,4] ... ) a = ...

  4. python全栈开发day112-CBV、flask_session、WTForms

    1.Flask 中的 CBV class Index(views.MethodView): # methods = ["POST"] # decorators = [war,nei ...

  5. 初识Python,简单初学代码

    第一个自己手写的代码~ If 与 Elif #!/usr/bin/env python # - * - coding:uft8 - * - Inp = input ( '请输入你的会员级别' ) if ...

  6. (转)InFluxDB数据库使用手册

    InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...

  7. Egret的Shape

    class ShapeTest extends egret.DisplayObjectContainer { public constructor() { super(); this.addEvent ...

  8. react-native run-android时 SDK location not found.报错

    报错 原因 缺少local.properties文件(SDK location) 解决 方法一:在android Studio中打开项目android目录,会自动创建local.properties文 ...

  9. 移动端滑动效果 swiper 4.0.7

    <!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...

  10. QT杂记(网上资料整理而成)

    1.新建工程时,Qwidget和Qdialog和Qmianwindow三者的区别? QWidget是所有图形界面的基类QMainWindow是一个提供了菜单.工具条的程序主窗口QDialog是对话框. ...