顯示具有 01160066_方少葶 標籤的文章。 顯示所有文章
顯示具有 01160066_方少葶 標籤的文章。 顯示所有文章

2015年1月12日 星期一

期末作品


小朋友過馬路



processing:

import processing.serial.*;
Serial myPort;
int savetime=20;//time
PImage people, amb, imgBG;
PImage car[]=new PImage[8];
float pX=300, pY=366;
void setup() {
  size(600, 400);
  frameRate(50);
  myPort = new Serial(this, "COM4", 9600);
  imgBG = loadImage("bg.png");
  people = loadImage("super.png");//people  
  amb = loadImage("amb.png");//ambullance
  for (int i=0;i<8;i++) {
    car[i]=loadImage("car"+i+".png");
  }
}

float carX[]= { 600, 0, 600, 600, 0, 0, 600, 0};//direction
float carVX[]= { -8, 4, -4, -5, 9, 5, -7, 6};//speed
int but;//button
void draw() {
  background(imgBG);
  image(people, pX, pY, 25, 35);
  if (myPort.available()>0)
  {
    but = myPort.read();
  }

  textSize(24);//time
    int passtime = millis() - savetime;
    int gametime = 20-passtime/1000;
    textSize(24);
    text("T I M E : "+gametime, 400, 50);
    
   for (int i=0;i<8;i++) { //car
     image(car[i], carX[i], 85+i*35, 50, 35);
     carX[i]+=carVX[i];
     if (carX[i]>600) carX[i]=0;
     if (carX[i]<0) carX[i]=+600;    
  }
  for (int i=0;i<8;i++) { 
  if(dist(carX[i],85+i*35,pX,pY)<=20){   
      carX[i] = pX;     
      rect(150,100,300,200);    
      fill(255,255,0);
      textSize(30);
      text(" L O S E ",250,200);
      fill(255,0,0);  
    }
  }
  //people
  if (but == 'U'&& pY>50) pY-=5;//up
  if (but == 'D'&& pY<365) pY+=5;//down
  if (but == 'L'&& pX>15) pX-=5;//left
  if (but == 'R'&& pX<565) pX+=5;//right   

  if( gametime <= 0 ){    
  //rect(150,100,300,200);
  //fill(255,255,255);
  background(#81FF7C);
  textSize(30);
  text(" T I M E  I S  U P ",170,200);
  fill(255,0,0);
  }
  
  if(pY>35 && pY<50) {    
  //rect(150,100,300,200); 
  //fill(255,255,255);
  background(#81FF7C);
  textSize(30);
  text(" W I N ",250,200);
  fill(255,0,0);
  }
}



arduino:


void setup(){
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
}

int up=0,down=0,left=0,right=0;
void loop(){
  if(up==0 && digitalRead(2)==LOW){//pressed
    Serial.write('u'); up=1;
  }
  if(up==1 && digitalRead(2)==HIGH){//not pressed
    Serial.write('U'); up=0;
  }
  
   if(down==0 && digitalRead(3)==LOW){//pressed
    Serial.write('d'); down=1;
  }
  if(down==1 && digitalRead(3)==HIGH){//not pressed
    Serial.write('D'); down=0;
  }
  
   if(left==0 && digitalRead(4)==LOW){//pressed
    Serial.write('l'); left=1;
  }
  if(left==1 && digitalRead(4)==HIGH){//not pressed
    Serial.write('L'); left=0;
  }
  
   if(right==0 && digitalRead(5)==LOW){//pressed
    Serial.write('r'); right=1;
  }
  if(right==1 && digitalRead(5)==HIGH){//not pressed
    Serial.write('R'); right=0;
  }
  delay(10);//to avoid noise while pressing
}


按扭設置

從左到右為:上 下 左 右


DEMO影片



2014年12月29日 星期一

第十六周課堂作業


arduino

int switchStatea = 0;
int switchStateb = 0;
int switchStatec = 0;
int switchStated = 0;
const int ledPin = 13;

void setup(){
   pinMode(ledPin, OUTPUT);
  pinMode(2,INPUT);
  pinMode(3,INPUT);
  pinMode(4,INPUT);

   Serial.begin(9600);
}

void loop(){
  switchStatea = digitalRead(A0);
  switchStateb = digitalRead(A1);
  switchStatec = digitalRead(A2);
  switchStated = digitalRead(A3);

   if(switchStatea == HIGH) {Serial.print('1');}
   if(switchStateb == HIGH) {Serial.print('2');}
   if(switchStatec == HIGH) {Serial.print('3');}
   if(switchStated == HIGH) {Serial.print('4');}
   delay(33);
}



2014年12月15日 星期一

第十四周課堂作業

void setup(){
pinMode(13,OUTPUT);
}

void loop(){
int value = analogRead(A0);
digitalWrite(13, HIGH); 
delay(value); 
digitalWrite(13, LOW); 
delay(value); 
}




旋鈕控制方塊左右移動




void setup(){
  Serial.begin(9600);
}

void loop(){
  int value = analogRead(A0);
  Serial.write(value/4);
  delay(20);  
}



import processing.serial.*;
Serial myPort;
void setup(){
   size(255+80,200);
   myPort=new Serial(this,"COM3",9600);
}
int posX=0;
void draw(){
  background(255);
  fill(#071DDE); rect(posX,0,80,200);
  if(myPort.available()>0){
    posX=myPort.read();
    println(posX);
  }
}






2014年12月8日 星期一

第十三周課堂作業


範例程式碼


老師程式碼
1.int→轉換值


2.char→打123顯示123

5

按按鈕顯示"I LOVE YOU"


按按鈕顯示"I LOVE YOU"
不按按鈕顯示"I DON'T LOVE YOU"


/



2014年12月1日 星期一

第十二周課堂作業


Button

按鈕控制LED







toneMelody









音樂製作 - 小星星

int melody[] = {
  NOTE_C3, NOTE_C3,NOTE_G3, NOTE_G3, NOTE_A3, NOTE_A3, NOTE_G3, 
  NOTE_F3, NOTE_F3, NOTE_E3, NOTE_E3, NOTE_D3, NOTE_D3, NOTE_C3 };


int noteDurations[] = { 4,4,4,4,4,4,2,4,4,4,4,4,4,2};





int melody[] = {
  NOTE_C3, NOTE_C3,NOTE_G3, NOTE_G3, NOTE_A3, NOTE_A3, NOTE_G3, 
  NOTE_F3, NOTE_F3, NOTE_E3, NOTE_E3, NOTE_D3, NOTE_D3, NOTE_C3,
  NOTE_G3, NOTE_G3, NOTE_F3, NOTE_F3, NOTE_E3, NOTE_E3, NOTE_D3,
  NOTE_G3, NOTE_G3, NOTE_F3, NOTE_F3, NOTE_E3, NOTE_E3, NOTE_D3,
  NOTE_C3, NOTE_C3,NOTE_G3, NOTE_G3, NOTE_A3, NOTE_A3, NOTE_G3, 
  NOTE_F3, NOTE_F3, NOTE_E3, NOTE_E3, NOTE_D3, NOTE_D3, NOTE_C3};


int noteDurations[] = {
 4,4,4,4,4,4,2, 4,4,4,4,4,4,2, 4,4,4,4,4,4,2, 4,4,4,4,4,4,2, 4,4,4,4,4,4,2, 4,4,4,4,4,4,2};




音樂製作 - 聖誕鈴聲


int melody[] = {
  NOTE_E3, NOTE_E3,NOTE_E3, 
  NOTE_E3, NOTE_E3, NOTE_E3,
  NOTE_E3, NOTE_G3, NOTE_C3, NOTE_D3, NOTE_E3,   
  NOTE_F3, NOTE_F3, NOTE_F3,
  NOTE_F3, NOTE_E3, NOTE_E3, NOTE_E3, 
  NOTE_E3, NOTE_D3, NOTE_D3, NOTE_E3, NOTE_D3, NOTE_G3 };

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
 4,4,2, 4,4,2, 4,4,4,4,2, 4,4,2, 4,4,4,4, 4,4,4,4,2,2};







簡易版開關




按鈕控制聲音播放


按鈕按下去關聲音



按鈕按下去播聲音




void setup(){
   pinMode(2,INPUT_PULLUP);
   pinMode(13,OUTPUT);
}

void loop(){
  if(digitalRead(2)==HIGH){
    digitalWrite(13,HIGH);
    noTone(8);
  }
  else{
    digitalWrite(13,LOW);
    tone(8,440);
  }
}















2014年11月24日 星期一

2014年10月20日 星期一

第六周課堂作業


期中作品



↑遊戲畫面





↑遊戲結束畫面


遊戲分析:
1. 畫背景和洞
2. 槌子打下去後圖片改變
3. 怪獸們隨機從洞中出現
4. 計算時間
5. 計算成績-計算槌子打到的位置及怪獸出現的位置是否一樣



2014年10月6日 星期一

2014年9月29日 星期一

第三週課堂作業


貼圖
跟著滑鼠跑的奇奇蒂蒂



貼圖背景



加入音檔
滑鼠按下有鳥叫聲



發射蛋攻擊小鳥




PImage img,imgBG;
import ddf.minim.*;
Minim minim;
AudioPlayer bird;
float eggX=750, eggY=550, eggVX, eggVY, flying=0;
void setup(){
  size(800,600,P3D);
  minim = new Minim(this);
  
  bird= minim.loadFile("bird.wav");
  
  img= loadImage("bird.png");
  imgBG= loadImage("tree.jpg");
  imgBG.resize(800,600);
  imageMode(CENTER);
  
}
void draw(){
  background(imgBG);
  image(img,mouseX,mouseY,100,100);
  if(flying>0){
    ellipse(eggX,eggY,50,50);
    eggX+=eggVX;
    eggY+=eggVY;
    flying--;
  }
}
void mousePressed(){
  eggX=750; eggY=550; flying=30;
  eggVX=(mouseX-eggX)/30;
  eggVY=(mouseY-eggY)/30;
  bird.rewind();
  bird.play();
}






2014年9月22日 星期一

第二周課堂作業



加入 coursera 課程




可隨滑鼠移動的方塊




畫線




滑鼠按下再畫線




改變筆色




改變筆的大小