学籍番号:055720A
名 前 :小橋川 俊

Java Applet/AWTについて学び、Java Appletのオリジナルプログラムを作 成し解説せよ

◎ソース

mport java.applet.*;//-----------------------------(1) import java.awt.*; import java.awt.event.*; import java.awt.Image.*; public class Report8 extends Applet implements MouseMotionListener ,MouseListener //-------------(2) { Thread t; Image himage; //背景イメージ Graphics hga; //背景画像 Image uimage; //裏画像イメージ Graphics uga; //裏画像 Graphics g; //円の画像 int h = 300; //高さ int ha = 300; //幅 int ch = 50; //クリップ高さ int cha = 50; //クリップ幅 int cx = cha * -1; //クリップx軸開始位置 int cy = ch * -1; //クリップy軸開始位置 int bx = 0; int by = 0; int score = 0; //得点 int i = 0; public void init() { //---------------(4) /* マウスの動きをアプレット自身が捕捉する */ this.addMouseMotionListener(this); this.addMouseListener(this); //AudioClip ac へ参照を代入 /* 裏画面の準備 */ //-----------------(5) uimage = createImage(ha,h); uga = uimage.getGraphics(); uga.setColor(Color.black); uga.fillRect(0,0,ha,h); /* 背景画像の準備 */ himage = createImage(ha,h); hga = himage.getGraphics(); hga.setColor(Color.white); hga.fillRect(0,0,ha,h); } /*ちらつき防止*/ //----------------(6) public void update(Graphics k) { paint(k); } public void paint(Graphics k) { k.drawImage(uimage,0,0,this); } /* コンポーネント上でマウスがドラッグされたときに呼び出される */ // -----(7) public void mouseDragged(MouseEvent e) { doAction2(e); } /* コンポーネント上でマウスが移動すると呼び出される */ public void mouseMoved(MouseEvent e) { doAction2(e); } public void mouseClicked(MouseEvent e) { hga.setColor(Color.white); hga.fillOval(cx+16,cy+16,25,25); if((cx-9 < bx)&&(bx < cx+41)&&(cy-9 < by)&&(by < cy+41)){ score += 10; }; } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void doAction2(MouseEvent e) { //-----------(8) /* 裏画面の描画 */ uga.setColor(Color.black); uga.fillRect(0,0,ha,h); cx = e.getX()-(cha/2); cy = e.getY()-(ch/2); uga.setClip(cx, cy, cha, ch); uga.drawImage(himage,0,0,this); uga.drawLine(cx+25,cy+22,cx+25,cy+28); //----------(9) uga.drawLine(cx+22,cy+25,cx+28,cy+25); uga.drawOval(cx+20,cy+20,10,10); uga.drawOval(cx+16,cy+16,18,18); uga.drawOval(cx+11,cy+11,28,28); uga.drawLine(cx+25,cy+19,cx+25,cy+11); uga.drawLine(cx+25,cy+31,cx+25,cy+39); uga.drawLine(cx+19,cy+25,cx+11,cy+25); uga.drawLine(cx+31,cy+25,cx+39,cy+25); hga.setColor(Color.red); hga.fillOval(bx, by, 16, 16); i += 1; // 円をランダムに出現させる if(i % 100 == 0){ bx = (int)(Math.random() * ha); by = (int)(Math.random() * h); i= 0; } uga.setColor(Color.green); uga.setFont(new Font("Arial", Font.BOLD, 35)); uga.drawString("スコア:"+score, 30, 100); /* アプレットの描画 */ repaint(); } }


○説明  マウスの周りをスポットライトのように画像を表示し、クリックして増えていく赤い円を消していくアプレット。  円を一つ消すと、スコア+10!ちなみに制限時間はありません。

○実行結果

○考察 最後のレポートは、先輩のレポートをベースに 内容を付け加えてゲームのようにしてみました。
○参考文献 独習Java第3版

Wiki に戻る 戻るー>