[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 16:01 / Filesize : 349 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

七行プログラミング part2



643 名前:561 mailto:sage [02/08/05 18:55]
>>641
参考になりました。三項演算子を効果的に使うんですね。
かなり短縮できました。(ブロック崩し - B.java : 現在13行)

import java.awt.*;public class B{public static void main(String[]a){new Frame()
{int W=26,H=33,T=W*H,P=7,U=6,b=1+W,d=56,p=1+T-W*3,g,l,t,i,j,k,u,m[]=new int[T];
{Canvas c=new Canvas(){{setSize(W*U,H*U);}public void update(Graphics g){for(u=
0;u<T;g.fillRect(u%W*U,u++/W*U,U,U))g.setColor(m[u]>0?Color.BLACK:Color.WHITE);
}public boolean handleEvent(Event e){k=e.x/U;k=k<1?1:k>W-2?W-2:k;p=e.id==503?k+
T-W*3:p;g=e.id==501?l:g;return 1>0;}};for(;i<T;i++)m[i]=(j=i/W)>=H-1?4:j<1|(k=i
%W)<1|k>W-2?1:j>3&j<H/2+2&j%3>1&k>3&k<W-4&((j/3^k/2)&1)>0?2+0*++l:0;l/=2;add(c)
;pack();show();try{for(;;Thread.sleep(50)){m[b]=0;i=g>0?b+v((d+16)%64)+v(d)*W:p
-W;j=g>0?m[i]:0;if(j>0){d=m[i%W+b/W*W]>0?m[b%W+i/W*W]>0?(d+32)&63:(32-d)&63:-d&
63;if(j==2){m[i]=m[i^1]=0;g=--l<1?0:g;}if(j==3)d=(d+=b%W-p%W)<36?36:d>60?60:d;
if(j==4){d=56;g=0;}i=b;}m[b=i]=1;i=p%W-P/2;for(j=0;j<W;j++)m[j+T-W*3]=j>=i&j<i+
P?3:j<1|j>W-2?1:0;t=(t+1)%8;c.repaint();}}catch(Exception e){}}int v(int d){j=d
%32;j=j>16?32-j:j;return j*(t+1)/8>j*t/8?d<32?1:-1:0;}};}}

ただ、「g=--l<1?0:g;」のような処理はアトミックじゃないので、別スレッドから変更さ
れた場合に、やや心配ではありますが。(取り越し苦労?(^^;))

>>642
やっぱり仕様そのものが問題だったかも(^^;)
ラケットの位置により反射角度が変化ってのはオーバースペックかな?
あと、ApplicationよりAppletの方が短くできそうですね。







[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<349KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef