//
/* ---------------------------------------------------------------------------------------------- run_len.java M†ˆ³kiƒ‰ƒ“ƒŒƒ“ƒOƒX–@j ver. 1.11 (JDK 1.02) 2004.10.12 ueyama@infonet.co.jp 1998.12.05 ---------------------------------------------------------------------------------------------- */ import java.applet.Applet; import java.awt.*; import java.util.*; public class run_len extends Applet implements Runnable { int Tn=0; // ”ñˆ³k ‘—Mƒrƒbƒg” int Cy=0; // ˆ³kƒf[ƒ^‘—Ms” int Cx=0; // ˆ³kƒf[ƒ^‘—M•\¦XÀ•W’l int Ch=0; // MH •„†‘—MŒ…” int Cm=0; // MH •„†‘—M” int Cn=0; // ”’E••ω»‰ñ”^s int Chx[] = new int[16]; // ”’E••ω»ˆÊ’u int Chc[] = new int[16]; // ”’ or • int Chl[] = new int[16]; // LEN String Chs[] = new String[16]; // MH •„† int Bc; // ”wŒiF int Wait=256; // ‘Ò‚¿ŠÔ (msec) long Fl=0x8000000000000000L; // ÅãˆÊƒrƒbƒg‚݂̂ª "1" ‚Ì 64Œ…‚Qi” int X0=400, Y0=8; Image Gif; boolean Run=false, Wf=false; Thread th=null; Graphics gr; // -------- •¶š "Š¿" ƒhƒbƒgƒtƒHƒ“ƒgƒf[ƒ^ ---------- long Kan[]={0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000000L, 0x0000000700380000L,0x01c00007f83fc000L,0x00f80007f03f8000L,0x007c0007e03f0080L, 0x007e0007e03f01c0L,0x003f0007e03f03e0L,0x003f0007e03f07f8L,0x001f9ffffffffffcL, 0x001f0ffffffffffcL,0x000f0007e03f0000L,0x000e0007e03f0000L,0x00000007e03f0000L, 0x00001007e03f0000L,0x00001007e03f0000L,0x0000320700381c00L,0x1c00238000001e00L, 0x0f8063f000003f00L,0x07c063ffffffffc0L,0x07e0e3ffffffffc0L,0x03f0c3f00f803f00L, 0x03f1c3f00f803f00L,0x01f9c3f00f803f00L,0x01f183f00f803f00L,0x00f383f00f803f00L, 0x000383f00f803f00L,0x000703f00f803f00L,0x000703ffffffff00L,0x000f03ffffffff00L, 0x000e03f00f803f00L,0x001e03800f803000L,0x001e00000f800600L,0x001e00000f800f00L, 0x003c00000f801f80L,0x003c1fffffffffc0L,0x007c0fffffffffc0L,0x007800000f800000L, 0x00f800000f800000L,0x00f800000f800180L,0x1ff000000f8003c0L,0x1ff000001f8007f0L, 0x07f1fffffffffff8L,0x03f0fffffffffff8L,0x01f000003fc00000L,0x01e000003fe00000L, 0x01f000007e700000L,0x01f000007e380000L,0x01f00000fc3c0000L,0x01f00001f81f0000L, 0x01f00003f80fc000L,0x01f80007f007f000L,0x01f8000fc007fc00L,0x01f8001f8003ff80L, 0x03f8003f0000fff8L,0x03f800fc00007ffcL,0x03f803f000003ff0L,0x01f81fc000000fc0L, 0x01f0fe00000003c0L,0x00e1e00000000080L,0x0L,0x0L,0x0L,0x0L}; // -------- MH •„†ƒf[ƒ^ ------------ String MH[][]={{"00110101","0000110111"},{"000111","010"},{"0111","11"},{"1000","10"}, {"1011","011"},{"1100","0011"},{"1110","0010"},{"1111","00011"},{"10011","000101"}, {"10100","000100"},{"00111","0000100"},{"01000","0000101"},{"001000","0000111"}, {"000011","00000100"},{"110100","00000111"},{"110101","000011000"}, {"101010","0000010111"},{"101011","0000011000"},{"0100111","0000001000"}, {"0001100","00001100111"},{"0001000","00001101000"},{"0010111","00001101100"}, {"0000011","00000110111"},{"0000100","00000101000"},{"0101000","00000010111"}, {"0101011","00000011000"},{"0010011","000011001010"},{"0100100","000011001011"}, {"0011000","000011001100"},{"00000010","000011001101"},{"00000011","000001101000"}, {"00011010","000001101001"},{"00011011","000001101010"},{"00010010","000001101011"}, {"00010011","000011010010"},{"00010100","000011010011"},{"00010101","000011010100"}, {"00010110","000011010101"},{"00010111","000011010110"},{"00101000","000011010111"}, {"00101001","000001101100"},{"00101010","000001101101"},{"00101011","000011011010"}, {"00101100","000011011011"},{"00101101","000001010100"},{"00000100","000001010101"}, {"00000101","000001010110"},{"00001010","000001010111"},{"00001011","000001100100"}, {"01010010","000001100101"},{"01010011","000001010010"},{"01010100","000001010011"}, {"01010101","000000100100"},{"00100100","000000110111"},{"00100101","000000111000"}, {"01011000","000000100111"},{"01011001","000000101000"},{"01011010","000001011000"}, {"01011011","000001011001"},{"01001010","000000101011"},{"01001011","000000101100"}, {"00110010","000001011010"},{"00110011","000001100110"},{"00110100","000001100111"}, {"11011","0000001111"}}; public void init() { String bg=getParameter("BgColor"); Bc=Integer.valueOf(bg,16).intValue(); setBackground(new Color(Bc)); MediaTracker mt=new MediaTracker(this); Gif=getImage(getCodeBase(),"run_len.gif"); mt.addImage(Gif, 0); try { mt.waitForID(0); } catch(InterruptedException e){}; gr=getGraphics(); } public void start() { if(th==null) { th=new Thread(this); th.start(); } } public boolean inside(int x, int a, int b) { return (x<=Math.max(a,b) && x>=Math.min(a,b)) ? true:false; } public void dsp_b(int x, int y, int l, int n, int bg) // ‚Qi”E”’l‚Ì•\¦ { for(int i=0; i–ß‚é=0) dsp_g(x+i*7-1, y-1, bg, 7); dsp_g(x+i*7, y, Integer.parseInt(MH[l][n].substring(i,i+1)), n); } } public void dsp_n(int x, int y, int n, int c, boolean bg) // 10i”E”’l‚Ì•\¦ { if(n>9) { if(bg) dsp_g(x-1, y-1, c, 7); dsp_g(x, y, n/10, 1); } if(bg) dsp_g(x+7-1, y-1, c, 7); dsp_g(x+7, y, n%10, 1); } public void dsp_g(int x, int y, int n, int c) // ‰æ‘œ (run_len.gif) ‚Ì•\¦ { Graphics gx=gr.create(); int w=0, h=0, ox=0, oy=0; switch(c) { case 0: w= 6; h= 9; ox= 0; oy= 0; break; // ”’”š case 1: w= 6; h= 9; ox= 60; oy= 0; break; // •”š case 2: w=34; h=11; ox=120; oy= 0; break; // "”’•„†" case 3: w=35; h=11; ox=154; oy= 0; break; // "••„†" case 4: w=17; h=11; ox=189; oy= 0; break; // "LEN" case 5: w=50; h=11; ox=206; oy= 0; break; // "©”ñˆ³k" case 6: w=37; h=11; ox=256; oy= 0; break; // "©ˆ³k" case 7: w= 9; h=11; ox=293; oy= 0; break; // ”wŒiF case 8: w= 5; h= 5; ox=320; oy= 0; break; // ƒtƒHƒ“ƒg—pƒhƒbƒg case 9: w=26; h=23; ox= 0; oy=11; break; // "á" case 10: w=26; h=23; ox= 78; oy=11; break; // "â" case 11: w=26; h=23; ox=156; oy=11; break; // "ƒŒ" case 12: w=26; h=23; ox=234; oy=11; break; // "a" case 13: w=26; h=23; ox=286; oy=11; break; // "|>" } gx.clipRect(x,y,w,h); gx.drawImage(Gif,x-(ox+n*w),y-oy,this); gx.dispose(); } public void dsp_d(int x, int y, int l) // •¶šƒf[ƒ^‚Ps•\¦ { int c,i; long f=0x8000000000000000L; for(i=0;i<64;i++) { c=((f&Kan[l])==0)?0:1; dsp_g(x+i*6, y, c, 8); f>>>=1; } } public void dsp_c() // ˆ³kƒf[ƒ^‚ğ•\¦ { int b,c,i,j,k,len, cl=0, x=6, y=406+Y0; long f=0x8000000000000000L; Cn=0; for(i=0;i<16;i++) {Chx[i]=0; Chc[i]=0; Chl[i]=0; Chs[i]="";} c=((f&Kan[Cy])==0)?0:1; for(i=0,k=0,len=0; i<64; i++) { b=((f&Kan[Cy])==0)?0:1; if(c==b) len++; // len: ”’‚Ü‚½‚Í•‚̃Œƒ“ƒOƒX else { Chs[k]=MH[len][c]; // MH •„† Chc[k]=c; Chl[k]=len; c=(c==0)?1:0; len=1; Chx[k+1]=i; k++; Cn++; } f>>>=1; } Chs[k]=MH[len][c]; Chl[k]=len; Cn++; for(i=0; i<=Cn; i++) { for(j=0; j 0) // ˆ³kE”ñˆ³kƒf[ƒ^‚Ps•\¦ { dsp_d(6, 394+Y0, Tn/64); dsp_c(); } dsp_g(X0, 392+Y0, 0, 5); // "©ˆ³k", "©”ñˆ³k" •\¦ dsp_g(X0, 404+Y0, 0, 6); dsp_g(X0, Y0, 0, 4); // "LEN" dsp_g(X0+182, Y0, 0, 4); dsp_g(X0+21, Y0, 0, 2); // "”’•„†" dsp_g(X0+182+21, Y0, 0, 2); dsp_g(X0+84, Y0, 0, 3); // "••„†" dsp_g(X0+182+84, Y0, 0, 3); for(y=0;y<33;y++) // MH •„†•\‚Ì•\¦ { if(y<32) { dsp_n(X0, y*11+Y0+15, y, 1, false); dsp_b(X0+21, y*11+Y0+15, y, 0, -1); dsp_b(X0+84, y*11+Y0+15, y, 1, -1); } dsp_n(X0+182, y*11+Y0+15, y+32, 1, false); dsp_b(X0+182+21, y*11+Y0+15, y+32, 0, -1); dsp_b(X0+182+84, y*11+Y0+15, y+32, 1, -1); } dsp_g(520, 400, 0, 11); // "ƒŒ" dsp_g(570, 400, 0, 9); // "á" dsp_g(600, 400, (Wait<=32)? 2:0, 10); // "â" dsp_g(650, 400, 0, (Run)?12:13); // "a" or "|>" } public void run() { int c=0,l=0,ce=0,cd=0,le=0,ne=0,re=0,dx=0,dy=0; while(true) { if(Run) { if(Tn%64==0) { dsp_d(6, 394+Y0, Tn/64); // ”ñˆ³kƒf[ƒ^‚Ps•\¦ Fl=0x8000000000000000L; } if(Cy==0) dsp_c(); // ˆ³kƒf[ƒ^‚Ps•\¦ if(Ch==0) // MH •„†‚Ì•\¦ ‘¼ { c=Chc[Cm]; l=Chl[Cm]; ne=Chx[Cm]; dsp_g(ne*6+6, Cy*6+Y0, c+4, 8); // ˆ³k“]‘—ƒf[ƒ^Œ³ˆÊ’u•\¦ dx=(l<32)? 0:182; dy=(l<64)? l%32*11:32*11; dsp_n(dx+X0, dy+Y0+15, l, 1, true); // 10i”‚Ì•\¦ dsp_b(((c==0)?21:84)+dx+X0, dy+Y0+15, l, c, c); // MH•„†‚Ì•\¦ ce=c; le=l; re=Cy; } c=((Fl&Kan[Tn/64])==0)? 0:1; cd=Integer.parseInt(Chs[Cm].substring(Ch, Ch+1)); dsp_g(Tn%64*6+6, Tn/64*6+Y0, c+2, 8); // ƒf[ƒ^‘—MÀsˆÊ’u‚Ì•\¦ dsp_g(Tn%64*6+6, 394+Y0, c+2, 8); dsp_g(Cx*6+6, 406+Y0, cd+4, 8); Wf=true; } try { th.sleep((Run)? Wait:256); } catch (InterruptedException e){} if(Run && Wf) { dsp_g(Tn%64*6+6, Tn/64*6+Y0, c, 8); dsp_g(Tn%64*6+6, 394+Y0, c, 8); dsp_g(Cx*6+6, 406+Y0, cd, 8); Tn++; Fl>>>=1; Ch++; Cx++; if(Ch==Chs[Cm].length()) // MH •„†‚Ì‘—MI—¹ { dsp_g(ne*6+6, re*6+Y0, Chc[Cm], 8); // ˆ³k“]‘—ƒf[ƒ^Œ³ˆÊ’u dx=(le<32)? 0:182; dy=(le<64)? le%32*11:32*11; dsp_n(dx+X0, dy+Y0+15, le, 2, true); // 10i” dsp_b(((ce==0)? 21:84)+dx+X0, dy+Y0+15, le, ce, 2); // MH•„† Ch=0; Cm++; if(Cm==Cn) // ˆ³kƒf[ƒ^‚Ps‘—MI—¹ { Cm=0; Cx=0; Cy++; dsp_c(); if(Cy==64) { Run=false; dsp_g(Tn%64*6+6, Tn/64*6+Y0, c+2, 8); dsp_g(Tn%64*6+6, 394+Y0, c+2, 8); Fl=0x8000000000000000L; } } } } } } public boolean mouseDown(Event e, int x, int y) { if(x>520 && y>400) // ƒ{ƒ^ƒ“‚ğƒNƒŠƒbƒN { if(inside(x, 520, 546)) // "ƒŒ" { Tn=0; Cy=0; Ch=0; Cm=0; Wf=false; Run=false; repaint(); } if(inside(x, 570, 596)) // "á" { dsp_g(570, 400, 1, 9); Wait*=2; } if(inside(x, 600, 626) && Wait>16) // "â" { dsp_g(600, 400, 1, 10); Wait/=2; } if(inside(x, 650, 676)) // "a" or "|>" { dsp_g(650, 400, 1, (Run)?12:13); Run=!Run; } } return true; } public boolean mouseUp(Event e, int x, int y) { if(x>520 && y>400) { if(inside(x, 520, 546)) { dsp_g(520, 400, 0, 11); // "ƒŒ" dsp_g(650, 400, 0, 13); } if(inside(x, 570, 596)) // "á" { dsp_g(570, 400, 0, 9); dsp_g(600, 400, 0, 10); } if(inside(x, 600, 626)) dsp_g(600, 400, (Wait<=16)?2:0, 10); // "â" if(inside(x, 650, 676)) dsp_g(650, 400, 0, (Run)?12:13); // "a" or "|>" } return true; } public void stop() { if(th!=null) { th.stop(); th=null; } } } //