闲来无事,用java写了一个魔方小程序。附源码

使用三维数组。相对来说还是简单。呵呵。

import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class Cube {long operationTimes=0;Random rdm = new Random();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 void wF(int n){String tmp1[] = {"tmp","tmp","tmp"};String tmp2[] = {"t","t","t"};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==4){return;}else if(n==3){n = 1;}else if(n == 2){n =2;}else if(n == 1){n =3;}String tmp1[] = {"tmp","tmp","tmp"};String tmp2[] = {"t","t","t"};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){}public void bB(int n){}public void gF(int n){}public void gB(int n){}public void rF(int n){}public void rB(int n){}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++){System.out.println(cube[i][j][k]+"->"+cube[i][0][0]);try{if(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 log(long i,int j, int k){System.out.println("第"+i+"次,动作是"+j+",执行"+k+"次");}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 rangePlay(){while(!isSixFaceRecover()){int rMethod = rdm.nextInt(12);int rTurn = rdm.nextInt(4);if(rMethod==0){this.wF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==1){this.wB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==2){this.yF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==3){this.yB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==4){this.bF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==5){this.bB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==6){this.gF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==7){this.gB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==8){this.rF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==9){this.rB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==10){this.oF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==11){this.oB(rTurn);operationTimes++;log(operationTimes,rMethod,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(4);if(rMethod==0){this.wF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==1){this.wB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==2){this.yF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==3){this.yB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==4){this.bF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==5){this.bB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==6){this.gF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==7){this.gB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==8){this.rF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==9){this.rB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==10){this.oF(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}else if(rMethod==11){this.oB(rTurn);operationTimes++;log(operationTimes,rMethod,rTurn);}}System.out.println("cube已经被操作"+i+"次");}public static void main(String[] args){Cube c = new Cube();c.rangePlay(10);c.showCube();c.rangePlay();}
}

闲来无事,用java写了一个魔方小程序。附源码相关推荐

  1. java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  2. 基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B ...

  3. 关于美团:零基础搭建获利的美团饿了么优惠券CPS小程序附源码

    关于美团:零基础搭建获利的美团饿了么优惠券CPS小程序附源码 下面是无裂变版本的搭建教程. 源码地址:http://y.mybei.cn 部署步骤 部署后台,填资料 登录后台 http://q.myb ...

  4. 手把手教你搭建美团饿了么电影票外卖cps小程序 附源码

    手把手教你搭建美团饿了么电影票外卖cps小程序 附源码 外卖红包项目的优势 1.刚需:吃饭是每日刚需,尤其是城市白领,上班族,宅男宅女,等群体点外卖的需求,需求更是高频率(每天). 2.门槛低:平台门 ...

  5. 通信录管理系统--我的第一个C++小程序(源码可用)

    java转c++的第三天,写完了人生中的第一个c++小程序,啥也不说了,直接贴源码: 注释里面是我写的时候的一些思考和写完之后的经验教训,给自己和其他初学c++的猿友们加油! //教训: //①(已改 ...

  6. 一口气用Python写了13个小游戏 (附源码)

    大家好,今天给大家分享13个游戏源码,可以自己复现玩玩,研究下里面的编程逻辑,对学习编程(特别是初学者)应该会有很大帮助. 由于文章较长,大家记得滑到文末点个赞哈- 1.吃金币 源码分享: impor ...

  7. Tkinter超市收银小程序(附源码),看完这一篇你还不会Tkinter吗,快来试试吧

    Tkinter超市收银小程序 引言 超市收银小程序,一个小例子快速上手Tkiner使用,虽然最近有好多实验报告要写,但是我还是给大家写一个小例子,之前就用C.C++,java.特别是C#最好用,做过图 ...

  8. 零基础搭建获利的美团饿了么优惠券CPS小程序(附源码)

    1.先上图 2.前言 某天下午,我正在公司认真的写着代码,突然我的手机弹了一个通知,我赶紧抓起手机看看(给自己一个摸鱼的理由) 让我看看到底是谁发消息打扰我认真的工作啊. 害,原来是某个群转发了一个外 ...

  9. Python程序打包成.exe文件(弹窗恶搞小程序附源码)

    0.先来张效果图: 1.安装pyinsatller 打开命令行窗口,输入如下指令:pip3 install pyinstaller 我的已经安装过,所以这样显示. 2.使用pyinstaller打包P ...

最新文章

  1. 赤兔四足机器人的作用_跑得快,打不死!清华大学开发“小强”机器人,壮汉狂踩也挡不住前进步伐...
  2. Notepad++插件总结
  3. 网站运维技术与实践之服务器监测常用命令
  4. mfc指示灯报警显示_常用汽车仪表指示灯大全,看完再也不用担心不认识了
  5. WebView起步1
  6. Oracle数据库个人整理常用的表空间、用户、授权操作
  7. win11原版iso如何安装 Windows11原版iso安装步骤方法
  8. asp.net夜话之十一:web.config详解
  9. ES6的promise对象应该这样用
  10. html表单提交数据保存到mysql中_php – Canonical:如何将HTML表单数据保存到MySQL数据库中...
  11. 自己做的商城系统流程图,分享给大家.
  12. 安卓TV开发遇到的那些坑
  13. Identifying a Blocking Query After the Issuing Session Becomes Idle
  14. 国科大学习资料--人工智能原理与算法-第七次作业解析(学长整理)
  15. Matplotlib画图之调整字体大小
  16. springboot游泳池管理系统
  17. Fractal Streets
  18. git add出现 “fatal: in unpopulated submodule XXX“ 错误
  19. 刚子扯谈:市场供需关系决定生存
  20. Python搭建博客网站小结

热门文章

  1. 关于对象标注文件的转换(xml转json)
  2. 【论文笔记】ANR: Aspect-based Neural Recommender 基于方面的神经网络推荐系统
  3. PyCharm Community Edition 简单汉化(软件本身功能)
  4. android 会话通讯插件,Android版添加phonegap--融云即时通讯插件教程
  5. Oracle文件的导出
  6. Python经纬度转换地理坐标(逆地理编码)
  7. 3D建模巨头Twaver--入门篇2
  8. DNS域名 网址后缀的含义
  9. 洛谷P4707 重返现世(扩展MinMax容斥+dp)
  10. 中国地址选择xml 文件