顯示具有 08130573_張峰嘉 標籤的文章。 顯示所有文章
顯示具有 08130573_張峰嘉 標籤的文章。 顯示所有文章

2022年1月17日 星期一

期末

float [] fishX=new float[30];//座標x
float [] fishY=new float[30];//座標y
float [] fishSize=new float[30];//大小
boolean[] fishAlive = new boolean[30];//是不是活的 true,false

void setup(){
  size(500,500);
  reset();
}//吃東西,越吃越大,不夠大不能吃,時間內吃完
void gameRun()
{
  background(255);
  pushMatrix();
  translate(-x, -y);
    for(int i=0; i<30; i++){
      if(fishAlive[i]==true){
        fill(255); ellipse(fishX[i], fishY[i], fishSize[i], fishSize[i] );
        if( dist(250+x,250+y, fishX[i],fishY[i])< (big+fishSize[i])/2 ){//相遇
          if(big>fishSize[i]){
            big = sqrt(big*big+fishSize[i]*fishSize[i]);//面積相加,對應的半徑
            fishAlive[i]=false;//魚死掉了
          }
          else
         {         
          gameOverMsg();
        }         
        }
      }      
    }
  fill(255,0,0); ellipse(250+x,250+y, big,big);
  popMatrix();
     
}
int time=180;
int blood=1;
void gameOverMsg()
{
 
  if(time>0){
  background(255,0,0);
  stroke(153);
  textSize(44);
  textAlign(CENTER, CENTER);
  line(0, 200, width, 200);
  text("Game Over",width/2+x,height/2+y);
  time--;
  if(time==0)
  {
    reset();
    }
  }
}
void reset()
{
  time=180;
  blood=1;
  x=0;
  y=0;
  big=15;
  for(int i=0; i<30; i++){
    fishX[i]=random(-500,500);
    fishY[i]=random(-500,500);
    fishSize[i]=random(10,50);
    fishAlive[i]=true;   
  }
}
float x=0, y=0, big=15;
void draw(){ 
  gameRun();      
}

//腳色移動
void keyPressed(){
  if(keyCode==LEFT) x-=3;
  if(keyCode==RIGHT) x+=3;
  if(keyCode==UP) y-=3;
  if(keyCode==DOWN) y+=3;
  }

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

原先在gameOverMsg要設計延遲3秒,但因為不熟悉Processing特性,

所以誤用sleep() delay() 函式

2021年12月27日 星期一

期末作品

 現在遊戲已能達成基本移動 吃比自己小的目標

但為了在吃比自己大的目標時呈現死亡 並重新開始

另寫了

void gameOver()
{
 gameOverMsg();
 setup();
}
void gameOverMsg()
{
  size(500,500);
  background(255,0,0);
  stroke(153);
  textSize(44);
  textAlign(CENTER, CENTER);
  line(0, 200, width, 200);
  text("Game Over", 200, 200);
}

在主程式if(fishAlive[i]==true){....}後加上

else  {
     gameOver();
  }

無法達成如預期的在畫面正中心顯示Game Over,

且在不清楚如何達成延後執行setup() 

目前程式在死掉後立即重置 gameOverMsg()看不到


2021年12月18日 星期六

Swallow.io:The Ball

 Week14

主題: Swallow.io:The Ball

從一顆小顆粒開始,靠著吞噬其他比自己小的目標逐漸長大,需在時間內吃掉所有目標

玩法:

需控制一顆小球,由方向鍵控制


老師示範 畫面相對移動

 

 1產生隨機擺放的球

2產生主角紅色小球


2021年11月25日 星期四

Week07

 1 產生1 顆掉落的球 垂直掉落速度用y=y+vy控制


 2 產生2顆掉落的球 各自x起始位置以及vy不同 讓掉落位置速度不同


 3 用陣列儲存x y vx vy數值 並用for迴圈生成4顆球


4 現在球碰到邊界會來回垂直彈跳

5 滑鼠若觸碰到移動的球 球會暫停移動

6 改為若滑鼠觸碰到球 球會消失

7 按下滑鼠前 顏色是綠色並提示False 若按下滑鼠 則變成紅色並提示True

8 用N變數作為球數並將x vx y vy以陣列儲存N 若滑鼠觸碰到球 球會消失

9 接續圖8及圖4 現在球N顆都會來回彈跳 滑鼠觸碰會消失

10 現在球的參數都為隨機 x 500之內 y 100到200之間隨機產生


11x y 兩方向在500之內的隨機變數 可讓球往斜向跑








2021年11月17日 星期三

Week06

 1 直接用text()寫出Hello


2 改成text()套在draw()中寫出Hello
3 利用frameCount以60fps刷新計時

4 frameCount/60以符合用秒作為計時單位

  另用millis()作為對照,frameCount執行時較慢不準確


5 加入hour() minute() second()用於計時

6 以pFont的pFont.list()查詢現有字體,再以createFont()選擇字型

    textFont()使用文字字型


7 物件font1 font2各用一種字型 按下畫面可改字型
8 字串hh mm ss分別使用hour() minute() second()
9 將現在時間轉為以秒為單位並與下課時間相減 得出剩下時間
10 將剩下時間秒為單位改為時分秒為單位
11 將數字png檔案以陣列讀入並顯示
12 將剩下秒數以數字圖案呈現並調整位置

























2021年11月6日 星期六

week05

 
1 利用movie插件 讀入mp4檔案

2 利用processing video函式庫開啟鏡頭權限 

並將影片每幀儲存 選取 工具-圖片建出影片導出影片


3 將導出的影片讀入


4 初始畫面是紅色且邊記錄每幀圖像次序 當滑鼠按下後

當下圖像將轉為綠色並儲存


5 原為滿屏影像 現在按下後儲存圖像為紅綠各半格

6 利用陣列儲存顏色色號 當滑鼠按下後將依序更改顏色

7 結合本次所學 將鏡頭記錄的影像導入 當滑鼠按下後將更改像素顏色



         





2021年10月28日 星期四

Week04

1 使用線條,按照等差遞增排列


 2改用for迴圈產生線條


 3加入橫向線條


 4用陣列表示填色位置

                                     

5加入試驗固定的棋子

6原先棋子位置會偏移,修正棋子位置,讓它剛好在兩線正中間

7現在加入可隨滑鼠位置放置的棋子

8加入黑棋,刪除原試驗用固定位置的棋子,並由滑鼠左中右鍵分別控制白棋/吃子/黑棋

--------

9新單元

由浮點數及cos sin計算畫圓



10現在圓圈大小隨滑鼠xy軸改變

11更改背景色,加入noFill()能變成較為完美的圖形

12加入之前課程所學,筆觸顏色隨機生成,並可隨滑鼠xy軸畫出任意圖型,

背景色也能由滑鼠xy位置改變




2021年10月21日 星期四

week03

1 用網址抓取圖片

2 改由將讀入圖檔,圖檔存於程式目錄Data資料夾

3 加入一圖案,可由滑鼠xy軸拖動
4 滑鼠拖動圖案丟入power point等程式去背

5 更改滑鼠拖曳範圍,圖案可拖到畫面界外

6 圖片模式更改,變為置中,拖曳圖案出現重疊
7 背景及拖曳圖案模式均改為置中
8 添加背景音,以及滑鼠點擊聲音
9 新增陣列,並按音階排列,寫出簡單鋼琴
10 新增按鍵顏色變化,按下數字鍵後,琴鍵顏色會更換