課題 12/9

341069I 高原 詩朗


アプレット

使用した画像


プログラムの説明

341069I
高原詩朗
月と雪だるまの絵です。雪はforをつかって画面一面に散らせてみました。
マウスをクリックするとあめがでます。
Snow Falls ボタンを押すと雪が下に落ちて行きます。
Clear Appearボタンで、バックの雪を消したり現したり出来ます。


ソースコード

//  
//341069I
//高原詩朗
//月と雪だるまの絵です。雪はforをつかって画面一面に散らせてみました。
//マウスをクリックするとあめがでます。
//Snow Falls ボタンを押すと雪が下に落ちて行きます。
//Clear Appearボタンで、バックの雪を消したり現したり出来ます。


import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.util.*;
import java.applet.*;

class Sizuku{
  // mouseをクリックしたX座標,Y座標を int で保持する.
    public int x,y;
  // Sizukuのコンストラクタ
    public Sizuku(int x1,int x2){
	x=x1;
	y=x2;
    }
}

//keyListenerと MouseListenerを使う
class Falls extends Canvas implements KeyListener, MouseListener{

	
    //Imageクラスの imageを定義
    Image image;
  	//雪が降るときに少し動くという乱数sonwxの作成準備
	Random r=new Random();int snowx=0;
    //可変配列としてをrain作成
    Vector rain;
	//雪があるかないかを判定する引数nclear
    boolean nclear = true;
	//雪の降り方に用いる。
    int k=0 , t = 0;
    public Falls(){
	super();
	image=Toolkit.getDefaultToolkit().getImage("rain.png");
	addKeyListener(this);
	addMouseListener(this);
	setSize(400,400);
	rain= new Vector();
	
    }

    Image offScreenImage;
    Graphics offScreenGraphics;
    public void update(Graphics g){
	if(offScreenImage==null){
      offScreenImage=createImage(400,400);// オフスクリーンイメージを600x400のサイズで作成
      offScreenGraphics=offScreenImage.getGraphics(); // オフスクリーンイメ-ジに描画するための Graphics オブジェクト
	}
    paint(offScreenGraphics); // 次の画面のイメージを作る.
    g.drawImage(offScreenImage,0,0,this); // イメージ本物のスクリーンに書込む
    }
	
    public void paint(Graphics g){
  
      	//背景色
        g.setColor(Color.black);
        g.fillRect(0,0,400,101);
	for(int i = 0 ; i < 70 ; i++){
	    g.setColor(new Color(0,0,20+i));
	    g.fillRect(0,100+i,400,100+i);
	}
		
        //地面の雪
        for(int i = 0 ; i < 70 ; i++){
	    g.setColor(new Color(160,160,170+i));
	    g.fillRect(0,190+i,400,190+i);
		}
		
        //道
        g.setColor(new Color(100,100,100));
        int[] xs0={50,100,280,150};
    	int[] ys0={190,190,400,400};
    	g.fillPolygon(xs0,ys0,4);
        
        //月
        g.setColor(Color.yellow);
        g.fillOval(50,90,30,30);
        g.setColor(Color.black);
        g.fillOval(40,80,30,30);
           
        //雪だるまん
        	
		//からだ
		for(int i = 0 ; i < 50 ; i++){
	    	g.setColor(new Color(150+2*i,150+2*i,200+i));
        	g.fillOval(250+i,250+i,100-2*i,100-2*i);
    	}
	
		for(int i = 0 ; i < 25 ; i++){
	    	g.setColor(new Color(150+4*i,150+4*i,200+2*i));
	    	g.fillOval(270+i,180+i,80-16/5*i,80-16/5*i);
		}

        //帽子

        g.setColor(Color.blue);
        int[] xs1={338,335,295,310};
        int[] ys1={152,190,180,145};
        g.fillPolygon(xs1,ys1,4);
        //目
        g.setColor(Color.black);
        g.fillOval(285,200,8,8);
        g.fillOval(305,203,8,8);
           
        //ゆきだるまんここまで   
 
        //降ってる雪
	//ncleartrueがなら雪を降らす
        if(nclear){
        	g.setColor(new Color(210,210,255));
        
        	for(int i = 0 ; i < 400 ; i = i+20){
		    for(int j = 0 ; j < 400 ; j = j+20){
               		g.fillOval(i+snowx, j+k, 3,3);
             	 	 	g.fillOval(i+10+snowx, j+10+k, 3,3);
		    }
        	}
        }
        
        
	//絵を表示させる
	int size = rain.size();
	for(int p= 0 ; p