2020年12月28日 星期一
2020年12月21日 星期一
Bill_week15
老師今天幫我們複習一開教的Image 和vector等等的程式。
然後做了一個 像彈弓的準備做憤怒鳥的遊戲。
然後加入了減法/除法/加法 讓彈弓的東西可以飛
接下來安裝搖桿及maker uno
開始使用Arduino來做搖桿的收集參數
加入函式
讓搖桿可以寫字
程式備份:void setup() { pinMode(2,INPUT_PULLUP); Serial.begin(9600);}
void loop() { int x=analogRead(A0); int y=analogRead(A1); int sw=digitalRead(2);
Serial.write(x/4); Serial.write(y/4); Serial.write(sw); delay(20);}程式備份:PVector user;PVector Y,v=null;void setup(){ size(600,400); user = new PVector(100,300); Y=new PVector(100,300);}void draw(){ background(255); line(user.x,user.y,Y.x,Y.y); textSize(40); fill(255,0,0);text("Y",Y.x,Y.y); fill(255);ellipse(user.x,user.y,20,20); if(v!=null)user.add(v);}void mouseDragged(){ user.x=mouseX; user.y=mouseY;}void mouseReleased(){ PVector diff=PVector.sub(Y,user); v=diff.div(10);}程式備份:import processing.serial.*;Serial myPort;void setup(){ size(256,256); myPort= new Serial(this,"COM6",9600);}int ballX=0,ballY=0;void draw(){ if(myPort.available()>=3){ int x = myPort.read(); int y = myPort.read(); int sw = myPort.read(); ballX=x; ballY=y; } ellipse(ballX,ballY,10,10);}
加入函式
讓搖桿可以寫字
程式備份:
void setup() {
pinMode(2,INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
int x=analogRead(A0);
int y=analogRead(A1);
int sw=digitalRead(2);
Serial.write(x/4);
Serial.write(y/4);
Serial.write(sw);
delay(20);
}
程式備份:
PVector user;
PVector Y,v=null;
void setup(){
size(600,400);
user = new PVector(100,300);
Y=new PVector(100,300);
}
void draw(){
background(255);
line(user.x,user.y,Y.x,Y.y);
textSize(40);
fill(255,0,0);text("Y",Y.x,Y.y);
fill(255);ellipse(user.x,user.y,20,20);
if(v!=null)user.add(v);
}
void mouseDragged(){
user.x=mouseX;
user.y=mouseY;
}
void mouseReleased(){
PVector diff=PVector.sub(Y,user);
v=diff.div(10);
}
程式備份:
import processing.serial.*;
Serial myPort;
void setup(){
size(256,256);
myPort= new Serial(this,"COM6",9600);
}
int ballX=0,ballY=0;
void draw(){
if(myPort.available()>=3){
int x = myPort.read();
int y = myPort.read();
int sw = myPort.read();
ballX=x;
ballY=y;
}
ellipse(ballX,ballY,10,10);
}
2020年12月14日 星期一
Bill_week14
今天老師說學校規定要用Teams所以第一堂課老師讓我們登入Teams然後加入課程裡面。
一開始也是跟之前依樣先安裝驅動程式。

在過來,讓我們加上電阻漢城是讓他可以用旋轉的讓他發出不同的聲音。
然後再打程式讓燈可以隨著旋鈕亮起來。
然後寫P語言讓他們兩個連結,讓可以使用旋鈕調整紅條的長度。
影片:https://youtu.be/7MtF_oQn_Uw
影片:https://youtu.be/s8qnnHXHmOc
程式備份區:
void setup(){
for(int i=2;i<=13;i++){
pinMode(i,OUTPUT);
}
Serial.begin(9600);
}
void loop() {
int now=analogRead(A0);
int level = now/4;
for(int i=2;i<13;i++){
if(i<level) digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
}
Serial.write(level);
delay(20);
}
void setup(){
for(int i=2;i<=13;i++){
pinMode(i,OUTPUT);
}
Serial.begin(9600);
}
void loop() {
int now=analogRead(A0);
int level = now/4;
for(int i=2;i<13;i++){
if(i<level) digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
}
Serial.write(level);
delay(20);
}
https://youtu.be/7MtF_oQn_Uw
https://youtu.be/s8qnnHXHmOc
2020年12月7日 星期一
Bill_week13
一開始老師先教我們從做安裝MakerUno的東西,先安裝裝置。
再來把老師示範的程式碼打上去
接下來打程式,讓他沒有聲音
使用P語言來做東西,按下按鈕即可變成紅色的。
老師教我們寫網路程式,連線到老師那邊就會有顏色亮燈。
在前面黑板上投影機就會顯示:
程式備份:
import processing.serial.*;
Serial myPort;
void setup(){
size(300,200);
myPort = new Serial(this,"COM6", 9600);
}
int button=0;
void draw(){
if(myPort.available()>0){
int now = myPort.read();
println("現在你讀的是:"+now);
if(now=='1')button=1;
else button=0;
}
if(button==1)background(255,0,0);
else background(255);
}
2020年11月30日 星期一
Bill_week12
今天老師讓我們做 MAKER UNO
先確認他能夠連結,並且選COM6
定且搜尋MAKER UNO Git Hub
去搜尋範例程式碼
先貼上範例程式,讓他發出馬力歐的聲音
接下來開一個新檔案,
並且讓裝置發出DO、MI、SO的聲音。
左邊是預設程式,右邊是心打得程式。
加了一個按按鈕就可以發出聲音的步驟。
增加了使用P語言的程式,一邊用來接收一邊用來傳送,現在就可以使用滑鼠點擊來發出聲音,按下滑鼠左鍵發出SO的音樂。
加入了打數字鍵1.3.5可以發出聲音
加入多音符從Do到Si
(老師的Si打成Ti了)
最終程式備份:
Arduino
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define So 784
#define La 880
#define Si 988
void setup(){
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(8, OUTPUT);
tone(8,Do);
delay(1000);
tone(8,Mi);
delay(1000);
tone(8,So);
delay(1000);
noTone(8);
}
void loop(){
while(Serial.available()>0){
int now=Serial.read();
if(now=='1') tone(8,Do);
if(now=='2') tone(8,Re);
if(now=='3') tone(8,Mi);
if(now=='4') tone(8,Fa);
if(now=='5') tone(8,So);
if(now=='6') tone(8,La);
if(now=='7') tone(8,Si);
if(now=='0') noTone(8);
}
}
P語言
import processing.serial.*;
Serial myPort;
void setup()
{
size(200, 200);
myPort = new Serial(this,"COM6", 9600);
}
void draw() {
}
void keyPressed(){
if(key=='1') myPort.write("1");
if(key=='2') myPort.write("2");
if(key=='3') myPort.write("3");
if(key=='4') myPort.write("4");
if(key=='5') myPort.write("5");
if(key=='6') myPort.write("6");
if(key=='7') myPort.write("7");
}
void keyReleased(){
myPort.write("0");
}
void mousePressed(){
myPort.write("1");
}
2020年11月23日 星期一
2020年11月16日 星期一
Bill_week10
今天老師讓我們作其中報告,期中成績占10%(拿網誌的寫作狀況來評分)期末成績占40%期中作品佔40%,期中作業的繳交日期到11周(之後補教也可以)
https://hackmd.io/@NrgG4-TCS42pma6IfQW84A/rkR_9r4Qe?type=slide#/21
程式備份:PImage img1,img2,img3,img4,img5,img6,img7;
void setup(){
size(400,500);
img1=loadImage("start1.png");
img2=loadImage("win.png");
img3=loadImage("lose.png");
img4=loadImage("player2.png");
img5=loadImage("normal.png");
img6=loadImage("nail.png");
img7=loadImage("wall.png");
for(int i=0;i<10;i++){
boardX[i]=random(0,300);
boardY[i]=i*50;
}
}
int stage=0,health=3,timer=1800;
float x=200,y=200,vx=0;
boolean kidOnBoard=true;
void draw(){
background(0);
if(stage==0){
background(#9B5203);
noFill();rect(190,320,80,40);
image(img1,170,280,120,120);
if(mousePressed&&mouseX>190&&mouseX<270&&mouseY>320&&mouseY<360)stage=1;
}else if(stage==1){
image(img4,x-15,y-25,30,50);
x+= vx;
if(y>520||y<0){
health--;
println(health);
x=200;y=200;
}
if(health==0)stage=3;
if(x<35)x=36;
if(x>365)x=364;
for(int i=0;i<10;i++){
image(img5,boardX[i],boardY[i],boardW,20);
boardY[i]--;
if(boardY[i]<0){
boardY[i]=500;
boardX[i]=random(0,300);
}
}
image(img6,0,0,500,20);
image(img7,0,0,20,500);
image(img7,380,0,20,500);
textSize(25);fill(#FFFF00);text("health:"+health,240,50);
timer--;
textSize(30);fill(#FF0000);text(timer/60,200,50);
if(timer==0)stage=2;
fill(255);kidOnBoard=testKidOnBoard();
if(kidOnBoard)y--;
else y+=2;
}else if(stage==2){
image(img2,0,0,400,500);
}else if(stage==3){
image(img3,0,0,400,500);
}
}
void keyPressed(){
if(keyCode==LEFT)vx=-2;
if(keyCode==RIGHT)vx=+2;
}
void keyReleased(){
vx=0;
}
float[]boardX=new float[10];
float[]boardY=new float[10];
float boardW=100;
boolean testKidOnBoard(){
for(int i=0;i<10;i++){
if(boardX[i]<x && x<boardX[i]+boardW){
if(boardY[i]-25<=y && y<=boardY[i]){
y=boardY[i]-25;
return true;
}
}
}
return false;
}
PImage img1,img2,img3,img4,img5,img6,img7,img8,img9;
void setup(){
size(400,500);
img1=loadImage("start1.png");
img2=loadImage("win.png");
img3=loadImage("lose.png");
img4=loadImage("player2.png");
img5=loadImage("normal.png");
img6=loadImage("nail.png");
img7=loadImage("wall.png");
img8=loadImage("left");
img9=loadImage("right");
for(int i=0;i<10;i++){
boardX[i]=random(0,300);
boardY[i]=i*50;
}
}
int stage=0,health=3,timer=1800;
float x=200,y=200,vx=0;
boolean kidOnBoard=true;
void draw(){
background(0);
if(stage==0){
background(#9B5203);
noFill();rect(190,320,80,40);
image(img1,170,280,120,120);
if(mousePressed&&mouseX>190&&mouseX<270&&mouseY>320&&mouseY<360)stage=1;
}else if(stage==1){
image(img4,x-15,y-25,30,50);
x+= vx;
if(y>520||y<0){
health--;
println(health);
x=200;y=200;
}
if(health==0)stage=3;
if(x<35)x=36;
if(x>365)x=364;
for(int i=0;i<10;i++){
image(img5,boardX[i],boardY[i],boardW,20);
boardY[i]--;
if(boardY[i]<0){
boardY[i]=500;
boardX[i]=random(0,300);
}
}
image(img6,0,0,500,20);
image(img7,0,0,20,500);
image(img7,380,0,20,500);
textSize(25);fill(#FFFF00);text("health:"+health,240,50);
timer--;
textSize(30);fill(#FF0000);text(timer/60,200,50);
if(timer==0)stage=2;
fill(255);kidOnBoard=testKidOnBoard();
if(kidOnBoard)y--;
else y+=2;
}else if(stage==2){
image(img2,0,0,400,500);
}else if(stage==3){
image(img3,0,0,400,500);
}
}
void keyPressed(){
if(keyCode==LEFT)vx=-3;
if(keyCode==RIGHT)vx=3;
}
void keyReleased(){
vx=0;
}
float[]boardX=new float[10];
float[]boardY=new float[10];
float boardW=100;
boolean testKidOnBoard(){
for(int i=0;i<10;i++){
if(boardX[i]<x && x<boardX[i]+boardW){
if(boardY[i]-25<=y && y<=boardY[i]){
y=boardY[i]-25;
return true;
}
}
}
return false;
}
2020年11月2日 星期一
2020年10月26日 星期一
Bill_week07
老師今天教我們用點畫圓形的角度,並且用到sin和cos的函數。
現在改成除以1所以變成一個圓
變成三角形
程式:size(500,500);
beginShape();///開始
for(int angle=0;angle<360;angle+=120)
{
float angle2 = radians(angle);///弧度
float x = 100+cos( angle2 ) * 50;
float y = 100+sin( angle2 ) * 50;
vertex(x,y);
//ellipse( x, y, 2, 2);
}
endShape(CLOSE);
除以45變成菱形
加入滑鼠控制
可以用滑鼠控制三角形滑動不清,會有殘影清了,會乾淨
1hr=60min,1min=60sec 1sec=60frameframeCount:第幾個frame角度有兩種:degree度(360度的世界)sin()cos()用radians弧度/徑度(PI世界)
void setup(){ size(500,500);}void draw(){ beginShape(); for(int angle=0; angle<360;angle+=120){ float angle2 = radians(angle+frameCount); float x = mouseX+cos(angle2)*100; float y = mouseY+sin(angle2)*100; vertex(x,y);//ellipse(x,y,2,2); }endShape(CLOSE);}
size(500,500);
beginShape();///開始
for(int angle=0;angle<360;angle+=120)
{
float angle2 = radians(angle);///弧度
float x = 100+cos( angle2 ) * 50;
float y = 100+sin( angle2 ) * 50;
vertex(x,y);
//ellipse( x, y, 2, 2);
}
endShape(CLOSE);
void setup(){
size(500,500);
}
void draw(){
beginShape();
for(int angle=0; angle<360;angle+=120){
float angle2 = radians(angle+frameCount);
float x = mouseX+cos(angle2)*100;
float y = mouseY+sin(angle2)*100;
vertex(x,y);//ellipse(x,y,2,2);
}
endShape(CLOSE);
}
2020年10月19日 星期一
Bill_week06
老師上課剛開始的時候介紹了陣列可以做成動畫,從上面移動到左下方。
換了一個位置並且用黑色框框框起來。
老師教我們用陣列做出一堆方塊框框
老師教我們用圖片放在陣列裡面
加入了滑鼠點擊然後點擊圖示消除圖示
程式備份:
int [][]A={ {2,2,2,2,}, {0,1,1,1}, {0,1,1,1}, {2,2,2,2,} };PImage bird, pig;void mousePressed(){ int i=int (mouseY/100); int j=int (mouseX/100); A[i][j]=0;} void setup(){ size(400,400); bird=loadImage("bird.png"); pig =loadImage("pig.png");}void draw(){ background(0); for(int i=0; i<4;i++){ for(int j=0;j<4;j++){ if(A[i][j]==1)image(bird, j*100,i*100,100,100); if(A[i][j]==2)image(pig, j*100,i*100,100,100); } }}
老師教我們用陣列做出一堆方塊框框
老師教我們用圖片放在陣列裡面
程式備份:
int [][]A={ {2,2,2,2,},
{0,1,1,1},
{0,1,1,1},
{2,2,2,2,} };
PImage bird, pig;
void mousePressed(){
int i=int (mouseY/100);
int j=int (mouseX/100);
A[i][j]=0;
}
void setup(){
size(400,400);
bird=loadImage("bird.png");
pig =loadImage("pig.png");
}
void draw(){
background(0);
for(int i=0; i<4;i++){
for(int j=0;j<4;j++){
if(A[i][j]==1)image(bird, j*100,i*100,100,100);
if(A[i][j]==2)image(pig, j*100,i*100,100,100);
}
}
}
2020年10月12日 星期一
Bill_week05
老師今天教我們怎麼做水果忍者
先去網頁上下載水果忍者的圖片然後做去背的動作,之後就做出一個程式可以嗅出圖檔。
接下來加入了重力,讓他有拋物線的感覺
程式碼:
PImage img;
float x=100,y=500,vx=3,vy=-30;
int fruitDie=0;
void setup(){
size(500,500);
img = loadImage("fruit.png");
}
void draw(){
background(0);
image(img,x,y,100,100);
x += vx;
y +=vy;
vy +=0.98;
if(y>500) fruitDie=1;
if(x<mouseX && mouseX<x+100 && y<mouseY && mouseY<y+100) fruitDie=1;
stroke(255);line(mouseX,mouseY,pmouseX,pmouseY);
if(fruitDie==1){
if(frameCount%2==0){
x=random(250);y=500; vx=random(2,3);vy=-random(28,32);
}else{
x=random(250,500);y=500; vx=-random(2,3);vy=-random(28,32);
}
fruitDie=0;
}
}
訂閱:
文章 (Atom)



















































