Start:アプレットは初期化されていません、、というエラーが出る。

このQ&Aのポイント
  • アプレットを勉強している初心者です。落ちものゲームを作ろうと思い、本に載っているサンプルを分かるところから書いていこうとしています。そうしたら(もちろんまだ全体の途中、というか始めたばかりですが)タイトルのようなエラーが出てしまいました。今の段階でのソースを載せるので、もし分かる方がいたら、よろしくお願いします。
  • アプレットを勉強している初心者が落ちものゲームを作ろうとしていますが、タイトルのエラーが発生しました。ソースコードを以下に記載しますので、分かる方がいればご教示願います。
  • アプレットの初心者が落ちものゲームの制作に挑戦していますが、今の段階で「アプレットは初期化されていません」というエラーが表示されます。以下にソースコードを掲載しますので、お分かりになる方は、ご教示ください。
回答を見る
  • ベストアンサー

Start:アプレットは初期化されていません、、というエラーが出る。

アプレットを勉強している初心者です。 落ちものゲームを作ろうと思い、本に載っているサンプルを分かるところから書いていこうとしています。 そうしたら(もちろんまだ全体の途中、というか始めたばかりですが)タイトルのようなエラーが出てしまいました。 今の段階でのソースを載せるので、もし分かる方がいたら、よろしくお願いします。 import java.applet.Applet; import java.awt.*; import java.util.*; import java.awt.event.*; public class jisaku extends Applet{ int square = 8; int nw = 23; int nh = 24;//ブロック位置の最大数 int block[][] = new int[4][4];//動くブロックの形 int board[][] = new int[nh+1][nw+1];//盤面にあるブロックの有無 Dimension d;//表示スクリーン Image offs;//オフスクリーン Graphics grf; public void init(){ //********盤面のブロックの初期化(board[][]の初期化(=フィールドと枠)だけ)************ //フィールドにはブロックはない for(int i = 0; i <= nh; i++){ for(int j = 0; i <= nw; j++){ board[i][j] = 0;//盤面にはブロックはない } } //左右下の固定ブロック for(int i = 0; i <= nh; i++){ for(int j = 0; j <= nw; j++){ board[i][j] = 2; board[i][nw-j] = 1; } } for(int i = 0; i < 3; i++){ for(int j = 0; j <= nw; j++){ board[nh-i][j] = 2; } } //************オフスクリーンの設定********* d = getSize(); offs = createImage(d.width, d.height); grf = offs.getGraphics(); } public void paint(Graphics g){ update(g); } public void update(Graphics g){ //[grf]はオフスクリーンのグラフィックスオブジェクト(というのかな?) //バックをオレンジで塗る grf.setColor(Color.orange); grf.fillRect(0,0,d.width,d.height); //ブロックを描く grf.setColor(Color.blue); for(int i = 0; i <= nh; i++){ for(int j = 0; j <= nw; j++){ if(board[i][j] >= 1){ grf.fillRect(j*square, i*square, square, square); } } } //左右下の枠を描く grf.setColor(Color.red); for(int i = 0; i <= nh; i++){ for(int j = 0; j <3; j++){ grf.fillRect(j*square, i*square, square, square); grf.fillRect((nw-j)*square, i*square, square, square); } } for(int i =0; i < 3; i++){ for(int j = 0; j <= nw; j++){ grf.fillRect(j*square, (nh-i)*square, square, square); } } g.drawImage(offs, 0, 0, this); } }

  • rapun
  • お礼率65% (196/300)
  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

んー、俺のところでは言われたエラーは出ないけどな。 変わりにjava.lang.ArrayIndexOutOfBoundsExceptionは出たがな。 なんだろなーって考えたらここだ。 //フィールドにはブロックはない for(int i = 0; i <= nh; i++){ //良く見ると終了条件でnwと比較しているのはjじゃなくてiだ! for(int j = 0; i <= nw; j++){ board[i][j] = 0;//盤面にはブロックはない } これ以外の場所だったらもう一回考えてくる }

rapun
質問者

お礼

ありがとうございます。 言われたところで解決しました。

関連するQ&A

  • エラーの対処法を教えてください2

    続き a[0][0] = a[5][5]; a[0][6] = a[5][1]; a[6][0] = a[1][5]; a[6][6] = a[1][1]; for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ if(a[i][j] == 0){ g.setColor(Color.black); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); }else{ g.setColor(Color.white); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); } } } repaint(); } } どなたかお教えください。

  • javaのエラーの意味がわかりません、お願いします

    今日は、javaを勉強している初心者です。 以下のコードを書いてやりましたが、「sleep(Graphics)は引数()に適用できません」、「Color.Whiteを解決できません」とエラーがでます、エラーの意味が分かりません。 一体何処が間違っているのでしょうか、宜しくお願いします。 ===================================================================== public class ani_Moving_Ball extends Applet { int x; public void paint(Graphics g) { for(x=0 ; x<180 ; ++x) { clear(g); g.drawOval(x,90,19,19); sleep(); } } public void clear(Graphics g) { g.setColor(Color.White); g.fillRect(0,80,200,40); g.setColor(Color.Black); } public void sleep(Graphics g) { double s=0.0; for (int j=1 ; j<100 ; ++j) { for (int k=1 ; k<100 ; ++k) { s =+ Math.sin((double)j); } } } }

    • ベストアンサー
    • Java
  • エラーの対処法を教えてください

    メソッドの宣言が不正です。戻り値の型が必要です。 public Window(int width, int height){ というエラーメッセージが出たのですが解決方法をどなたかお教えください。 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*; public class Kadai extends JFrame implements ActionListener { private Timer timer; private int a[][] = new int[7][7]; private int b[][] = new int[7][7]; public Window(int width, int height){ setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(width, height); setVisible(true); } public static void main(String[] args) { Window window = new Window(640, 480); } public void paint(Graphics g){ g.setColor(Color.black); for (int i=5; i<26; i++){ g.drawLine(i * 10, 50, i * 10, 250); g.drawLine(50, i * 10, 250, i * 10); } } public static void main(String args[]) { Random rand = new Random(); for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ a[i][j] = rand.nextInt(2); } } for (int i=1; i<6; i++){ a[i][0] = a[i][5]; a[0][i] = a[5][i]; a[i][6] = a[i][1]; a[6][i] = a[1][i]; } a[0][0] = a[5][5]; a[0][6] = a[5][1]; a[6][0] = a[1][5]; a[6][6] = a[1][1]; for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ if(a[i][j] == 0){ g.setColor(Color.black); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); }else{ g.setColor(Color.white); g.fillRect(40 + i * 10, 40 + j * 10, 10, 10); } } } } public Kadai() { timer = new Timer( 50, this ); timer.start(); } public void actionPerformed( ActionEvent e ) { for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ if(a[i][j] = 0){ if(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1] == 2 && a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1] == 3){ b[i][j] = 0; }else{ b[i][j] = 1; } }else{ if(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1] == 3){ b[i][j] = 0; }else{ b[i][j] = 1; } } } } for (int i=1; i<6; i++){ for (int j=1; j<6; j++){ b[i][j] = a[i][j]; } } for (int i=1; i<6; i++){ a[i][0] = a[i][5]; a[0][i] = a[5][i]; a[i][6] = a[i][1]; a[6][i] = a[1][i]; } 2に続きます。

  • アプレットが初期化されていません。

    パッケージを使用してプログラムを書いたのですが、タイトルのとおりのメッセージがでます。コンパイルはしっかり通るのですが、どなたかお力をお貸しください。 ちなみに、Report2.html、Report2.javaは以下のとおりです。 <html> <body> <applet code="rep.Report2.class" width="400" height="200"> </applet> </body> </html> package rep; import gol.Goal; import bx.Box; import bx.BoxException; import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Button; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Report2 extends Applet implements Runnable, ActionListener{ Goal gol; //Boxオブジェクトがはいるゴール Box[] box; Button[] bt; int mxp; //マウスボタン押下時のx座標 int myp; //マウスボタン押下時のy座標 public void init(){ addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ mxp=e.getX(); myp=e.getY(); } public void mouseReleased(MouseEvent e){ int temp=Box.getSum(); if(temp<box.length){ //マウスボタンを離した座標 int mxr=e.getX(); int myr=e.getY(); if(mxp==mxr && myp==myr){ //押すのと離すのが同じ box[temp]=new Box(gol, mxp, myp); } else{ //押すのと離すのが違う int mw=Math.abs(mxp-mxr); int mh=Math.abs(myp-myr); box[temp]=new Box(gol, Math.min(mxp, myr), Math.min(myp, myr), mw, mh); } box[temp].start(); } } }); Goal gol=new Goal(); box=new Box[3]; bt=new Button[2]; bt[0]=new Button("Box"); bt[1]=new Button("small"); for(int i=0; i<bt.length; i++){ add(bt[i]); bt[i].addActionListener(this); } Thread th; th=new Thread(this); th.start(); } public void run(){ while(true){ repaint(); try{ Thread.sleep(50); } catch(InterruptedException e){ } } } public void actionPerformed(ActionEvent ae){ int temp=Box.getSum(); if(ae.getSource()==bt[0]){ if(temp<box.length){ box[temp]=new Box(gol); box[temp].start(); } } else if(ae.getSource()==bt[1]){ for(int i=0; i<temp; i++){ try{ box[i].setHeight(box[i].getHeight()-10); } catch(BoxException e){ System.out.println(e +"が送出されました。"); } } } } public void paint(Graphics g){ g.setColor(Color.red); for(int i=0; i<box.length; i++) if(box[i] !=null) g.fillRect(box[i].getX(), box[i].getY(), box[i].getWidth(), box[i].getHeight()); g.setColor(Color.black); g.drawString("得点" + gol.getScore(), 10, 80); } }

  • ライフゲームにボタンを押すと何度も自動で更新されるように作りたいのです

    ライフゲームにボタンを押すと何度も自動で更新されるように作りたいのですが ↓を変えて更新されるようにするにはどうすればいいですか? public class Lifegame extends Applet implements ActionListener{ int hani = 30; int xy = 15; int sikaku = xy-2; int [][]a = new int[hani][hani]; int [][]b = new int[hani][hani]; Button button; public void init(){ for(int i=0; i < hani; i++) { for(int j = 0;j < hani; j++) { if(i==0 || j == 0 || i == hani || j == hani){ b[i][j] =0; }else{ b[i][j] = (int)(Math.random()*2); } } } button = new Button("更新"); button.addActionListener(this); add(button); } public void paint(Graphics g){ for(int i = 1; i < hani - 1; i++){ for(int j = 1; j < hani - 1; j++){ if(b[i][j] == 1){ g.setColor(Color.green); g.fillRect(i*xy, 30+j*xy, sikaku, sikaku); }else if(b[i][j] == 0){ g.setColor(Color.black); g.fillRect(i*xy, 30+j*xy, sikaku, sikaku); } } } } public void actionPerformed(ActionEvent arg0){ for(int i = 1; i < hani - 1; i++){ for(int j = 1; j < hani - 1; j++){ a[i][j] = b[i][j]; } } for(int i = 1; i < hani - 1; i++) { for(int j = 1; j < hani - 1; j++) { int hantei = a[i - 1][j - 1] + a[i - 1][j] + a[i - 1][j + 1] + a[i][j-1] + a[i][j + 1] + a[i+1][j-1] + a[i+1][j] + a[i+1][j+1]; if(b[i][j] == 1){ if(hantei == 2 || hantei == 3){ b[i][j] = 1; }else{ b[i][j] = 0; } }else if (b[i][j] == 0){ if(hantei == 3){ b[i][j] = 1; }else{ b[i][j] = 0; } } } } repaint(); } } ご回答よろしくお願いします。

    • ベストアンサー
    • Java
  • Java ブロック崩し 当たり判定

    こんにちは、Java初心者の者です。 今週の末に、文化祭があるので、その際の出し物で「ブロック崩し」を出すことにしたのですが、 ブロックの当たり判定がおかしいのです。 おかしいというか、正確にはブロックとの当たり判定自体はあるのですが、ブロックと当たったらブロックが消えるようにしているはずが、消えないのです。 一応、消えてはくれるのですがボールとブロックが離れたらまた元の色に戻ってしまいます。 フラグ管理を使っての処理で、ボールとブロックが触れたらフラグを「偽」。そしたらそれに該当するブロックを描画しないようにする仕組みなのですが、どうも上手くいきません。 以下コードです。 ~~~~中略~~~~ //ブロックの座標の設定 int k=0; for(int j=0;j<block_r;j++) { for(int i=0;i<block_g;i++) { block_x[k] = i*block_w; block_y[k] = j*block_h; block[k] = 1; flag[k] = true; k++; } } //ブロックに当たった時の処理 for(int i=0;i<30;i++) { if(flag[i] == true) { if(y + ball_y >= block_y[i] && y <= block_y[i]+block_h && x + ball_x >= block_x[i] && x <= block_x[i] + block_w) { vy = -vy; flag[i] = false; } } } //ブロックの描画 for(int i=0;i<30;i++) { if(flag[i] == true ) { //ブロックの描画 offg.setColor(Color.yellow); offg.fillRect(block_x[i],block_y[i],block_w,block_h); //ブロックの枠線 offg.setColor(Color.black); offg.drawRect(block_x[i],block_y[i],block_w,block_h); } } ~~~~中略~~~~~ paintメソッドの部分だけ載せてます。 どこかおかしいところがあれば、アドバイスを頂ければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • Cでオセロゲームプログラム

    Cでオセロゲームのプログラムを作ろうと思ってますが 下記のプログラムに構造体、2分木(ゲーム木)、リスト構造、ミンマックス法、バックトラック法等を含みたいのですが どのように書いていったらいいかわかりません。 どなたかわかる方いましたらよろしくお願いします。 #include <stdlib.h> #include <stdio.h> #define BOARD_SIZE 8 #define WALL '*' #define BLACK 'x' #define WHITE 'o' #define NONE ' ' char board[ BOARD_SIZE+2 ][ BOARD_SIZE+2 ] ; void board_initialize() { int i , j ; /* 周囲を壁で囲む */ for( i = 0 ; i < BOARD_SIZE+2 ; i++ ) { board[ 0 ][ i ] = WALL ; board[ BOARD_SIZE+1 ][ i ] = WALL ; board[ i ][ 0 ] = WALL ; board[ i ][ BOARD_SIZE+1 ] = WALL ; } /* 内部を何もない状態にする */ for( i = 1 ; i <= BOARD_SIZE ; i++ ) { for( j = 1 ; j <= BOARD_SIZE ; j++ ) { board[ i ][ j ] = NONE ; } } /* オセロの初期状態の配置 */ board[ BOARD_SIZE/2 ][ BOARD_SIZE/2 ] = WHITE ; board[ BOARD_SIZE/2+1 ][ BOARD_SIZE/2+1 ] = WHITE ; board[ BOARD_SIZE/2 ][ BOARD_SIZE/2+1 ] = BLACK ; board[ BOARD_SIZE/2+1 ][ BOARD_SIZE/2 ] = BLACK ; } void board_print() { int i , j ; printf( " " ) ; for( i = 1 ; i <= BOARD_SIZE ; i++ ) printf( "%2d" , i ) ; printf( "\n" ) ; for( j = 1 ; j <= BOARD_SIZE ; j++ ) { printf( "%2d:" , j ) ; for( i = 1 ; i <= BOARD_SIZE ; i++ ) { switch( board[ j ][ i ] ) { case WALL : printf( "■" ) ; break ; case BLACK : printf( "●" ) ; break ; case WHITE : printf( "○" ) ; break ; case NONE : printf( "+" ) ; break ; } } printf( "\n" ) ; } } int main(void) { board_initialize() ; board_print() ; }

  • java

    java プログラミングで3×3の○×ゲームを作りたいのですが、エラーが出てしまいます。 どこに問題があるかわかりません。 教えていただけたら嬉しいです。 長くなってしまいますが、ご了承ください(コメント一部略)。 import java.io.*; // マスにの中身が // 空白: 0 // O : 1 // X : 2 class ox { // 勝敗の判定をするメソッド // 勝敗が付いていなければ0 を // O の勝ちなら1 を // X の勝ちなら2 を // 引き分けなら-1 を // それぞれ返す。 static int judge( int board[][] ) { int i, j, flag; for( i = 0; i < 3; ++i ) { flag = 1 | 2; for( j = 0; j < 3; ++j ) flag &= board[j][i]; // <=> flag = flag & board[j][i] if( flag != 0 ) return flag; } // 縦の列を調べる for( i = 0; i < 3; ++i ) { flag = 1 | 2; for( j = 0; j < 3; ++j ) flag &= board[i][j]; if( flag != 0 ) return flag; } // 左上→右下のナナメ flag = 1 | 2; for( j = 0; j < 3; ++j ) flag &= board[j][j]; if( flag != 0 ) return flag; // 右上→左下のナナメ flag = 1 | 2; for( j = 0; j < 3; ++j ) flag &= board[2-j][j]; if( flag != 0 ) return flag; // まだ置けるマスがあるかの判定 flag = 1; for( i = 0; i < 3; ++i ) { for( j = 0; j < 3; ++j ) flag *= board[i][j]; } // flag != 0 ってことは、置けるマスは無い→勝負が付いた // どちらかが勝ったのなら、上でreturn しているはず // ということで、引き分け if( flag != 0 ) return -1; // 何事もなければ、勝負続行 return 0; } // 番面の様子を表示するメソッド static void show ( int board[][] ) { String display = ""; String masu[] = { " ", "O", "X" }; int i; display += " |1|2|3\n"; for( i = 0; i < 3; ++i ) { display += "-+-+-+-\n"; display += (i+1) + "|" + masu[board[0][i]] + "|" + masu[board[1][i]] + "|" + masu[board[2} System.out.println( display ); } static int isreach( int three[], int turn ) { int i, result; // 各マスの値を2 乗して足し合わせる result = 0; for( i=0; i<3; ++i ) result += three[i]*three[i]; // リーチなら、下の条件を満たすはず if( result == 2*turn*turn ) { for( i=0; i<3; ++i ) if( three[i] == 0 ) break; return i; } return -1; } static int rival( int board[][] ) { int x,y,i,j,n; int three[] = new int[3]; // x, y が未定である事を明示 for( i=0; i<3; ++i ) { for( j=0; j<3; ++j ) three[j] = board[j][i]; 続きは追記にて

  • アプレットは初期化されていません

    いつもお世話になっています。 早速ですが、appletviewerで見たときにタイトルのように「アプレットは初期化されていません」と出てきます。これを解決するにはどうすればいいのでしょうか?  ちなみに私が作っているのは白黒のみの画像をロードして、黒い部分を四角で覆い重心を求めるというものです。ソースを載せておきます。 import java.applet.*; import java.awt.*; import java.awt.image.*; public class test extends Applet { Image img; // 元のイメージ int img_width = 0; // 元のイメージの幅 int img_height = 0; // 元のイメージの高さ int pix[]; // 元のイメージを格納する配列 int wcnt_pix[]; // 行ごとの黒画素数を格納する配列 int hcnt_pix[]; // 列ごとの黒画素数を格納する配列 int cnt = 0; // 黒画素のカウント用 int cnt_sum = 0; // 黒画素のカウント総数 int chu = 0; // 中心値 int sum1 = 0; int sum2 = 0; int x = 0; int y = 0; int xmax = 0; // 黒画素の右端 int xmin = 0; // 黒画素の左端 int ymax = 0; // 黒画素の上端 int ymin = 0; // 黒画素の下端 public void init(){ img = getImage(getDocumentBase(), "test.jpg"); // イメージのロード MediaTracker mt = new MediaTracker(this); mt.addImage(img, 0); try{ mt.waitForID(0); }catch(InterruptedException e){} // イメージのロード完了まで待機 img_width = img.getWidth(this); // 元のイメージの幅を取得 img_height = img.getHeight(this); // 元のイメージの高さを取得 cntpix(); box_top(); box_bot(); box_rig(); box_lef(); } // 黒画素数のカウント public void cntpix(){ pix = new int[img_width * img_height]; wcnt_pix = new int[img_width]; hcnt_pix = new int[img_height]; try{ PixelGrabber pg = new PixelGrabber(img, 0, 0, img_width, img_height, pix, 0, img_width); pg.grabPixels(); }catch(InterruptedException e){} // 行ごとのカウント for(int wj = 0; wj < img_height; wj++){ cnt = 0; for(int wi = 0; wi < img_width; wi++){ if((pix[wj * img_width + wi] & 255) < 128){ cnt++; } } wcnt_pix[wj] = cnt; cnt_sum = cnt_sum + cnt; } // 列ごとのカウント for(int hi = 0; hi < img_width; hi++){ cnt = 0; for(int hj = 0; hj < img_height; hj++){ if((pix[hj * img_width + hi] & 255) < 128){ cnt++; } } hcnt_pix[hi] = cnt; } chu = cnt_sum / 2; // 中心値 // 中心値より重心が何行目かを求める int i = 0; while(sum1 < chu){ sum1 = sum1 + wcnt_pix[i]; i++; } x = i - 1; // 中心値より重心が何列目かを求める int j = 0; while(sum2 < chu){ sum2 = sum2 + hcnt_pix[j]; j++; } y = j - 1; } // 黒画素の上端を求める public void box_top(){ int ti = 0; while(wcnt_pix[ti] == 0){ ymax = ti; ti++; } } // 黒画素の下端を求める public void box_bot(){ int bi = img_height; while(wcnt_pix[bi] == 0){ ymin = bi; bi--; } } // 黒画素の右端を求める public void box_rig(){ int ri = 0; while(hcnt_pix[ri] == 0){ xmin = ri; ri++; } } // 黒画素の左端を求める public void box_lef(){ int li = img_width; while(hcnt_pix[li] == 0){ xmax = li; li--; } } // 画像等の描画 public void paint(Graphics g){ int dx = x - xmin; // 重心のX座標 int dy = y - ymax; // 重心のY座標 g.drawImage(img, 0, 0, this); g.drawString("このイメージの幅は"+img_width+"で高さは"+img_height+"です。", 0, 20); // 画像の描画 g.drawLine(xmin, ymax, ymax, ymax); g.drawLine(xmin, ymax, xmin, ymin); g.drawLine(xmin, ymin, xmax, ymin); g.drawLine(xmax, ymax, xmax, ymax); // バウンディングボックスの描画 g.setColor(Color.red); g.drawString("重心は、( "+dx+", "+dy+" )です。", 0, 60); // 重心の描画 g.drawLine(x-10, y, x+10, y); // 重心の位置の描画 g.drawLine(x, y+10, x, y-10); // 重心の位置の描画 } }

    • ベストアンサー
    • Java
  • <identifier>エラーについて

    paintメソッド内ではなく、public class直下で図形の表示をしなければならないのですが、どうしても <identifier>がありません とエラーが出てしまいます; 調べてみたのですがわからなかったので指摘をお願いしますorz プログラムは以下の通りです /* <applet code="Reidai25kai.class" width=500 height=600> </applet> */ import java.applet.Applet; import java.awt.*; public class kadaiM extends Applet implements Runnable { int xichi = 100, yichi = 250, xido = 3, yido = 4; int i, mx=225, my=495; int[] bx = {100,150,200,250,300,350, 100,150,200,250,300,350, 100,150,200,250,300,350}; int[] by = {250,250,250,250,250,250, 300,300,300,300,300,300, 350,350,350,350,350,350}; g.setColor(new Color( 0, 255, 0)); g.fillRect(mx, my, mx+50, my+10); g.drawRect(0, 0, 450, 550); for(i=0; i<18; i++) { g.setColor(new Color(255,170,10*i)); g.fillOval(bx[i]-20,by[i]-20,50,50); } public void init() { Thread hyoji; hyoji = new Thread(this); hyoji.start(); } public void run() { for( ; ; ) { try { xichi = xichi + xido; //ボールx座標の更新 yichi = yichi + yido; //ボールy座標の更新 repaint(); if(xichi < 10 || xichi > 440)xido = -xido; //横方向跳ね返り if(yichi < 10 || yichi > 540)yido = -yido; //縦方向跳ね返り Thread.sleep(30); } catch(InterruptedException e){} } } public void paint(Graphics g) { g.setColor(new Color( 0, 0, 255)); g.fillOval(xichi-10, yichi-10, 20, 20); } }

専門家に質問してみよう