顯示具有 Week10 標籤的文章。 顯示所有文章
顯示具有 Week10 標籤的文章。 顯示所有文章

2021年12月27日 星期一

岩壁悲歌 Week10

  2021/12/13

----------------------------------------

小葉老師在協助同學期末作品

----------------------------------------------------


Doodle Jumping








float x=150,y=500-15,vx=0,vy=0;

boolean jumping=false;

float []boardX=new float[10];

float []boardY=new float[10];

void setup(){

  size(300,500);

  for(int i=0;i<10;i++){

    boardX[i]=random(0,300-80);

    boardY[i]=450-i*50;

  }

}

void draw(){

  background(255);

  for(int i=0;i<10;i++){

    rect(boardX[i],boardY[i],80,15);

  }

  ellipse(x,y,15,15);

  y+=vy;  //x+=0.5;

  if(jumping)  vy+=0.98;

  if(y>500-15) y=500-15;

  if(vy>=0){

    for(int i=0;i<10;i++){

      if(boardX[i]<x  &&  x<boardX[i]+80){

        if(y<boardY[i]  &&  y+vy>boardY[i]){

          jumping=false;

          vy=0;

          y= boardY[i];

        }

      }

    }

  }

}

void keyPressed(){

  if(keyCode==UP){

    vy=-20;  jumping=true;

  }

}

----------------------------------------------------------


大魚吃小魚






float []fishX=new float[30];

float []fishY=new float[30];

void setup(){

  size(500,500);

  for(int i=0;i<30;i++){

    fishX[i]=random(-500,500);

    fishY[i]=random(-500,500);

  }

}

float x=0,y=0;

void draw(){

  background(255);

  pushMatrix();

    translate(-x,-y);

    for(int i=0;i<30;i++){

      fill(255);  ellipse(fishX[i],fishY[i],10,10);

    }

    fill(255,0,0);  ellipse(250+x,250+y,10,10);

  popMatrix();

}

void keyPressed(){

  if(keyCode==LEFT)  x-=3;

  if(keyCode==RIGHT)  x+=3;

  if(keyCode==UP)  y-=3;

  if(keyCode==DOWN)  y+=3;

}

------------------------------------------------------



乒乓球問題修正





void setup(){

  size(600,300,P3D);///場景為3D

  camera(0, -40, 100, 0, 0, 0, 0, 1, 0);

}

