亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mofang.java

?? java編寫的3D魔方源代碼
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
            break ;
            case 'Y' :
            for(int i=0;i<=2;i++)
            //for(int j=0;j<=2;j++)
            for(int k=0;k<=2;k++)
            {
                           if(Block.closeDonghua)
{
                if(i==1&&k==1)
                {
                    continue ;
                }
            }
                int changBlockX=positionArray[i][Floor][k].x ;
                int changBlockY=positionArray[i][Floor][k].y ;
                int changBlockZ=positionArray[i][Floor][k].z ;
                Block changBlock=blockArray[changBlockX][changBlockY][changBlockZ];
                changBlock.xyzChange('Y',totateArg);
            }
            break ;

            case 'X' :
            //for(int i=0;i<=2;i++)
            for(int j=0;j<=2;j++)
            for(int k=0;k<=2;k++)
            {
                          if(Block.closeDonghua)
{
                if(j==1&&k==1)
                {
                    continue ;
                }
 }
                int changBlockX=positionArray[Floor][j][k].x ;
                int changBlockY=positionArray[Floor][j][k].y ;
                int changBlockZ=positionArray[Floor][j][k].z ;
                Block changBlock=blockArray[changBlockX][changBlockY][changBlockZ];
                changBlock.xyzChange('X',totateArg);
            }
            break ;

            default :
            System.out.println("無效的操作");
        }

        someBlockNewToOld();
    }

    //開始人工智能計算解法
    //select:選擇電腦的計算方案
    public static void autoStart(int select)
    {
    }

    //輸出每個位置上的塊號
    public static void showPosition()
    {
        System.out.println("\n每個位置上的塊號:");
        for(int i=0;i<=2;i++)
        for(int j=0;j<=2;j++)
        for(int k=0;k<=2;k++)
        {
            //System.out.println("Block"+i+","+j+","+k+"    "+blockArray[i][j][k].x+","+blockArray[i][j][k].y+","+blockArray[i][j][k].z);
            System.out.println("Position:"+(i-1)+","+(j-1)+","+(k-1)+"  的塊號是:  "+(positionArray[i][j][k].x-1)+","+(positionArray[i][j][k].y-1)+","+(positionArray[i][j][k].z-1));

        }
    }

    //把剛才記錄的有變化(來了新的塊)的位置 存儲到 沒個position的塊號中
    public static void someBlockNewToOld()
    {
        for(int i=0;i<=2;i++)
        for(int j=0;j<=2;j++)
        for(int k=0;k<=2;k++)
        {
            if(positionArray[i][j][k].haveNew)
            {
                positionArray[i][j][k].newToOld();
            }
        }
    }

 public static void myWait()
 {
                      try
        {

            System.in.read();

                        System.in.read();
            //暫停
        }
        catch(Exception e)
        {
        }
 }

    //測試用代碼
      public static   void someTest()
    {

      doIt('Y',0+1,90);
      //        //new MoFang().showPosition();
      MoFang.myWait();
       doIt('Y',0+1,-90);
      MoFang.myWait();
             // new MoFang().showPosition();

       doIt('Z',-1+1,-90);
                     //new MoFang().showPosition();
       MoFang.myWait();

       doIt('Z',-1+1,90);
       //      new MoFang().showPosition();
       //MoFang.myWait();
              //new MoFang().showPosition();

       doIt('X',1+1,90);
       MoFang.myWait();
               //new MoFang().showPosition();
       doIt('X',1+1,-90);
        // new MoFang().showPosition();
       MoFang.myWait();

        //showPosition();
    }


    //魔方自動隨機變化多少條
       public static void  ranGet(int num)
    {
     char selectChar='E';//'X','Y','Z'
     int layer;//-1,0,1
     int jiaoDu=0;//90,-19,180

     for(int i=0;i<num;i++)
     {
      //選xyz
      int select=(int)((Math.random()*10)%3);
      if(select==0){selectChar='X';}
      if(select==1){selectChar='Y';}
      if(select==2){selectChar='Z';}

      //
      layer=(int)((Math.random()*10)%3);//0,1,2
      layer-=1;//-1,0,1

      //
      int jiao=(int)((Math.random()*10)%3);//0,1,2
      if(jiao==0){jiaoDu=90;}
      if(jiao==1){jiaoDu=-90;}
      if(jiao==2){jiaoDu=180-90;}
      System.out.println("\n*******************************\nRandom Generater:"+(i+1)+" of "+num);
      System.out.print(selectChar);
      System.out.print(","+layer+","+jiaoDu+"\n按任意鍵開始動畫?\n");

      myWait();

      doIt(selectChar,layer+1,jiaoDu);
     }
    }
    //從三維圖形界面輸入操作參數
    public static void graphicStart()
    {
     JFrame myframe =new JFrame();
        myframe.setVisible(true);

    }
    public static void main(String[]args)
    {

     //初始化位置數組,也可以從文件中加載,其實應該把所有關鍵信息從文件載入,關閉時保存
        for(int i=0;i<=2;i++)
        for(int j=0;j<=2;j++)
        for(int k=0;k<=2;k++)
        {

            MoFang.positionArray[i][j][k]=new Position(i,j,k);
        }
        System.out.println("初始化位置數組完成.最初全在原位置\n");

       //showPosition();

        new MainFrame(new mySimpleUniverse(),200,200);
        //加applet到應用程序界面
  //someTest();
        //graphicStart();
  myWait();
       ranGet(30);
        //
        //
    }

}

