📄 rubikcanvas.java
字号:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import java.util.Random;
import java.util.*;
import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class RubikCanvas extends Canvas {
private int n;
private int r;
private int x1 ;
private int y1 ;
private int x2 ;
private int y2 ;
int eyeshot = 0 ;
int ForwardX[] = new int [10];
int UpX[] = new int [10];
int LeftX[] = new int [10];
int BackX[] = new int [10];
int DownX[] = new int [10];
int RightX[] = new int [10];
int ForwardY[] = new int [10];
int UpY[] = new int [10];
int LeftY[] = new int [10];
int BackY[] = new int [10];
int DownY[] = new int [10];
int RightY[] = new int [10];
int ForwardRx[] = new int [10];
int UpRx[] = new int [10];
int LeftRx[] = new int [10];
int BackRx[] = new int [10];
int DownRx[] = new int [10];
int RightRx[] = new int [10];
int ForwardRy[] = new int [10];
int UpRy[] = new int [10];
int LeftRy[] = new int [10];
int BackRy[] = new int [10];
int DownRy[] = new int [10];
int RightRy[] = new int [10];
int ForwardColor[] = new int [10];
int UpColor[] = new int [10];
int LeftColor[] = new int [10];
int BackColor[] = new int [10];
int DownColor[] = new int [10];
int RightColor[] = new int [10];
public RubikCanvas(){
ForwardColor[0]=0x00404040;
if ( getWidth() * 5 < getHeight() * 9 ) {
r =getWidth()/18;
}else {
r =getHeight()/10;
}
x1 = getWidth()/2-r*8;
y1 = getHeight()/2-r*8;
x2 = getWidth()/2-r*8;
y2 = getHeight()/2-r*8;
ColorInit();
ForwardLeftUp();
ColorRandom();
}
protected void paint(Graphics g) {
String imei = System.getProperty("IMEI");
g.setColor(127,127,127);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,255,255);
g.drawString("pixel " + getWidth()+" X "+getHeight(),getWidth()/2,0,Graphics.TOP|Graphics.HCENTER) ;
g.drawString("step数: "+ n ,0,getHeight(),Graphics.BOTTOM|Graphics.LEFT) ;
int i;
if ( ForwardColor[0] == 1 ){
for ( i = 1; i < 10 ; i++ ) {
g.setColor(ForwardColor[i]);
g.fillArc(ForwardX[i],ForwardY[i],ForwardRx[i],ForwardRy[i],0,360);
}
}else {
for ( i = 1; i < 10 ; i++ ) {
g.setColor(ForwardColor[i]);
g.drawArc(ForwardX[i],ForwardY[i],ForwardRx[i],ForwardRy[i],0,360);
}
}
if ( UpColor[0] == 1 ){
for ( i = 1; i < 10 ; i++ ) {
g.setColor(UpColor[i]);
g.fillArc(UpX[i],UpY[i],UpRx[i],UpRy[i],0,360);
}
}else {
for ( i = 1; i < 10 ; i++ ) {
g.setColor(UpColor[i]);
g.drawArc(UpX[i],UpY[i],UpRx[i],UpRy[i],0,360);
}
}
if ( LeftColor[0] == 1 ){
for ( i = 1; i < 10 ; i++ ) {
g.setColor(LeftColor[i]);
g.fillArc(LeftX[i],LeftY[i],LeftRx[i],LeftRy[i],0,360);
}
}else {
for ( i = 1; i < 10 ; i++ ) {
g.setColor(LeftColor[i]);
g.drawArc(LeftX[i],LeftY[i],LeftRx[i],LeftRy[i],0,360);
}
}
if ( BackColor[0] == 1 ){
for ( i = 1; i < 10 ; i++ ) {
g.setColor(BackColor[i]);
g.fillArc(BackX[i],BackY[i],BackRx[i],BackRy[i],0,360);
}
}else {
for ( i = 1; i < 10 ; i++ ) {
g.setColor(BackColor[i]);
g.drawArc(BackX[i],BackY[i],BackRx[i],BackRy[i],0,360);
}
}
if ( DownColor[0] == 1 ){
for ( i = 1; i < 10 ; i++ ) {
g.setColor(DownColor[i]);
g.fillArc(DownX[i],DownY[i],DownRx[i],DownRy[i],0,360);
}
}else {
for ( i = 1; i < 10 ; i++ ) {
g.setColor(DownColor[i]);
g.drawArc(DownX[i],DownY[i],DownRx[i],DownRy[i],0,360);
}
}
if ( RightColor[0] == 1 ){
for ( i = 1; i < 10 ; i++ ) {
g.setColor(RightColor[i]);
g.fillArc(RightX[i],RightY[i],RightRx[i],RightRy[i],0,360);
}
}else {
for ( i = 1; i < 10 ; i++ ) {
g.setColor(RightColor[i]);
g.drawArc(RightX[i],RightY[i],RightRx[i],RightRy[i],0,360);
}
}
g.setColor(ForwardColor[5]);
g.drawLine(ForwardX[1]+r*0,ForwardY[1]+r*0, ForwardX[1]+r*6,ForwardY[1]+r*0);
g.drawLine(ForwardX[1]+r*0,ForwardY[1]+r*2, ForwardX[4]+r*6,ForwardY[1]+r*2);
g.drawLine(ForwardX[1]+r*0,ForwardY[1]+r*4, ForwardX[7]+r*6,ForwardY[1]+r*4);
g.drawLine(ForwardX[1]+r*0,ForwardY[1]+r*6, ForwardX[1]+r*6,ForwardY[1]+r*6);
g.drawLine(ForwardX[1]+r*0,ForwardY[1]+r*0, ForwardX[1]+r*0,ForwardY[1]+r*6);
g.drawLine(ForwardX[1]+r*2,ForwardY[1]+r*0, ForwardX[1]+r*2,ForwardY[1]+r*6);
g.drawLine(ForwardX[1]+r*4,ForwardY[1]+r*0, ForwardX[1]+r*4,ForwardY[1]+r*6);
g.drawLine(ForwardX[1]+r*6,ForwardY[1]+r*0, ForwardX[1]+r*6,ForwardY[1]+r*6);
}
public void ColorInit() {
n = 250 - 2 ;
int i;
for ( i = 1; i < 10 ; i++ ) {
ForwardColor[i] = 0x00FF0000;
UpColor[i] = 0x000000FF;
LeftColor[i] = 0x00000000;
BackColor[i] = 0x0000FF00;
DownColor[i] = 0x00cc9900;
RightColor[i] = 0x00FFFFFF;
}
}
public void ColorRandom() {
n=0;
Random ran = new Random((new Date()).getTime());
int t;
int i;
for ( i = 0; i < 24 ; i++ ) {
t = ran.nextInt() % 6;
t = Math.abs(t);
switch(t) {
case 0 :
ForwardContrarotate();
break ;
case 1 :
BackContrarotate();
break ;
case 2 :
LeftContrarotate();
break ;
case 3 :
RightContrarotate();
break ;
case 4 :
UpContrarotate();
break ;
case 5 :
DownContrarotate();
break ;
}
}
}
public void ForwardTurnDown() {
int MyColor[] = new int [10];
int i;
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = ForwardColor[i];
ForwardColor[i] = UpColor[i];
UpColor[i] = BackColor[i];
BackColor[i] = DownColor[i];
DownColor[i] = MyColor[i];
}
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = LeftColor[i];
}
LeftColor[1]=MyColor[7];
LeftColor[2]=MyColor[4];
LeftColor[3]=MyColor[1];
LeftColor[4]=MyColor[8];
LeftColor[5]=MyColor[5];
LeftColor[6]=MyColor[2];
LeftColor[7]=MyColor[9];
LeftColor[8]=MyColor[6];
LeftColor[9]=MyColor[3];
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = RightColor[i];
}
RightColor[1]=MyColor[3];
RightColor[2]=MyColor[6];
RightColor[3]=MyColor[9];
RightColor[4]=MyColor[2];
RightColor[5]=MyColor[5];
RightColor[6]=MyColor[8];
RightColor[7]=MyColor[1];
RightColor[8]=MyColor[4];
RightColor[9]=MyColor[7];
}
public void ForwardTurnLeft() {
int MyColor[] = new int [10];
int i;
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = ForwardColor[i];
ForwardColor[i] = LeftColor[i];
}
for ( i = 1; i < 10 ; i++ ) {
LeftColor[i] = BackColor[10-i];
}
for ( i = 1; i < 10 ; i++ ) {
BackColor[10-i] = RightColor[i];
}
for ( i = 1; i < 10 ; i++ ) {
RightColor[i] = MyColor[i];
}
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = UpColor[i];
}
UpColor[1]=MyColor[3];
UpColor[2]=MyColor[6];
UpColor[3]=MyColor[9];
UpColor[4]=MyColor[2];
UpColor[5]=MyColor[5];
UpColor[6]=MyColor[8];
UpColor[7]=MyColor[1];
UpColor[8]=MyColor[4];
UpColor[9]=MyColor[7];
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = DownColor[i];
}
DownColor[1]=MyColor[7];
DownColor[2]=MyColor[4];
DownColor[3]=MyColor[1];
DownColor[4]=MyColor[8];
DownColor[5]=MyColor[5];
DownColor[6]=MyColor[2];
DownColor[7]=MyColor[9];
DownColor[8]=MyColor[6];
DownColor[9]=MyColor[3];
}
public void ForwardContrarotate() {
int MyColor[] = new int [10];
int i;
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = ForwardColor[i];
}
ForwardColor[1]=MyColor[3];
ForwardColor[2]=MyColor[6];
ForwardColor[3]=MyColor[9];
ForwardColor[4]=MyColor[2];
ForwardColor[5]=MyColor[5];
ForwardColor[6]=MyColor[8];
ForwardColor[7]=MyColor[1];
ForwardColor[8]=MyColor[4];
ForwardColor[9]=MyColor[7];
for ( i = 1; i < 10 ; i++ ) {
MyColor[i] = UpColor[i];
}
UpColor[7]=RightColor[1];
UpColor[8]=RightColor[4];
UpColor[9]=RightColor[7];
RightColor[1]=DownColor[3];
RightColor[4]=DownColor[2];
RightColor[7]=DownColor[1];
DownColor[1]=LeftColor[3];
DownColor[2]=LeftColor[6];
DownColor[3]=LeftColor[9];
LeftColor[3]=MyColor[9];
LeftColor[6]=MyColor[8];
LeftColor[9]=MyColor[7];
}
public void BackContrarotate() {
ForwardTurnDown();
ForwardTurnDown();
ForwardContrarotate();
ForwardTurnDown();
ForwardTurnDown();
}
public void LeftContrarotate() {
ForwardTurnLeft() ;
ForwardContrarotate();
ForwardTurnLeft() ;
ForwardTurnLeft() ;
ForwardTurnLeft() ;
}
public void RightContrarotate() {
ForwardTurnLeft() ;
ForwardTurnLeft() ;
ForwardTurnLeft() ;
ForwardContrarotate();
ForwardTurnLeft() ;
}
public void UpContrarotate() {
ForwardTurnDown();
ForwardContrarotate();
ForwardTurnDown();
ForwardTurnDown();
ForwardTurnDown();
}
public void DownContrarotate() {
ForwardTurnDown();
ForwardTurnDown();
ForwardTurnDown();
ForwardContrarotate();
ForwardTurnDown();
}
public void ForwardClockwise() {
ForwardContrarotate();
ForwardContrarotate();
ForwardContrarotate();
}
public void BackClockwise() {
ForwardTurnDown();
ForwardTurnDown();
ForwardContrarotate();
ForwardContrarotate();
ForwardContrarotate();
ForwardTurnDown();
ForwardTurnDown();
}
public void LeftClockwise() {
ForwardTurnLeft() ;
ForwardContrarotate();
ForwardContrarotate();
ForwardContrarotate();
ForwardTurnLeft() ;
ForwardTurnLeft() ;
ForwardTurnLeft() ;
}
public void RightClockwise() {
ForwardTurnLeft() ;
ForwardTurnLeft() ;
ForwardTurnLeft() ;
ForwardContrarotate();
ForwardContrarotate();
ForwardContrarotate();
ForwardTurnLeft() ;
}
public void UpClockwise() {
ForwardTurnDown();
ForwardContrarotate();
ForwardContrarotate();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -