雪だるまと月

冬の寒い夜、ふりしきる雪の中に雪だるまが一つ。 夜空には妖艶な輝きを放つ月が描かれています。 夜空をクリックすると流れ星がふりそそぎ、 地面をクリックすると雪だるまが現れます。


アプレット


ソースコード

//友澤孝規 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){}
    
}


イメージファイル