プロが教える店舗&オフィスのセキュリティ対策術

アプレットを勉強している初心者です。
落ちものゲームを作ろうと思い、本に載っているサンプルを分かるところから書いていこうとしています。
そうしたら(もちろんまだ全体の途中、というか始めたばかりですが)タイトルのようなエラーが出てしまいました。
今の段階でのソースを載せるので、もし分かる方がいたら、よろしくお願いします。

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);

}
}

A 回答 (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;//盤面にはブロックはない
}

これ以外の場所だったらもう一回考えてくる
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/12 01:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!