class Block implements Runnable
{
    //計算已畫的塊數
    private static int whickBlockPainted=0 ;

    //計算生成的第幾塊
    private static int BlockCreated=0 ;

    //每面的顏色,排列為:+x,-x,+y,-y,+z,-z,no
    public static Color3f[] mianColor=
{new Color3f(1.0f,0.0f,0.0f),
new Color3f(0.0f,1.0f,0.0f),
new Color3f(0.0f,0.0f,1.0f),
new Color3f(1.0f,1.0f,0.0f),
new Color3f(1.0f,0.0f,1.0f),
new Color3f(0.0f,1.0f,1.0f),
new Color3f(0.2f,0.2f,0.2f)
};
    //每面的材質,排列為:+x,-x,+y,-y,+z,-z,no
    public static String[] mianImageFile=new String[7];

    //塊偏移量
    private static float kuaiZhongXinWeizhi=0.4f ;

    //創建材質時要用的,僅用于他,他是一個applet對象
    Component observer;

    //該塊的編號
    private int blockIdX ;
    private int blockIdY ;
    private int blockIdZ ;

    //該塊的位置
    private int x ;
    private int y ;
    private int z ;

    //該塊的坐標軸點,最初全為(1,1,1),表示與外坐標一致
    private MyPoint xvec;
    private MyPoint yvec;
    private MyPoint zvec;

    //position=new Verctor3f(0.0f,0.0f,0.0f);

    //該塊的角度,限定為從-359到359,模360可以限定為一周,如果模180,則只能表示半個圓,不行
    //int anglex ;
    //int angley ;
    //int anglez ;

    //添加物品的變換組
    public TransformGroup transGroup ;
    public Transform3D trans ;


    //用于位置,角度變動的變換組
    public TransformGroup transGroupx ;
    public Transform3D transx ;
    public TransformGroup transGroupy ;
    public Transform3D transy ;
    public TransformGroup transGroupz ;
    public Transform3D transz ;
    public TransformGroup transGroupp ;
    public Transform3D transp ;

    //新的方塊位置
 int[]  nexyz={0,0,0};

    //動畫相關
    int totateArg;
    boolean canNew=false;
    char selectedC;
    Thread myThread;
 public static boolean closeDonghua=false ; //為true使用線程動畫,為false直接調用


