/*********************************************************************** * a93sj001.java 15パズルのアプレット rel.04 (1997-09-01) * (c)1997 AOTAKA ***********************************************************************/ import java.applet.*; import java.awt.*; import a93sj001Frame; public class a93sj001 extends Applet { public int x_max=4; public int y_max=4; public int iCount=-1; //手数を記憶 & -1 のときはパズル固定 public a93sj001Button[][] b=new a93sj001Button[x_max][y_max]; Label tesu; //手数を表示するラベル public a93sj001(){ for(int j=0;j0){ //(左のブロックを)右へ num=b[x-1][y].getNum(); b[x-1][y].setNum(0); b[x][y].setNum(num); addTesu(); return(true); } if(n==2 && y>0){ //(上のブロックを)下へ num=b[x][y-1].getNum(); b[x][y-1].setNum(0); b[x][y].setNum(num); addTesu(); return(true); } if(n==3 && x0){ //左 if(b[x-1][y].getNum()==0){ num=b[x][y].getNum(); b[x][y].setNum(0); b[x-1][y].setNum(num); addTesu(); return(true); } } if(x < x_max-1){ //右 if(b[x+1][y].getNum()==0){ num=b[x][y].getNum(); b[x][y].setNum(0); b[x+1][y].setNum(num); addTesu(); return(true); } } if(y>0){ //上 if(b[x][y-1].getNum()==0){ num=b[x][y].getNum(); b[x][y].setNum(0); b[x][y-1].setNum(num); addTesu(); return(true); } } if(y < y_max-1){ //下 if(b[x][y+1].getNum()==0){ num=b[x][y].getNum(); b[x][y].setNum(0); b[x][y+1].setNum(num); addTesu(); return(true); } } return(false); } //スタンドアロンアプリケーションサポート: アプレットがスタンドアロン //で実行可能な場合はm_fStandAloneはtrueに設定されます //------------------------------------------------------------------ boolean m_fStandAlone = false; //スタンドアロン時のサポート public static void main(String args[]) { //アプレットa93sj001を含むためのトップレベルウィンドウを作成します //-------------------------------------------------------------- a93sj001Frame frame = new a93sj001Frame("15Puzzle"); frame.show(); frame.hide(); frame.resize(frame.insets().left + frame.insets().right + 120, frame.insets().top + frame.insets().bottom + 200); //以下のコードはフレームウィンドウ内で実行するアプレットを起動し //ます。またコマンドラインからパラメータ値を取得するために //GetParameters()を呼び出してinit()にHTMLページからパラメータ値を //取得させないようm_fStandAloneにtrueを設定します。 //-------------------------------------------------------------- a93sj001 applet_a93sj001 = new a93sj001(); frame.add("Center", applet_a93sj001); applet_a93sj001.m_fStandAlone = true; applet_a93sj001.init(); applet_a93sj001.start(); frame.show(); } //アプレット情報のサポート public String getAppletInfo() { return "名前: a93sj001 青木貴彦\r\n" + "著作者: aotaka\r\n" + "Microsoft Visual J++ Version 1.0 で作成されました\r\n" + "1997-08-05 first-build\r\n" + " 08-20 VJ++ Compiler のバグ回避措置\r\n" + " 08-27 VJ++ Compiler を Version 1.01.6285 に変更\r\n" + "1997-09-01 アプレットビュアー対応版first-build(クラス名変更)"; } }