- 662 名前:561 [02/08/19 18:49]
- お盆明けage〜。
3D迷路です。(M.java : 現在12行) import java.awt.*;class M{public static void main(String[]a){new Frame(){int W= 200,M=15,G=5,x,y,d,u,v,a,b,i,j;int[]s={0,1,0,-1,0},m[]=new int[M][M],w[]={{36, 48,50,40,7,3},{36,80,84,40},{12,36,40,20,9,1},{12,100,108,20},{0,12,20,10}},q; Canvas c;{for(;i<M*M;)m[x=i%M][y=i++/M]=x<2|y<2|x>M-3|y>M-3?1:0;m[M-3][M-2]=2; for(i=G*G;i>0;)if(m[x=(j=(int)(Math.random()*G*G*4))%G*2+3][y=j/G%G*2+3]<1&m[x+ s[j/=G*G]*2][y+s[j+1]*2]>0)m[x][y]=m[x+s[j]][y+s[j+1]]=i/i--;x=y=2;add(c=new Canvas(){{resize(W,W);}public void paint(Graphics g){for(i=0;i<8;i++){u=(i+2)%3 -1;v=2-i/3;j=m[x+s[d]*u+s[d+1]*v][y-s[d+1]*u+s[d]*v];if(j>0){g.setColor(j>1? Color.RED:Color.GRAY);Polygon p=new Polygon();q=w[(i%3)*2/3+(i/3)*2];for(j=0;j< q.length;){u=q[j++];u=i%3<1?120-u:u;p.addPoint(u/11*20,u%11*20);}g.fillPolygon( p);}}}});pack();show();}public boolean keyDown(Event e,int k){k-=51;d=k>0&k<4?d +k&3:d;if(k==5&m[a=x+s[d+1]][b=y+s[d]]<1){x=a;y=b;}c.repaint();return 1>0;}};}} せっかくだから赤い扉を目指してください(笑) (辿り着いても、何も起きませんけど(^^;)) 操作は8で前進、4/6で左右90度回転、5で180度回転、です。 迷路作成部分が2行半ほどあるのが無駄かな。 迷路を固定にしちゃえば、もう少し縮められそうですが…。
|

|