  private static int selectDonghuaId=0;//取ID變量,取值從0~8,每次從0開始取,正好9個,取完后變為10(每取一個自動加1),這時才讓所有線程一起動
  private int myDonghuaId;
 private static int donghuaDelay=50 ; //絕對延遲,
 public static int whileDelay=20;//加快同步系統性能延遲,

 //公共控制變量
  public static int yunXingThread=0;//運行的線程數,啟動線程時加1,退出時減一。可以控制主線程等待,直到為0時才開始做所有的xyzChange,否則等待

//動畫時的多線程要用它,因為主線程仍在跑,x,y,z會變化,只能用它保存
            int yuanx;
            int yuany;
            int yuanz;

//當前位置x點的偏移
MyPoint chaxvec;
//當前位置y點的偏移
MyPoint chayvec;
//當前位置z點的偏移
MyPoint chazvec;


    //構造函數,給初值
    public Block(int i,int j,int k,int px,int py,int pz,TransformGroup parentTransGroup,Transform3D t3d,BranchGroup objRoot,Component obServer1)
    {

        blockIdX=i ;
        blockIdY=j ;
        blockIdZ=k ;


        x=px ;
        y=py ;
        z=pz ;

//計算軸向量 :塊坐標加坐標偏移
xvec=new MyPoint((blockIdX-1)+1,(blockIdY-1),(blockIdZ-1));
yvec=new MyPoint((blockIdX-1),(blockIdY-1)+1 ,(blockIdZ-1));
zvec=new MyPoint((blockIdX-1),(blockIdY-1),(blockIdZ-1)+1 );
//System.out.println("軸點:"+(zoux)+(zouy)+(zouz));
//System.out.println("軸向量:"+(zoux-(x-1))+(zouy-(y-1))+(zouz-(z-1)));

        observer=obServer1;

        //anglex=0 ;
        //angley=0 ;
        //anglez=0 ;

        trans=new Transform3D();
        transGroup=new TransformGroup(trans);
        transGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        transGroup.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

        transp=new Transform3D();
        transGroupp=new TransformGroup(transp);
        transGroupp.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupp.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupp.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

        transx=new Transform3D();
        transGroupx=new TransformGroup(transx);
        transGroupx.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupx.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupx.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

        transy=new Transform3D();
        transGroupy=new TransformGroup(transy);
        transGroupy.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupy.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupy.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        transz=new Transform3D();
        transGroupz=new TransformGroup(transz);
        transGroupz.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupz.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupz.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        //用已知信息組裝變換組,,
        //注意這里的順序,先平移,再旋轉,或先x,先y的順序是不一樣的,這里
        //必須是先在原位置自轉好方向,再平移,這樣,平移不會改變它的自轉方向,
        //如果先平移,再轉,轉動會帶動平移,剛才的平移無任何意義。
        //還要注意是先繞x轉,再繞y轉,再繞z轉
        //換了順序,是不一樣的,例如x,y,z和z,y,x的結果不一樣
        //但是,可以證明x,y和y,x的順序無關性,當都只左轉或右轉90度時,很容易證明
        //如果有180度,可以分成兩次90度操作
        parentTransGroup.addChild(transGroupp);
        transGroupp.addChild(transGroupz);
        transGroupz.addChild(transGroupy);
        transGroupy.addChild(transGroupx);
        transGroupx.addChild(transGroup);
        // 測試,直接加到根,沒有鼠標功能
        //objRoot.addChild(transGroup);
        //System.out.println("\n\n\n處理第"+BlockCreated+"塊");
        //System.out.println("塊"+(blockIdX-1)+(blockIdY-1)+(blockIdZ-1)+"的坐標系添加完成");
        BlockCreated++;
        //if (BlockCreated==14)//||BlockCreated==3//||BlockCreated==2||BlockCreated==20||BlockCreated==16
        add3DCube(x-1,y-1,z-1,transGroup);
        //建小坐標軸
        SomeShape3D.zuoBiaoZhuSmallXShape3D(transGroup);
        SomeShape3D.zuoBiaoZhuSmallYShape3D(transGroup);
        SomeShape3D.zuoBiaoZhuSmallZShape3D(transGroup);
        //測試主變換組的平移
        //Shape3D shape1=SomeShape3D.FlowerShape3D();
        //parentTransGroup.addChild(shape1);
        //t3d.setTranslation(new Vector3f(0.0f,1.0f,0.0f));
        //parentTransGroup.setTransform(t3d);
        //測試子變換組的平移(不行,不起作用)
        //Shape3D shape2=SomeShape3D.SanShape3D();
        //transGroup.addChild(shape2);
        //trans.setTranslation(new Vector3f(0.0f,-1f,0.0f));
        //transGroup.setTransform(t3d);
        //創建鼠標行為
        //MouseRotate behavior1=new MouseRotate();
        //behavior1.setTransformGroup(transGroup);
        //behavior1.setSchedulingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),100));
        //objRoot.addChild(behavior1);//鼠標行為  加到 分枝組
        //設置初始值,顯示輸出
        float fx ;
        float fy ;
        float fz ;
        fx=(float)kuaiZhongXinWeizhi*(x-1);
        fy=(float)kuaiZhongXinWeizhi*(y-1);
        fz=(float)kuaiZhongXinWeizhi*(z-1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区网站| 日韩成人精品视频| 亚洲韩国精品一区| 国产乱码精品一区二区三区忘忧草 | 精品国产青草久久久久福利| 中文字幕日韩精品一区| 免费日韩伦理电影| 在线观看91视频| 国产精品国产三级国产专播品爱网| 午夜激情综合网| 91免费观看视频| 欧美激情一区在线| 精东粉嫩av免费一区二区三区| 91久久精品一区二区二区| 国产日韩欧美综合一区| 免费在线观看一区二区三区| 在线观看日产精品| 中文字幕一区二区三| 国产精品自拍毛片| 精品国产一区a| 美女视频第一区二区三区免费观看网站| 一本大道av一区二区在线播放| 国产欧美日韩在线观看| 国产一区二区三区最好精华液| 欧美一区二区三区免费视频| 亚洲午夜免费视频| 欧美色综合久久| 亚洲激情自拍视频| 一本色道久久综合亚洲aⅴ蜜桃| 中文字幕日韩一区| 91视频观看视频| 国产精品久久久久影院老司| 成人午夜短视频| 国产精品色呦呦| 91久久一区二区| 亚洲久草在线视频| 91亚洲精华国产精华精华液| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产高清不卡一区| 国产欧美日韩不卡| 国产白丝网站精品污在线入口| 欧美精品一卡二卡| 男女男精品视频| 精品国免费一区二区三区| 九一九一国产精品| 久久一留热品黄| 国产激情精品久久久第一区二区 | 午夜久久电影网| 日韩午夜激情av| 国产在线精品一区二区不卡了| 国产欧美视频一区二区| 成人小视频在线观看| 最好看的中文字幕久久| 在线一区二区三区四区| 亚洲电影中文字幕在线观看| 91精品黄色片免费大全| 国产乱子伦视频一区二区三区| 国产精品无码永久免费888| 91亚洲精品乱码久久久久久蜜桃| 亚洲最新在线观看| 日韩一区二区免费在线观看| 国产精品99久久久| 亚洲综合区在线| 精品电影一区二区三区| 99精品视频一区| 免费看日韩a级影片| 国产欧美一区二区三区网站| 欧洲一区二区三区在线| 久久er99精品| 艳妇臀荡乳欲伦亚洲一区| 久久综合视频网| 欧美亚洲日本一区| 国产成人精品影视| 午夜精品成人在线| 国产精品麻豆一区二区| 欧美一区二区视频在线观看| 99亚偷拍自图区亚洲| 日本视频在线一区| 亚洲欧洲制服丝袜| 久久久五月婷婷| 欧美疯狂性受xxxxx喷水图片| 国产在线播放一区三区四| 亚洲一区二区三区爽爽爽爽爽 | 91视频观看免费| 国产精品夜夜嗨| 日韩影院精彩在线| 亚洲欧美激情小说另类| 久久女同精品一区二区| 欧美日韩国产精品自在自线| 成人av电影在线| 欧美午夜在线观看| 国产高清亚洲一区| 蜜桃久久久久久| 日韩影院免费视频| 五月婷婷久久丁香| 一区二区三区丝袜| 综合在线观看色| 中文字幕中文字幕中文字幕亚洲无线| 精品三级在线看| 欧美丰满一区二区免费视频 | 亚洲一区在线看| 国产精品国产三级国产aⅴ中文 | 51精品久久久久久久蜜臀| 99在线视频精品| 成人免费视频免费观看| 久久精品国产99| 毛片av一区二区| 午夜精品123| 婷婷夜色潮精品综合在线| 亚洲免费观看在线视频| 亚洲女同ⅹxx女同tv| 日韩码欧中文字| 亚洲人妖av一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 国产精品嫩草影院av蜜臀| 精品国产亚洲一区二区三区在线观看 | a亚洲天堂av| 国产成人精品www牛牛影视| 激情综合色综合久久综合| 久久国产麻豆精品| 国产精品888| 国产成人高清在线| 99视频有精品| 在线免费观看日本一区| 欧美日韩在线播放一区| 欧美美女视频在线观看| 日韩视频在线永久播放| xfplay精品久久| 日本一区二区三区国色天香| 蜜臀av性久久久久蜜臀aⅴ | 9191成人精品久久| 欧美一级高清片在线观看| 日韩欧美卡一卡二| 国产亚洲欧洲997久久综合| 中文字幕精品三区| 亚洲美女偷拍久久| 日韩精品五月天| 国产综合色精品一区二区三区| 国产精品白丝jk黑袜喷水| 92国产精品观看| 制服丝袜成人动漫| 久久网这里都是精品| 成人免费一区二区三区视频| 亚洲一区二区三区美女| 极品少妇一区二区三区精品视频| 国产不卡视频在线观看| 欧美性感一类影片在线播放| 欧美一区二区视频网站| 国产精品乱码一区二区三区软件| 夜夜嗨av一区二区三区网页| 另类小说综合欧美亚洲| 91在线小视频| 亚洲精品一区二区三区99| 国产精品护士白丝一区av| 日韩精品高清不卡| 高清beeg欧美| 91精品国产综合久久蜜臀| 中文乱码免费一区二区| 日韩专区中文字幕一区二区| 不卡一二三区首页| 精品久久久久久久久久久久包黑料 | 99精品视频在线免费观看| 欧美精品免费视频| 亚洲国产精品二十页| 午夜视频一区二区三区| 高清不卡在线观看| 日韩视频在线你懂得| 一区二区三区成人| 成人av午夜影院| 久久综合国产精品| 五月激情六月综合| 日本乱码高清不卡字幕| 国产欧美一区二区精品性色超碰| 日韩精品免费视频人成| 91九色02白丝porn| 国产日韩欧美亚洲| 免费高清视频精品| 欧美日韩亚洲高清一区二区| 国产精品久久二区二区| 国产一区二区三区四| 日韩一区二区在线看| 亚洲国产精品久久艾草纯爱| 日韩欧美国产综合一区| 一区二区三区中文字幕精品精品 | 狂野欧美性猛交blacked| 欧美午夜宅男影院| 夜夜揉揉日日人人青青一国产精品| 成人性生交大合| 中文字幕+乱码+中文字幕一区| 黄页视频在线91| www激情久久| 狠狠色综合色综合网络| 精品女同一区二区| 韩国精品主播一区二区在线观看| 欧美一区日韩一区| 爽爽淫人综合网网站 | 91美女精品福利| 国产精品久久久久久妇女6080 | 久久精品国产精品青草| 欧美一区二区三区在线|