⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rubikcanvas.java

📁 魔方游戏J2ME代码讲解
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -