菜鸟娱乐的。
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class Cube {
long operationTimes=0;
Calendar c = Calendar.getInstance();
long t1 = System.currentTimeMillis();
long t2,tmpTime;
int intervalTime = 10000;//log展示间隔时间
String startTime = new SimpleDateFormat("yyyy.MM.dd_HH:mm:ss z").format(new Date());
Random rdm = new Random();
String tmp1[] = {"tmp","tmp","tmp"};
String tmp2[] = {"t","t","t"};
String w[][] = {{"white","white","white"},{"white","white","white"},{"white","white","white"},{"white","white","white"}};
String y[][] = {{"yellow","yellow","yellow"},{"yellow","yellow","yellow"},{"yellow","yellow","yellow"},{"yellow","yellow","yellow"}};
String b[][] = {{"blue","blue","blue"},{"blue","blue","blue"},{"blue","blue","blue"},{"blue","blue","blue"}};
String g[][] = {{"green","green","green"},{"green","green","green"},{"green","green","green"},{"green","green","green"}};
String r[][] = {{"red","red","red"},{"red","red","red"},{"red","red","red"},{"red","red","red"}};
String o[][] = {{"orange","orange","orange"},{"orange","orange","orange"},{"orange","orange","orange"},{"orange","orange","orange"}};
String cube[][][] = {w,y,b,g,r,o};
public boolean isInterval(){
t2 = System.currentTimeMillis();
if(t2-tmpTime >intervalTime){
tmpTime =t2;
return true;
}else return false;
}
public void showCostTime(){
t2 = System.currentTimeMillis();
c.setTimeInMillis(t2-t1);
// String endTime = new SimpleDateFormat("yyyy.MM.dd_HH:mm:ss z").format(c.getTime());
String endTime = new SimpleDateFormat("yyyy.MM.dd_HH:mm:ss z").format(new Date());
System.out.println("从"+ startTime + "开始,到"+ endTime + "结束,共消耗"+ c.get((c.HOUR_OF_DAY)-9) + "小时"+c.get(c.MINUTE) +"分"+ c.get(c.SECOND) +"秒");
}
public void log(long i,String action, int k){
if(isInterval()){
System.out.println("第"+i+"次随机操作,动作是"+action+",执行"+(k+1)+"次");
}
}
public void showCube(){
for(int i=0;i<cube.length;i++){
for(int j=0;j<cube[i].length;j++){
for(int k=0;k<cube[i][j].length;k++){
System.out.print(cube[i][j][k]);
System.out.print(",");
}
System.out.println();
}
System.out.println();
}
}
public void wF(int n){
for(int j=0;j<=n;j++){
tmp1 = w[0];
tmp2 = r[0];
for(int i=1;i<w.length;i++){
w[i-1] = w[i];
}
w[w.length-1] = tmp1;
r[0] = b[1];
b[1] = o[2];
o[2] = g[3];
g[3] = tmp2;
}
}
public void wB(int n){
if(n==2){
n = 0;
}else if(n == 1){
n =1;
}else if(n == 0){
n =2;
}
for(int j=0;j<n;j++){
tmp1 = w[0];
tmp2 = r[0];
for(int i=1;i<w.length;i++){
w[i-1] = w[i];
}
w[w.length-1] = tmp1;
r[0] = b[1];
b[1] = o[2];
o[2] = g[3];
g[3] = tmp2;
}
}
//其他几个颜色转动的方法还没有补充。有兴趣可以自己补充。
public void yF(int n){
}
public void yB(int n){
}
public void bF(int n){
tmp1 = b[1];
tmp2 = w[1];
b[1] = b[2];
b[2] = b[3];
b[3] = b[0];
b[0] = tmp1;
w[1] = r[3];
r[3] = y[1];
y[1] = o[3];
o[3] = tmp2;
}
public void bB(int n){
if(n==0){
n = 2;
}else if(n == 1){
n = 1;
}else if(n == 2){
n = 0;
}
for(int j=0;j<=n;j++){
tmp1 = b[1];
tmp2 = w[1];
b[1] = b[2];
b[2] = b[3];
b[3] = b[0];
b[0] = tmp1;
w[1] = r[3];
r[3] = y[1];
y[1] = o[3];
o[3] = tmp2;
}
}
public void gF(int n){
}
public void gB(int n){
}
public void rF(int n){
for(int j=0;j<=n;j++){
tmp1 = r[0];
tmp2 = w[0];
r[0] = r[3];
r[3] = r[2];
r[2] = r[1];
r[1] = r[0];
r[0] = tmp1;
}
w[0] = g[2];
g[2] = y[0];
y[0] = b[2];
b[2] = w[0];
w[0] = tmp2;
}
public void rB(int n){
if(n==0){
n = 2;
}else if(n == 1){
n = 1;
}else if(n == 2){
n = 0;
}
for(int j=0;j<=n;j++){
tmp1 = r[0];
tmp2 = w[0];
r[0] = r[3];
r[3] = r[2];
r[2] = r[1];
r[1] = r[0];
r[0] = tmp1;
}
w[0] = g[2];
g[2] = y[0];
y[0] = b[2];
b[2] = w[0];
w[0] = tmp2;
}
public void oF(int n){
}
public void oB(int n){
}
public boolean isSixFaceRecover(){
for(int i=0;i<cube.length;i++){
for(int j=0;j<cube[i].length;j++){
for(int k=0;k<cube[i][j].length;k++){
try{
if(cube[i][j][k]!=cube[i][0][0]){
// if(isInterval()){
// System.out.println(cube[i][j][k]+"->"+cube[i][0][0]);
// System.out.println("cube[i][j][k]:"+i+","+j+","+k+"与第一个颜色不一致");
// }
return false;
}
}catch(ArrayIndexOutOfBoundsException e){
// System.out.println("cube[i][j][k]:"+i+","+j+","+k);
e.printStackTrace();
}
}
}
}
return true;
}
public void rangePlay(){
while(!isSixFaceRecover()){
int rMethod = rdm.nextInt(12);
int rTurn = rdm.nextInt(3);
if(rMethod==0){
this.wF(rTurn);
operationTimes++;
log(operationTimes,"wF",rTurn);
}else if(rMethod==1){
this.wB(rTurn);
operationTimes++;
log(operationTimes,"wB",rTurn);
}else if(rMethod==2){
this.yF(rTurn);
operationTimes++;
log(operationTimes,"yF",rTurn);
}else if(rMethod==3){
this.yB(rTurn);
operationTimes++;
log(operationTimes,"yB",rTurn);
}else if(rMethod==4){
this.bF(rTurn);
operationTimes++;
log(operationTimes,"bF",rTurn);
}else if(rMethod==5){
this.bB(rTurn);
operationTimes++;
log(operationTimes,"bB",rTurn);
}else if(rMethod==6){
this.gF(rTurn);
operationTimes++;
log(operationTimes,"gF",rTurn);
}else if(rMethod==7){
this.gB(rTurn);
operationTimes++;
log(operationTimes,"gB",rTurn);
}
else if(rMethod==8){
this.rF(rTurn);
operationTimes++;
log(operationTimes,"rF",rTurn);
}else if(rMethod==9){
this.rB(rTurn);
operationTimes++;
log(operationTimes,"rB",rTurn);
}else if(rMethod==10){
this.oF(rTurn);
operationTimes++;
log(operationTimes,"oF",rTurn);
}else if(rMethod==11){
this.oB(rTurn);
operationTimes++;
log(operationTimes,"oB",rTurn);
}
}
showCube();
System.out.println("cube经过"+operationTimes+"次随机操作后复原");
}
public void rangePlay(int i){
for(int m=0;m<i;m++){
int rMethod = rdm.nextInt(12);
int rTurn = rdm.nextInt(3);
if(rMethod==0){
this.wF(rTurn);
operationTimes++;
log(operationTimes,"wF",rTurn);
}else if(rMethod==1){
this.wB(rTurn);
operationTimes++;
log(operationTimes,"wB",rTurn);
}else if(rMethod==2){
this.yF(rTurn);
operationTimes++;
log(operationTimes,"yF",rTurn);
}else if(rMethod==3){
this.yB(rTurn);
operationTimes++;
log(operationTimes,"yB",rTurn);
}else if(rMethod==4){
this.bF(rTurn);
operationTimes++;
log(operationTimes,"bF",rTurn);
}else if(rMethod==5){
this.bB(rTurn);
operationTimes++;
log(operationTimes,"bB",rTurn);
}else if(rMethod==6){
this.gF(rTurn);
operationTimes++;
log(operationTimes,"gF",rTurn);
}else if(rMethod==7){
this.gB(rTurn);
operationTimes++;
log(operationTimes,"gB",rTurn);
}
else if(rMethod==8){
this.rF(rTurn);
operationTimes++;
log(operationTimes,"rF",rTurn);
}else if(rMethod==9){
this.rB(rTurn);
operationTimes++;
log(operationTimes,"rB",rTurn);
}else if(rMethod==10){
this.oF(rTurn);
operationTimes++;
log(operationTimes,"oF",rTurn);
}else if(rMethod==11){
this.oB(rTurn);
operationTimes++;
log(operationTimes,"oB",rTurn);
}
}
System.out.println("cube已经被操作"+i+"次");
}
public static void main(String[] args){
Cube c = new Cube();
c.rangePlay(10);
c.showCube();
c.rangePlay();
c.showCostTime();
}
}
更多详细信息请查看
java教程网 http://www.itchm.com/forum-59-1.html
分享到:
相关推荐
【标题】"魔方复原方法JAVA 3D动画演示" 涉及的主要知识点有以下几个方面: 1. **JAVA编程语言**:本程序是用Java语言编写的,这意味着它利用了Java的强大功能和跨平台特性。Java允许开发人员编写一次代码,然后在...
标题中的“解魔方程序Java源码”指的是一个使用Java编程语言编写的程序,它的主要功能是解决魔方还原的问题。在计算机科学中,这样的程序通常涉及到算法设计,特别是优化和搜索算法,如深度优先搜索(DFS)、广度...
在这个特定的项目中,"使用java 3d编写的魔方程序"是一个利用Java 3D库实现的魔方模拟器。魔方是一种极具挑战性的智力玩具,通过编程实现其在虚拟空间中的旋转和复原,不仅展示了编程技术,也体现了对数学和逻辑思维...
【Java自制魔方模拟游戏详解】 Java自制魔方模拟游戏是一种基于编程技术实现的互动娱乐软件,它允许用户在虚拟环境中体验还原魔方的乐趣。在这个项目中,主要使用了Java编程语言,结合3D图形库来创建逼真的魔方模型...
四维魔方的Java小程序是一种基于Java编程语言开发的交互式应用程序,它为用户提供了体验四维魔方的乐趣。在传统的三维度空间中,我们熟悉的魔方已经具有相当的挑战性,而四维魔方则进一步拓展了这个概念,引入了额外...
本程序能够帮助你复原被打乱的魔方,使用时将你手上魔方每一面的颜色输入到程序中,程序会自动为你计算出一套转发,按照转发,可以将魔方六个面复原。 代码是我大学时候写的,那时候刚学会C语言,代码非常烂,但是...
Applet是Java的一种小程序,可以在支持Java的Web浏览器中直接执行,为用户提供丰富的交互体验。 在提供的压缩包文件中,我们有以下几个关键组件: 1. **warp.class**:这是一个编译后的Java类文件,通常包含魔方...
【Java魔方小游戏(Swing)】是一款使用Java编程语言开发的桌面应用程序,它利用了Swing库来构建用户界面,提供了一种交互式的魔方游戏体验。Swing是Java Standard Edition (Java SE)的一部分,提供了丰富的组件和...
java3d 的魔方实例,不错的源程序代码。互相学习
上顺拧、上逆拧、右顺拧、右逆拧、前顺拧、前逆拧、左顺拧(顺:顺时针,逆:逆时针)。其他如后顺拧等也开发出来,以备所需。 界面专家:无论多么糟的界面,试着做一个,开创一下先河。不要用VB。列表显示...
Java 3D 魔方程序设计 魔方java源代码.pdf 文件提供了一个完整的 Java 3D 魔方程序设计的实现,涵盖了 Java 3D 编程的多个方面,包括场景图、变换、动画、交互、图形学等。本文将对该程序进行详细的分析,并对其中...
在描述中提到的“魔方复原的源码”指的是利用计算机程序模拟人类解决魔方的策略。魔方(Rubik's Cube)是一种三维拼图玩具,由匈牙利建筑师厄尔诺·鲁比克于1974年发明,具有极高的智力挑战性。复原魔方通常需要理解...
【魔方小程序】是一款专为魔方爱好者设计的学习工具,由成都信息工程学院计算机数字媒体专业的刘思建精心打造。这款小程序集成了丰富的魔方教学资源和实用功能,旨在帮助用户提升魔方技巧,享受解谜的乐趣。 首先,...
【Java实现简单魔方】 在计算机编程中,模拟真实世界的物体,如魔方,是一种有趣的挑战,也是学习面向对象编程和算法的好方法。本项目基于Java语言,旨在创建一个简单的魔方模拟器,用户可以在Eclipse集成开发环境...
【魔方复原程序】是一种专门针对魔方爱好者和初学者设计的软件工具,它能够帮助用户学习和掌握魔方的复原技巧。魔方,作为一种极具挑战性的智力玩具,自1974年问世以来,吸引了全球无数爱好者。这款程序的出现,无疑...
Java 3D魔方源代码是一个非常有趣的学习资源,它结合了编程技术与娱乐元素,为开发者提供了一个深入了解Java 3D图形编程的机会。在这个项目中,你可以学习到如何使用Java语言来创建复杂的3D图形,并实现交互式游戏...
在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)进行游戏开发,特别是针对一个特殊的案例——开发一个拧魔方的程序。这个程序的源码已经提供,旨在帮助那些对游戏编程感兴趣的朋友们学习和探索。让...
【Java魔方游戏】是一款利用Java编程语言实现的模拟魔方旋转、解谜的游戏软件。在这款游戏中,玩家可以通过键盘或鼠标操作,体验魔方的旋转乐趣,挑战自己的空间思维和逻辑推理能力。魔方游戏的实现涉及了计算机图形...
在这个“Java3D魔方代码”项目中,我们可以学习到如何利用Java3D库来实现一个交互式的魔方模型。这个程序不仅能够绘制出魔方的外观,还具有基本的缩放和旋转功能,使得用户可以从不同角度观察和理解魔方的结构。 ...
简单的java控制台,n阶数字魔方的打印,代码工整,注释齐全