JAVAプログラミング講座 宇宙のJAVAさん

- STORY 7 -



くま先生 こんにちは、みなさん!!

ミャンちゃん こんにちみゃん!!

うし君 もぉ〜

くま先生 さて、現在製作中のパズルゲームもこの講座でついに完成します。
気合を入れていきましょう!!!

うし君ミャンちゃん はーい!

くま先生 えーと、どこまで作ったんだっけな????

ミャンちゃん パネルをランダムで入替えたところみゃん!!!

くま先生 そうでした!!
最近いろいろなプログラムを作っているので、ちょっと失念していました・・・

うし君 しっかりして欲しいもー


くま先生 では気を取り直して、続きを作ります。
最初、2枚のパネルをクリックするとそれらのパネルが入れ替わるゲームを考えていました。

うし君 なるほどもー。 そうやって、CGを完成させるのかもー

くま先生 でも、2枚のパネルを選んで入替えるプログラムは、ちょっとだけ面倒なんです・・・
で、冬眠中にいろいろ考えました。

結局、 クリックしたパネルが左上のパネルと入れ替わる プログラムにする事にしました。

この方が2枚を取り換えるより、面白いゲームになりそうなので・・・・

ミャンちゃん それも、面白そうだみゃん!!!

くま先生 早速作っていきましょう!!
マウスのクリックで、パネルを入れ替えます。
マウスをクリックしたときに実行される関数はなんでしたか???

ミャンちゃん mouseDown() だみゃ!!!

くま先生 そうです!! mouseDown() にプログラムしていきます。

くま先生 最初にクリックしたときに、どのパネル上でクリックされたか、知る必要があります。
どのパネルを入替えるか、判らないと困りますので・・・

うし君 どうするも〜???

くま先生 mouseDown() 関数は、クリックされた座標を受け取ります。

mouseDown(Event e, int x, int y) {

int x がクリックされたX座標、 int y がクリックされたY座標です。 

そこで、クリックされたパネルを、この x, y を使って割り出します。

うし君 なるほども〜 わかったもー

くま先生 じゃ、牛君!
クリックされたパネルが縦横何番目のパネルか調べるプログラムを組んでください!!
パネル座標は変数 px , py に入れてくださいね!

うし君 パネルの大きさが 80 x 80 だから、クリックされた座標を 80 で割ると、パネル座標がでるもー!!
こうだもー!!

    public boolean mouseDown(Event e, int x, int y) { // マウスダウン
       
        int px, py;
        px= (int)( x/80 );
        py= (int)( y/80 );

       
        return true;
    } // mouseDown()

くま先生 そうです!! 牛君!!
クリックされたパネルがこれでわかりました・・・

くま先生 次にパネル座標 ( px, py )のパネルと、パネル座標 ( 0, 0 )のパネル(左上のパネル)を入替えます!!
みゃあちゃん、わかりますか??

ミャンちゃん 画像の入替えってどうやるみゃ???

くま先生 ランダムで入替えたときとまったく同様です!! kcopy() を使って入替えてください!

ミャンちゃん わかったみゃん!!

くま先生 あと、入替えた後、入替えた画面を表示するために、 repaint() (再作画) 命令を入れてください!!

ミャンちゃん みゃん!

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

くま先生 その通りです!! で、なんとこれで完成です!!!!!

ミャンちゃん 完成だみゃん!!

くま先生 さっそくコンパイルして実行してください!!

うし君 コンパイルして・・・・ お、動いたもー!!!

最初の動作画面

ミャンちゃん わーい!! クリックするとパネルが入れ替わるみゃん!!
さっそくCGを完成させるみゃん!!!

うし君 ぼくも負けないもーーーー!!

ミャンちゃんうし君 ・・・・・・・・・・・・ (T_T)

 

くま先生 ??? どうしました???

うし君 難しすぎるもー!!!!!!!!!

ミャンちゃん こんなの、「完成図」がないと解けないみゃん!!!!!!!!!

くま先生 やはりそうでしたか。
安心してください!!! そういう場合は、CGに枠を描き込みましょう!!!!!

くま先生 これで、どうですか??? KumaPuzzle.javaKumaPuzzle.classダウンロード

うし君 なるほど。 これなら何とか解けるもー

ミャンちゃん おもしろいみゃん!!!

ミャンちゃんうし君 やった!! CGが完成したみゃん(も〜)!!!

ミャンちゃん このプログラムは僕のホームページに置いていいのかみゃん???

くま先生 もちろんです!! この「宇宙のJAVAさん」の講座の中で紹介したプログラムは、パブリックウェアです。 著作権も破棄しているので、ソースをいじって公開してもOKですし、ダウンロードした瞬間から、君のプログラムです(笑)

ミャンちゃん じゃ、さっそく ロリロリいや〜んなCG を使って、パズルゲームを公開するみゃん!!

うし君 ぼくも自分のホームページで、公開するもー

くま先生 ついに JAVAゲーム が完成しましたとさ!!

 

めでたし、めでたし

 


クマ・ザ・グレート CGパズル(仮名) -番外編-

 

くま先生 ZZZ・・・

うし君 くま先生!!

くま先生 ん? なんですか??

うし君 このパズルゲームには、CG完成の判定が無いのかも〜???

 

くま先生 ZZZ・・・

うし君 くま先生!!

 

くま先生 ん? なんですか??

うし君 だから! 普通のパズルゲームは完成すると、次の面に進んだり、ボーナスCGが出て来たりするも〜

 

くま先生 ZZZ・・・

うし君 モモモモモモモモモモ・・・・・・・・

 

くま先生 失礼しました・・・ (-_-;)
じつは、CGが完成したかどうかの判定プログラムは、結構難しいのですよ・・・

うし君 どんな感じで完成判定するか知りたいもー。

くま先生 じゃ、完成判定をパズルゲームに付けてみます。
プログラムの説明はしないので、ソースを見て勉強してください・・・
ソースプログラムにコメントを多数つけておきますので・・・

うし君 わかったも〜

くま先生 では、少し待っていてください。

 

くま先生 (カチ、カチ、カチ、カチ・・・)

 

くま先生 出来ました!! これが完成判定付きのパズルです! KumaPuzzle.javaKumaPuzzle.classダウンロード

うし君 なるほど! 配列に数字を入れておいて、パネルを入替えるたびに、配列の数字が順番にそろっているかチェックしてるのかもーー!!

くま先生 そうです。 さらにプログラムを改造すれば、CGが完成した時にボーナスCGを出すのも可能です。

うし君 じゃ、僕はこっちの「完成判定付きのパズルゲーム」の方を、自分のホームページで公開するもー!!!

 

くま先生 ところで、みゃあちゃんを見かけませんが・・・??

うし君 みゃあちゃんなら、アングラサイトをうろついて、パズルゲームにつかう女の猫(こ)の画像を探しているも〜

くま先生 ・・・

くま先生 そのうち捕まるんじゃないんですか????

うし君 「時代は猫耳みゃ!!」と叫んで、探しまくっているも〜

くま先生 それは、素晴らしい意見ですね。

くま先生 では、おやすみなさい・・・

 

くま先生 ZZZ・・・

 

 

 

宇宙のJAVAさん 第1部 完


戻る