xxxxxxxxxx
//コピー2
int _rainNum = 30; //雪の最初の数
int _rainNumCount = 0;
rain[] _rainArr = {};
int c; //背景色の指示のやつ
PImage img1,img2;
float x, y; //x座標、y座標
float xSpeed, ySpeed; //x軸方向のスピ-ド, y軸方向のスピ-ド
float starX,starY; //x座標、y座標
float starXSpeed, starYSpeed; //x軸方向のスピ-ド, y軸方向のスピ-ド
//プログラムのスタート
void setup(){
size(500,500); //サイズ
smooth(); //図形の輪郭をきれいに描画
rectMode(CENTER);
colorMode(HSB);
getRain();
frameRate(30);
noStroke(); //線を描かない
c = 60; //背景色
//初期位置を画面の範囲内でランダムに決定
//x = random(width);
// y = random(height);
starX= random(width);
starY = random(height);
//スピードも -10〜10 の範囲でランダムに
// xSpeed = random(2,5);
//ySpeed = random(5,10);
starXSpeed = random(2,5);
starYSpeed = random(5,10);
img1 = loadImage("name03.png");
img2 = loadImage("hoshi02.png"); //図の描画
}
//命令文
void draw(){
background(c);
image(img1,0,300);
image(img2, starX, starY, 30,30);
for(int i = 0; i < _rainNumCount; i++){
_rainArr[i] . drawMe();
}
// x+=xSpeed; //x座標更新
//y+=ySpeed; //y座標更新
starX+=starXSpeed; //x座標更新
starY+=starYSpeed; //y座標更新
//条件分岐で画面の範囲内にいるかを判定
//条件1.もし画面の右端からはみ出たら
if( starX > width){
//画面の左端に移動
starX = 0;
}
//条件2.もし画面の左端からはみ出たら
if( starX < 0){
//画面の右端に移動
starX = width;
}
//条件3.もし画面の下端からはみ出たら
if( starY > height){
//画面の上端に移動
starY = 0;
}
//条件3.もし画面の上端からはみ出たら
if( starY < 0){
//画面の下端に移動
starY = height;
}
}
//マウスがクリックされたとき
void mousePressed(){
getRain();
}
//マウスが動いたとき
void mouseMoved(){
c += 1;
if(c > 255){
c = 255;
}
}
//マウスがドラッグされたとき
void mouseDragged(){
c -= 1;
if(c <40){
c = 40;
}
}
void getRain(){
for(int i = 0; i < _rainNum; i++){
rain thisRain = new rain();
_rainArr = (rain[])append(_rainArr , thisRain);
}
_rainNumCount += _rainNum;
}
class rain{
float X,Y,afterX,afterY,rainSize,theta,Xstart,Ystart,Xnoise,Ynoise,alph;
rain(){
X=random(0,width);
Y=random(mouseY,height);
rainSize=random(2,4);
afterX=X;
afterY=height/2;
}
void drawMe(){
alph=(height/2+height/2*(rainSize-2)-Y)/2;
fill(162,15,255,alph);
pushMatrix();
translate(X,Y);
rect(0,0,rainSize/0,rainSize*5);
rotate(radians(60));
rect(0,0,rainSize/2,rainSize*5);
rotate(radians(60));
rect(0,0,rainSize/2,rainSize*5);
popMatrix();
Y += rainSize*2;
if(Y > height/2+height/2*(rainSize-2)){
Y = Y % (height/2+height/2*(rainSize-2));
}
}
}