冬の寒い夜、ふりしきる雪の中に雪だるまが一つ。 夜空には妖艶な輝きを放つ月が描かれています。 夜空をクリックすると流れ星がふりそそぎ、 地面をクリックすると雪だるまが現れます。
//友澤孝規 340646E 雪だるまと月の絵です。 //夜空をマウスでクリックすると、星が流れてきます。 //地面をマウスでクリックすると、雪だるまが現れます。 // アプレットを使うためjava.applet.*をimportする import java.applet.*; // AWTを使うので java.awt.*を import する import java.awt.*; // イベント駆動関係のクラスを用いるためjava.awt.event.*をimportする import java.awt.event.*; //Vectorクラスを用いるため java.util.*をimportする import java.util.*; //星のクラスを定義する class Star{ //星の場所をintで保持する public int place_x,place_y; //Starのコンストラクタをつくる public Star(int x1,int y1){ place_x=x1; place_y=y1;} } //画像をいれるためのクラスを定義する class DrawImage extends Canvas{ Image image1,image2;//画像のための変数を定義 //コンストラクタをつくる DrawImage(){ super(); } } // アプレットはpublicである必要がある public class Kadai1209 extends Applet implements KeyListener, MouseListener, MouseMotionListener,ActionListener { //変数の定義 Vector starArray; Button button; Random r= new Random(); String message=""; //インスタンス化する DrawImage frame = new DrawImage(); //コンストラクタをつくる //publicである必要がある public Kadai1209(){ addKeyListener(this); addMouseListener(this); addMouseMotionListener(this); starArray=new Vector(); //配置を決める setLayout(new FlowLayout()); // 「Theme」というラベルを持つボタンを作り,window中に配置 add(button= new Button("Theme")); button.addActionListener(this); } public void init(){ //フレームのサイズをきめてつくる frame.image1=getImage(getCodeBase(),"star.png"); frame.image2=getImage(getCodeBase(),"snowman.png"); frame.setSize(400,400); frame.setVisible(true); } public void actionPerformed(ActionEvent e){ System.out.println(e); Object source=e.getSource(); if(source instanceof Button){ String label=e.getActionCommand(); // 押されたボタンのラベルが"Theme"かどうかのチェック if(label.equals("Theme")){ message="winter in the dark"; repaint();//再表示する } } } //画面のちらつきをなくす Image offScreenImage; Graphics offScreenGraphics; public void update(Graphics g){ if(offScreenImage==null){ offScreenImage=createImage(600,400); // オフスクリーンイメージを600x400のサイズで作成 offScreenGraphics=offScreenImage.getGraphics(); // オフスクリーンイメージに描画するための Graphics オブジェクト } paint(offScreenGraphics); // 次の画面のイメージを作る. g.drawImage(offScreenImage,0,0,this); // イメージを本物のスクリーンに書き込む } // インスタンス変数にしたがって描画するコードを書く public void paint(Graphics g){ int i; g.setColor(Color.black); g.fillRect(0,0,400,200); g.setColor(Color.blue); g.fillRect(0,200,400,250); g.setColor(new Color(230,230,230)); g.fillRect(0,250,400,400); g.setColor(Color.red); g.fillArc(260,60,60,60,0,360); g.setColor(Color.white); g.fillArc(100,190,70,70,0,360); g.fillArc(100,250,100,100,0,360); g.setColor(Color.blue); g.fillArc(130,220,10,10,0,360); g.fillArc(150,210,10,10,0,360); g.setColor(Color.black); g.drawLine(190,280,220,250); g.drawLine(110,300,75,290); g.setColor(Color.red); g.fillArc(150,270,10,10,0,360); g.fillArc(155,290,10,10,0,360); g.fillArc(160,310,10,10,0,360); int size=starArray.size(); for(i=0;i250&(l.place_x>200||l.place_x<70 )) g.drawImage(frame.image2,l.place_x,l.place_y,30,30,this); } for(int j=0;j<400;j++){ int snow_x=r.nextInt(400); int snow_y=r.nextInt(400); int snow_r=r.nextInt(6)+1; g.setColor(Color.white); g.fillOval(snow_x,snow_y,snow_r,snow_r); } g.setColor(Color.black); g.drawString(message,250,300); } public void keyPressed(KeyEvent e){} public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} // MouseListenerを実装するためのメソッド public void mousePressed(MouseEvent e){ // 押された時のマウスカーソルの位置を得る int mx=e.getX(),my=e.getY(); // デバッグ用の表示 System.out.println("mousePressed("+e+","+mx+","+my+")"); //星の場所を登録 starArray.addElement(new Star(mx,my)); // 再表示をおこなう repaint(); } public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} }