// ==================================================================== // JAVA APPLET PROGRAM BASE SOURCE BakuretuKen // ==================================================================== import java.applet.Applet; import java.awt.*; import java.net.*; import java.awt.image.*; import java.util.StringTokenizer; import java.net.MalformedURLException; import java.io.*; // =============================================================== public class KumaPuzzle extends Applet { // グローバル変数 Image img; // ダブルバッファリング用の宣言 Graphics bg; Image backimage; // ----------------------------------------------------------- public void init() { // 初期処理 // ダブルバッファリング初期宣言 backimage = createImage( 480, 560 ); bg = backimage.getGraphics(); // 画像(image.jpg)を変数(img)に読みこむ img = getImage(getDocumentBase(), "image.jpg"); // MediaTracker を使って画像の読みこみが終わるまで待つ MediaTracker mt = new MediaTracker(this); mt.addImage( img, 0); try { mt.waitForAll(); } catch (Exception e) { System.out.println("ERROR!!"); } // 裏画面に img を作画 bg.drawImage( img, 0, 0, this); int r, x1, y1, x2, y2; // 300回ランダムにパネルを入れ替える for ( r=0; r<300 ; r++) { // ランダムで動かすパネルを決める x1 = (int) (6 * Math.random());// ランダム発生 y1 = (int) (6 * Math.random());// ランダム発生 x2 = (int) (6 * Math.random());// ランダム発生 y2 = (int) (6 * Math.random());// ランダム発生 // ランダム1のパネルを、裏画面左下にコピー kcopy( x1, y1, 0, 6); // ランダム2のパネルをランダム1の場所にコピー kcopy( x2, y2, x1, y1); // 裏画面左下のパネルをランダム2の場所にコピー kcopy( 0, 6, x2, y2); } // for } // init() // ----------------------------------------------------------- public void paint(Graphics g) { // 作画処理 // 裏画像を表に転送 g.drawImage( backimage, 0, 0, null ); } // paint() // ----------------------------------------------------------- public void update(Graphics g) { // 再作画処理 paint( g ); } // update() // ----------------------------------------------------------- public boolean mouseDown(Event e, int x, int y) { // マウスダウン // マウスがクリックされた場所のパネルを調べる int px, py; px= (int)( x/80 ); py= (int)( y/80 ); // 左上のパネルを裏画面左下にコピー kcopy( 0, 0, 0, 6); // クリックされた場所のパネルを左上にコピー kcopy( px, py, 0, 0); // 裏画面左下パネルをクリックされた場所にコピー kcopy( 0, 6, px, py); // 再作画 repaint(); return true; } // mouseDown() // ----------------------------------------------------------- public boolean mouseUp(Event e, int x, int y) { // マウスアップ return true; } // mouseUp() // ----------------------------------------------------------- public boolean mouseDrag(Event e, int x, int y) { // マウス移動 return true; } // mouseDrag() // ----------------------------------------------------------- // 簡単コピー関数 kcopy() void kcopy( int x, int y, int dx, int dy) { bg.copyArea( x*80, y*80, 80, 80,(dx-x)*80, (dy-y)*80 ); } // =============================================================== } // End of Class