- 1 名前:デフォルトの名無しさん [02/04/15 12:09]
- 7行×79文字なら言語は問いません。
過去作品は>>2-5を参照。 ■前スレ pc.2ch.net/test/read.cgi/tech/984182993/
- 634 名前:561 mailto:sage [02/08/02 23:11]
- おっと、言い忘れましたが633はB.javaです。
続いて、詰めロードランナー。(L.java : 現在17行) import java.awt.*;import java.io.*;public class L extends Frame{int W,H,T,U=12, p,t,v,g,e,l,r,u,d,a,b,i,j,k,x,y,m[],w[];char[]q={'□','田','田',' ', ' ̄','#', ' ','◎','★'};L(String n){try{BufferedReader f=new BufferedReader(new FileReader(n));W=Integer.valueOf(f.readLine()).intValue();H=Integer.valueOf(f. readLine()).intValue();m=new int[T=W*H];w=new int[T];for(;i<T;){if((j=i%W)<1)n= f.readLine();if((m[i]=(int)n.charAt(j)-48)>7)m[p=i]=3;if(m[i++]>6)g++;}Canvas c=new Canvas(){{setSize(W*U,H*U);}public void paint(Graphics g){for(k=T;--k>=0; )g.drawChars(q,m[k],1,k%W*U,k/W*U+U);g.drawChars(q,8,1,p%W*U,p/W*U+U);}};add(c) ;pack();show();m:for(;g>0|p>W*2;Thread.sleep(20)){e=0;for(i=T;--i>=0;)if(w[i]>0 &&--w[i]<1){e=m[i]=1;if(i==p)break m;}if((i=m[p])>6){m[e=p]=3;if(--g<1)for(j=T; --j>=0;)if(m[j]==6)m[j]=5;}if(t>0)t--;else{v=(i!=4&i!=5&(j=m[p+W])!=0&j!=1&j!=5 |d>0&j>1)?W:(u>0&i==5&m[p-W]>2)?-W:(l>0&m[p-1]>2)?-1:(r>0&m[p+1]>2)?1:0;if(v!=0 ){p+=v;e=t=4;}else{if(a>0)v=p+W-1;if(b>0)v=p+W+1;if(v>0&m[v]==1)if((j=m[v-W])== 3|j==6){m[v]=3;e=w[v]=500;}}}if(e>0)c.repaint();}}catch(Exception e){}}public boolean handleEvent(Event e){if((x=402-e.id)>=0&x<2){y=e.key;if(y==52)l=x;if(y ==54)r=x;if(y==56)u=x;if(y==50)d=x;if(y==90|y==122)a=x;if(y==88|y==120)b=x;} return 1>0;}public static void main(String[]a){new L(a[0]);}} 番兵はおらず、ひたすら穴を掘って金塊を集めます(笑) こちらは、ゲームの面データを外部から与える形式なので、単独では動きません。 java L map.txt として、テキストファイルで面データを指定します。 (ずるいかな?(^^;)) 現時点で思いつくかぎりの最適化をしましたが、これ以上は縮まらず…(;_;)
- 635 名前:561 mailto:sage [02/08/02 23:22]
- 634の詰めロードランナー用面データはこんな感じ↓で作ります。
12 7 000000000000 033333333360 033334337360 075112115360 035177715360 035177715860 000000000000 1行目に幅、2行目に高さを指定します。 配置するブツの番号は 0 : ブロック(掘れない) 1 : レンガ(掘れる) 2 : 落とし穴(外見はレンガと同じ) 3 : 空白 4 : バー 5 : はしご 6 : 脱出はしご 7 : 金塊 8 : ロードランナー です。 なお、画面端の判定を行っていないため、面データの周囲はブロックで囲ってください。 (アルゴリズム的な意味の『番兵』(笑)) オマケで、逆転掘りデータ(^^;) 7 10 0000000 0353330 0353330 0158310 0131510 0151310 0131510 0151710 0111110 0000000
|

|