void draw(){

  

  lights();

  background(112,146,190);

  fill(34,177,76);

  //box(100,5,120);

  fill(255,0,0);

  box(100,30,5);

  fill(#502C0F);

  //box(10,120,10);

  fill(255,255,0);

  

  pushMatrix();

    //translate(-300,-250,70);

    //translate(300,150,70);

    translate((mouseX-width/2)/2.0, (mouseY-height/2)/2.0,0);    

    noStroke();  sphere(5);

  popMatrix();

}

---------------------------------------------------------



打蟑螂






float x,y,vx,vy;

void setup(){

  size(300,300);

  generateCockroach();

}

void draw(){

  background(128);

  fill(0);  ellipse(x,y,10,10);

  x+=vx; y+=vy;

  if(x<0||y<0||x>300||y>300)  generateCockroach();

  noFill();  ellipse(mouseX,mouseY,80,80);

  if(mousePressed  &&  dist(mouseX,mouseY,x,y)<40)  generateCockroach();

  if(frameCount%10==0){

    float angle = atan2(vy,vx);

    float angle2 = (angle+radians(random(-30,30)));

    vx=cos(angle2);

    vy=sin(angle2);

  }

}

void generateCockroach(){

  int edge=int(random(4));

  if(edge==0){

    x=300;  y=random(300);  vx=-random(1,3);  vy=random(-3,+3);

  }else if(edge==1){

    x=random(300);  y=300;  vx=-random(-3,3);  vy=random(1,+3);

  }else if(edge==2){

    x=0;  y=random(300);  vx=random(1,3);  vy=random(-3,+3);

  }else if(edge==3){

    x=random(300);  y=0;  vx=-random(-3,3);  vy=random(1,+3);

  }

}

-----------------------------------------------------------------



電子雞切換圖片動畫






int remainT=0,state=0;

void setup(){

  size(300,400);

}

void draw(){

  fill(255);  rect(50,50,200,200);

  if(state==1){

    remainT--;

    if(remainT>120){

      ellipse(150,150,100,100);

    }else if(remainT>60){

      ellipse(150,150,50,50);

    }else if(remainT>0){

      ellipse(150,150,80,80);

    }else state=0;

  }

  fill(255,0,0);  rect(0,300,100,100);

  fill(0,255,0);  rect(100,300,100,100);

  fill(255,255,0);  rect(200,300,100,100);

}

void mousePressed(){

  if(mouseY>300&&mouseX<100) { state=1;  remainT=180; }

  else if(mouseY>300&&mouseX<200) { state=2;  remainT=120; }

  else if(mouseY>300&&mouseX<300) { state=3;  remainT=240; }

}

---------------------------------------------------------


如何判斷碰撞矩形








float x1,y1,w1,h1;

float x2=0,y2=0,w2=100,h2=100;

void setup(){

  size(400,400);

  w1=random(40,80);

  h1=random(40,80);

  x1=random(400-w1);

  y1=random(400-h1);

}

void draw(){

  background(128);

  if(testCollision()||testCollision2())  fill(255,0,0);

  else fill(255);

  

  rect(x1,y1,w1,h1);

  noFill();  rect(x2,y2,w2,h2);

  x2=mouseX-w2/2;

  y2=mouseY-h2/2; 

}

boolean testCollision2(){

  if(oneCollision2(x1,y1))  return true;

  else if(oneCollision2(x1+w1,y1))  return true;

  else if(oneCollision2(x1+w1,y1+h1))  return true;

  else if(oneCollision2(x1,y1+h1))  return true;

  else return false;

}

boolean oneCollision2(float x,float y){

  if(x2<x && x<x2+w2 && y2<y && y<y2+h2)  return true;

  else return false;

}

boolean testCollision(){

  if(oneCollision(x2,y2))  return true;

  else if(oneCollision(x2+w2,y2))  return true;

  else if(oneCollision(x2+w2,y2+h2))  return true;

  else if(oneCollision(x2,y2+h2))  return true;

  else return false;

}

boolean oneCollision(float x,float y){

  if(x1<x && x<x1+w1 && y1<y && y<y1+h1)  return true;

  else return false;

}

-----------------------------------------


2021年12月13日 星期一

橘貓(互動技術期末_week10)

 

 Timberman-期末作品第二步

把素材準備好!!









程式碼:
PImage log;
PImage leftB;
PImage rightB;
PImage bg;
PImage leftM;
PImage rightM;
PImage menu;
PFont timberman;
float seconds = 5;
float actualMillis = 3;
int[]tree=new int[30];//0:no,1:left,2:right
int pos=0;//0:left,1:right
int score=0;
int topscore=0;
boolean stop=false;
boolean gameOver=false; 
void setup(){
  size(300,600);
  log = loadImage("log.png");
  leftB = loadImage("leftB.png");
  rightB = loadImage("rightB.png");
  bg = loadImage("bg.png");
  leftM = loadImage("leftM.png");
  rightM = loadImage("rightM.png");
  menu = loadImage("menu.png");
  tree[0]=0;//safe
  for(int i=1;i<30;i++){
    tree[i]=int(random(3));
  }
}
void draw(){
  if(!stop){
  clear();
  image(bg,0,0);
  for(int i=0;i<30;i++){
    if(tree[i]==0){image(log,100,500-i*100,100,100);}
    else if(tree[i]==1){image(leftB,0,500-i*100,200,100);
  }
    else if(tree[i]==2){image(rightB,100,500-i*100,200,100);}
  }
  if(pos==0){image(rightM,0,475);}
  else if(pos==1){image(leftM,200,475);}
  showSeconds(millis()/1000 - actualMillis);
  if (millis()/1000 - actualMillis >= seconds) {die();}
  }
}
void keyPressed(){
  if(!stop){
    if(keyCode==RIGHT){pos=1;checkAndUP();}
    if(keyCode==LEFT){pos=0;checkAndUP();}
  }
  if(keyCode==UP){reset();}
}
void checkAndUP(){
  if(tree[1]==1&&pos==0)die();
  else if(tree[1]==2&&pos==1)die();
  else {
    score++;
    if ((seconds + 0.25) - (millis()/1000 - actualMillis) <= 14){ seconds += 0.25;}
    for(int i=0;i<30-1;i++){
      tree[i]=tree[i+1];
    }
    tree[29]=int(random(3));
  }
}
void showSeconds(float s) {
  float time = map(seconds - s, 0, 14, 0, 140);
  fill(255,140,105);rect(width/2 - 70 + time/2, 40, time, 20);
}
void die(){
  gameOver=true;
  image(menu,0,0);
  if (score > topscore) { topscore = score;}
  //textSize(25);
  textAlign(CENTER);
  timberman = createFont("timberman.ttf", 30);
  textFont(timberman);
  fill(255,255,255);text(topscore,150, 310); 
  fill(255,255,255);text(score,150, 385); 
  stop = true;
}
void reset(){
    stop = false;
    actualMillis = millis()/1000;
    seconds = 7;
    score=0;
    return;
}

WEEK10-阿噗的神奇小筆記(現在補補補2)

 

期末作業開工啦2


💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙💚💛💜💓💙

😅繼續補齊Blog,發現大家的禮拜都不一樣! 
🌚今日早上的遊戲引擎依舊好累,被老師放生的我們QQ
💜(這一個禮拜明園有夜市,買了拔絲地瓜,比之前貴了$10阿阿,但我還是照買)

----------------------------------------------------------------------------------------------------------

1.今日換我們來聽老師的解說了!!
2.老師幫我們列了三個主題:
    (1)蟑螂會從哪裡出現,如何對應移動速度與方向?
    (2)藍白拖怎麼打死蟑螂?
    (3)如何使用三角函數使蟑螂有亂跑的效果? sinx ,cosx,tanx;
3.開始製作打蟑螂


-依舊先來一張噁心蟑螂圖😵


💩!準備開始囉!💩
----------------------------------------------------------------------------------------------------------

☛首先老師先選出三個核心主題為我們解說

//探討主題:
//(1)蟑螂會從哪裡出現,如何對應移動速度與方向?
//(2)藍白拖怎麼打死蟑螂?
//(3)如何使用三角函數使蟑螂有亂跑的效果? sinx ,cosx,tanx;


----------------------------------------------------------------------------------------------------------

☛全部程式碼如下:


float x,y,vx,vy;
void setup(){
  size(300,300);
  generateCockroach();
}


void draw(){
  background(128);
  fill(0);//蟑螂顏色
  ellipse(x,y,10,10);
  x+=vx;  y+=vy;//若超過左邊界、右邊界,則會隨機產生蟑螂。
  if(x<0 || y<0||x>300||y>300)generateCockroach();//不管邊界x,y<0或x,y>300,都會產生新的蟑螂。
  noFill(); ellipse(mouseX,mouseY,80,80);//產生藍白拖。
  if(mousePressed && dist(mouseX,mouseY,x,y)<40)//如果藍白拖拍打蟑螂時,蟑螂的x,y座標小於40,則死掉。
  generateCockroach();//死後產生新的蟑螂。
  if(frameCount%10==0){//每一秒,改一次角度
    float angle = atan2(vy,vx);
    //float angle2=(angle+radians(90));//時間到就轉90度。
    float angle2=(angle+radians(random(-30,30)));//時間到就轉30度。
    vx =cos(angle2);
    vy =sin(angle2);
    }
  }



void generateCockroach(){
  int edge=int (random(4));//4個邊
  if(edge==0){
  x=300;y=random(300);vx=-random(1,3);vy=random(-3,+3);
  }else if(edge==1){
    x=random(300);y=300;vx=-random(-3,3);vy=random(1,3);
  }else if(edge==2){
    x=0;y=random(300);vx=random(1,3);vy=random(-3,+3);
  }else if(edge==3){
    x=random(300);y=0;vx=random(-3,3);vy=random(1,3);
  }
}

----------------------------------------------------------------------------------------------------------
此為執行畫面:

黑點點為蟑螂,而大圈圈則為藍白拖。
蟑螂已會隨便亂跑,而不是單一直線行走(更有蟑螂的感覺)
當大圈圈點向黑點點,黑點點會消失,接著跑出下一個黑點點(目前一次出現一個黑點點)



----------------------------------------------------------------------------------------------------------
以上為現在的進度,核心已大致上完成。
(下一次會在試做時間及得分!!)

week10課程

 課程回顧

1.設定船隻和砲彈的大小和速度

float x,y,z;//作為3D使用
float x=350,10,vx=-1.3,vy=0;//作為2D使用,船隻的起始位置
float bombX=500,bombY=100,bombvx=0,bombvy=1.5;//砲彈的大小和位置
void setup(){
  size(1000,1000);
}
void draw(){
    background(#3351F2);
    ellipse(x,y,50,15);
    ellipse(bombX,bombY,5,5);
    x += vx; y += vy;
    bombx += bombvx; bomby += bombvy;
}

2.匯入圖片和素材

void setup(){
  size(1000,1000);
  img1=loadImage("boat.png");//船
  img2=loadImage("deep.png");//潛水艇
  img3=loadImage("bomb.png");//魚雷
}
void draw(){
  background(#3351F2);
  image(img1,x,y,300,200);//船的大小
  image(img2,x1,y1,200,80);//敵船的大小
  image(img3,bombX,bombY,150,80);//砲彈大小
}

3.左右移動

if(keyPressed && keyCode==LEFT)x-=1.5;//船向左移動
if(keyPressed && keyCode==RIGHT)x+=1.5;//船向右移動

▲預計改善地方

1.用陣列的方法製造出多艘敵船
2.希望可以讓砲彈跟著船隻發射

★目前程式碼

float x=350,y=10;//玩家操控船的起始位置
float x1=1000,y1=500,vx=-2,vy=0;//敵艦的位置
float bombX=500,bombY=100,bombvx=0,bombvy=2;//砲彈座標和速度
PImage img1,img2,img3,img4;
void setup(){
  size(1000,1000);
  img1=loadImage("boat.png");//船
  img2=loadImage("deep.png");//潛水艇
  img3=loadImage("bomb.png");//魚雷
}
void draw(){
  background(#3351F2);
  image(img1,x,y,300,200);//船的大小
  image(img2,x1,y1,200,80);//敵船的大小
  image(img3,bombX,bombY,150,80);//砲彈大小
  if(keyPressed && keyCode==LEFT)x-=1.5;//船向左移動
  if(keyPressed && keyCode==RIGHT)x+=1.5;//船向右移動
  x1 += vx; y1 += vy;
  bombX += bombvx; bombY += bombvy;
}

2021年12月6日 星期一

不知道第幾周

 上課一開始在介紹Makeruno

實際把板子接在電腦上

並且介紹板子上的規格












然後開始登記期末作業要做什麼

有同學選擇俄羅斯方塊

所以老師要來講解








先設定版面大小








再來切割版面






讓方塊可以往下掉的程式




但因為會一直往下掉

所以要設定碰到東西時會自動停止



第一個方塊掉完之後

要讓第二個方塊接著掉下來




上課講解到的部分大概到這


第二個同學的題目是tmberman

因為不知道是什麼遊戲所以在講解的時候有點不懂








使用者可以左右動






躲貓貓的部分因為去上廁所所以沒聽到

再來是小朋友下樓梯








再來牆壁的素材





將他輸出出來









因為向下所以要進行捲動





2021年11月29日 星期一

大家部落格都不一樣

 今天是在做自己的作業

一開始上課的時候老師就開始講解教室同學的問題

我一開始定的題目是彈力球打板的遊戲







但老師說不要太常見的

我覺得這個遊戲應該網路上很多資料

所以我在想要不要把遊戲改成類似彈幕遊戲











但基本架構不太清楚可能要上課的時候詢問老師一下作法

在最後一節課有問老師

詳細過程下課再自己研究

(☞゚ヮ゚)☞ Week10

 

✨Week10✨

OPEN Processing--人物走動


💻程式碼

PImage img;
void setup(){
size(500,500);
img=loadImage("img.jpg");//讀圖
imageMode(CENTER); //置中
}
int a=0, b=0, x=250, y=250;
void draw(){
background(255);
//image( img, 0,0);
image(  img.get(141*a, 211*b, 141,211), x,y);//切割圖片
if(frameCount%30==0) a = (a+1)%4;
}
void keyPressed(){
if(keyCode==RIGHT){ b=3; x++; }//第b格的圖片 右轉
if(keyCode==LEFT) { b=2; x--; }//左轉
if(keyCode==UP) { b=1; y--; }//向上
if(keyCode==DOWN){ b=0; y++; }//向下
}

🐧期末規劃

flappy bird

示意圖


Youtube影片

手繪圖

自製sprite








忘了吃午餐

  • 老師介紹了gether town
  •  https://openprocessing.org/sketch/911326


💡今天要做一個可以走路的2D腳色💡

      💬可以在google搜尋 animated sprites 找到2D的腳色走路之類的東西







🅐到上面網址登錄並下載圖片











天文社社員招募中week10

   

期末作品規劃


1.老師示範Gather Town小小人走路(有給網址


https://openprocessing.org/sketch/911326





老師的程式如下:

PImage img;
void setup(){
size(500,500);
img=loadImage("img.jpg");
imageMode(CENTER);
}
int a=0, b=0, x=250, y=250;
void draw(){
background(255);
//image( img, 0,0);
image(  img.get(141*a, 211*b, 141,211), x,y);
if(frameCount%30==0) a = (a+1)%4;
}
void keyPressed(){
if(keyCode==RIGHT){ b=3; x++; }
if(keyCode==LEFT) { b=2; x--; }
if(keyCode==UP) { b=1; y--; }
if(keyCode==DOWN){ b=0; y++; }
}



2.用老師的程式在processing看小小人走路






程式如下:


PImage img;
void setup(){
  size(500,500);
  img=loadImage("img.jpg");  ///有圖片
  imageMode(CENTER);
}
int a=0, b=0, x=250, y=250;
void draw(){
  background(255);
  //image( img, 0,0);
  image(  img.get(141*a, 211*b, 141,211), x,y);
  if(frameCount%30==0) a = (a+1)%4;
}
void keyPressed(){
  if(keyCode==RIGHT){ b=3; x++; } ///b是圖片位置
  if(keyCode==LEFT) { b=2; x--; }
  if(keyCode==UP) { b=1; y--; }
  if(keyCode==DOWN){ b=0; y++; }
}




3.期末作品開始規劃囉!

 

目標:俄羅斯方塊!!!


  

4.示意圖





圖片來源:https://openprocessing.org/sketch/313016/



5.YouTube影片示意


https://www.youtube.com/watch?v=zH_omFPqMO4


有人用c++寫出俄羅斯方塊





6.自己畫的示意圖



說明:


就是俄羅斯方塊

🍮加油加油🍩