2020年6月29日 星期一

你當我的錢是大風颳來的嗎_week03

更改背景的程式碼
PImage img;
void setup(){
    size(自己圖片的大小);
    img=loadImage("自己的圖片");
}
int userX=500,userY=465;
void draw(){
  background(img);
  ellipse(userX,userY,40,50);
  if(keyPressed&&keyCode==UP) userY--;
}

然後就會變這個樣子

你當我的錢是大風颳來的嗎_week02

按一下滑鼠會有球球掉下來

球球的數量會在陣列裡的數量裡面

你當我的錢是大風颳來的嗎_week14

放音樂的程式碼
import  ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
     minim = new Minim(this);
     player =minim.loadFile("song.mp3");
     player.play();
}
void draw(){
}
應該會長這樣(範例)


之後是會彈的憤怒鳥
滑鼠不動就不會動(敵不動我不動(?))

你當我的錢是大風颳來的嗎_week12


這隻憤怒鳥可以發射了

程式碼
PImage imgBird, imgPig;
float birdX=200, birdY=200, oldX, oldY, vx=0, vy=0;
void setup(){
    size(400,400);
    imgBird=loadImage("bird.png");
    imgPig =loadImage("pig.gif");
    imageMode(CENTER);
}
void draw(){
    background(255);
    image(imgBird, birdX,birdY, 100,100);
    birdX+=vx; birdY+=vy;
}
void mousePressed(){
    oldX=birdX; oldY=birdY; 
}
void mouseDragged(){
    birdX=mouseX; birdY=mouseY;
}
void mouseReleased(){
  vx = (oldX-birdX)/10;
  vy = (oldY-birdY)/10;
}

你當我的錢是大風颳來的嗎_week10

先用程式碼畫出圈圈


然後劃出很多個會放大縮小的圈圈


程式碼
void setup(){
size(300,500);
}
int r=0;
void draw(){
background(0);
ellipse(50,200+50,r,r);
ellipse(50,200+50+100,r,r);
ellipse(50,200+50+100+100,r,r);

ellipse(50+100,200+50,r,r);
ellipse(50+100,200+50+100,r,r);
ellipse(50+100,200+50+100+100,r,r);

ellipse(50+100+100,200+50,r,r);
ellipse(50+100+100,200+50+100,r,r);
ellipse(50+100+100,200+50+100+100,r,r);

if(r<100) r+=2;
else r=0;
}

你當我的錢是大風颳來的嗎_week04



這是有顏色隨機的彩色球球

程式碼
int []x = new int[1000];
int []y = new int[1000];
int []r = new int[1000];
color [] c = new color[1000];
int n =0;
void setup(){
    size(400,400);
}
void draw(){
  background(255);
  for(int i=0;i<n;i++){
    fill(c[i]);
    circle(x[i],y[i],r[i]);
    y[i]--;
  }
  if(mousePressed)r[n-1]++;
}
void mousePressed(){
  x[n] = mouseX;
  y[n] = mouseY;
  r[n]=10;
  c[n] = color(random(255), random(255), random(255)); ///換顏色
  n++;
}

你當我的錢是大風颳來的嗎_week09

延續之前的小精靈嘴巴


他現在會吃東西ㄌ


原本ㄉ他:
void setup(){
  size(400,300);
}
int x=50, y=50, a=45, da=1;
void draw(){
 background(0);
fill(255,240);
arc(x,y,100,100,radians(a),radians(360-a), PIE);
x++;
a+=da;
if(a>60) da=-1;
if(a<=0) da=+1;
}

你當我的錢是大風颳來的嗎_week08

這次寫會動的嘴巴

一開始是沒有顏色的


然後幫他填上顏色

你當我的錢是大風颳來的嗎_week16

這次要寫會動的小小人
這是素材

你當我的錢是大風颳來的嗎_week13


PImage imgBird;
void setup()
{
  size (500,400);
  imgBird=loadImage("bird.png");
  imageMode(CENTER);
}
float birdX=100,birdY=300,oldX,oldY;
void draw()
{
  background (255);
  image(imgBird,mouseX,mouseY,100,100);
  if (mousePressed) line (birdX,birdY,oldX,oldY);
}
void mousePressed()
{
 oldX=birdX;oldY=birdY;
}
void mouseDragged()
{
  birdX=mouseX;
  birdY=mouseY;
}
一開始叫出憤怒鳥忘記截圖了
所以直接放上可以拉線的憤怒鳥,超可愛的喔

你當我的錢是大風颳來的嗎_week11


textSize 代表字體大小
textAlign 是對齊 
打eg. textAlign(LEFT, TOP) 會對齊左上角
泡泡排序
int []a=new int[10];//Java's Array
//int []a={6,3,5,9,1,0,4,2,7,8};
//int []a={1,2,3,5,0,4,6,7,8,9};
//int []a={9,8,7,6,5,4,3,2,1,0};
void setup(){
  size(500,800);
  for(int i=0;i<10;i++){//random choose number
    a[i]=int(random(10));//亂數決定數字
  }
  textSize(36);
  textAlign(LEFT,TOP);
  showArray(y);
}
int y=0;
void showArray(int y){
  for(int i=0;i<10;i++){
    fill(255);  rect(i*50, y, 50,50);
    fill(0);         text(a[i], i*50, y);
  } 
}
void draw(){

}
void mousePressed(){
  for(int i=0; i<10-1;i++){
    if(a[i] > a[i+1]){
      int temp=a[i];
      a[i]=a[i+1];
      a[i+1]=temp;
      fill(255,0,0,128); rect(i*50, y, 100,50);
    }
  }
  y+=50;
  showArray(y);
}

你當我的錢是大風颳來的嗎_week07


指標的宣告

int *p 這行表示 p 要指到一個整數
然後p = &a 是指標的值a

陣列就是指標

範例 (裁切過後)

你當我的錢是大風颳來的嗎_week17


這次是寫會移動的球球
一開始寫出來是固定的線跟球,然後再進階


這邊可以隨意拉伸線的長度

接下來很快速地回彈

滑順的回彈

會自己移動的線跟球

(老師給參照的程式碼)