顯示具有 08160652_王偉 標籤的文章。 顯示所有文章
顯示具有 08160652_王偉 標籤的文章。 顯示所有文章

2022年1月17日 星期一

black_Week15

 期末作品(完成)

1.遊戲畫面


2.程式碼

PImage ball,maze,gem;

int[] rangeX = {0,125};

int[] rangeY = {480,235};


int ballposX = 30,ballposY = 215;

int offsetX = 0,offsetY = 0;


boolean is_over = false;

boolean is_win = false;


void setup()

{

  size(640,480);

  maze=loadImage("maze.png");

  ball=loadImage("ball.png");

  gem=loadImage("gem.png");

}

void draw()

{

  

  

  background(255);

  imageMode(CENTER); 

  image(maze,320,240);

  image(gem,590,415);

  image(ball,ballposX,ballposY);

  

  if(is_over && !is_win)

  {

    GameOver();

  }

  

  if(is_win)

  {

    Win();

  }

}


void mousePressed()

{

  offsetX = ballposX - mouseX;

  offsetY = ballposY - mouseY;

}


void mouseDragged()

{

  if(!is_over)

  {

    ballposX = offsetX + mouseX;

    ballposY = offsetY + mouseY;

  }

  

  detCollision();

  


}


void GameOver()

{

  textAlign(CENTER);

  textSize(100);

  fill(0);

  text("Game Over",320,240);

}


void Win()

{

  textAlign(CENTER);

  textSize(100);

  fill(0);

  text("Victory",320,240);

}


void detCollision()

{

   //左下

  if(ballposX-13 > 0 && ballposX-13 < 125 && ballposY+13 > 235)

  {

    is_over = true;

  }

  if(ballposX-13 > 0 && ballposX-13 < 125 && ballposY-13 > 235)

  {

    is_over = true;

  }

  if(ballposX+13 > 0 && ballposX+13 < 125 && ballposY+13 > 235)

  {

    is_over = true;

  }

  if(ballposX+13 > 0 && ballposX+13 < 125 && ballposY-13 > 235)

  {

    is_over = true;

  }

  

  //左上

  if(ballposX-13 > 0 && ballposX-13 < 125 && ballposY+13 < 195)

  {

    is_over = true;

  }

  if(ballposX-13 > 0 && ballposX-13 < 125 && ballposY-13 < 195)

  {

    is_over = true;

  }

  if(ballposX+13 > 0 && ballposX+13 < 125 && ballposY+13 < 195)

  {

    is_over = true;

  }

  if(ballposX+13 > 0 && ballposX+13 < 125 && ballposY-13 < 195)

  {

    is_over = true;

  }

  

  //右上

  if(ballposX+13 > 515 && ballposX+13 < 640 && ballposY-13 < 395)

  {

    is_over = true;

  }

  if(ballposX+13 > 515 && ballposX+13 < 640 && ballposY+13 < 395)

  {

    is_over = true;

  }

  if(ballposX+13 > 515 && ballposX+13 < 640 && ballposY-13 < 395)

  {

    is_over = true;

  }

  if(ballposX-13 > 515 && ballposX-13 < 640 && ballposY-13 < 395)

  {

    is_over = true;

  }

  

  //中上

  if(ballposX+13 > 125 && ballposX+13 < 515 && ballposY-13 < 45)

  {

    is_over = true;

  }

  if(ballposX-13 > 125 && ballposX-13 < 515 && ballposY-13 < 45)

  {

    is_over = true;

  }

  

  //中下

  if(ballposX+13 > 125 && ballposX+13 < 640 && ballposY+13 > 435)

  {

    is_over = true;

  }

  if(ballposX-13 > 125 && ballposX-13 < 640 && ballposY-13 > 435)

  {

    is_over = true;

  }

  

  //左下2

  if(ballposX+13 > 125 && ballposX+13 < 275 && ballposY+13 > 285)

  {

    is_over = true;

  }

  if(ballposX-13 > 125 && ballposX-13 < 275 && ballposY+13 > 285)

  {

    is_over = true;

  }

  if(ballposX-13 > 125 && ballposX-13 < 275 && ballposY-13 > 285)

  {

    is_over = true;

  }

  

  //右下2

  if(ballposX+13 > 275 && ballposX+13 < 475 && ballposY+13 > 385)

  {

    is_over = true;

  }

  if(ballposX-13 > 275 && ballposX-13 < 475 && ballposY+13 > 385)

  {

    is_over = true;

  }

  if(ballposX-13 > 275 && ballposX-13 < 475 && ballposY-13 > 385)

  {

    is_over = true;

  }

  

  //右下2上面的

  if(ballposX+13 > 416 && ballposX+13 < 475 && ballposY-13 > 235)

  {

    is_over = true;

  }

  if(ballposX+13 > 416 && ballposX+13 < 475 && ballposY+13 > 235)

  {

    is_over = true;

  }

  if(ballposX-13 > 416 && ballposX-13 < 475 && ballposY+13 > 235)

  {

    is_over = true;

  }

  

  //中間

  if(ballposX+13 > 165 && ballposX+13 < 376 && ballposY-13 > 85 && ballposY-13 < 245)

  {

    is_over = true;

  }

  if(ballposX+13 > 165 && ballposX+13 < 376 && ballposY+13 > 85 && ballposY+13 < 245)

  {

    is_over = true;

  }

  if(ballposX-13 > 165 && ballposX-13 < 376 && ballposY+13 > 85 && ballposY+13 < 245)

  {

    is_over = true;

  }

  if(ballposX-13 > 165 && ballposX-13 < 376 && ballposY+13 > 85 && ballposY-13 < 245)

  {

    is_over = true;

  }

  

  //中間右

  if(ballposX+13 > 376 && ballposX+13 < 475 && ballposY-13 > 85 && ballposY-13 < 195)

  {

    is_over = true;

  }

  if(ballposX+13 > 376 && ballposX+13 < 475 && ballposY+13 > 85 && ballposY+13 < 195)

  {

    is_over = true;

  }

  if(ballposX-13 > 376 && ballposX-13 < 475 && ballposY+13 > 85 && ballposY+13 < 195)

  {

    is_over = true;

  }

  if(ballposX-13 > 376 && ballposX-13 < 475 && ballposY+13 > 85 && ballposY-13 < 195)

  {

    is_over = true;

  }

  

  //中間右下

  if(ballposX+13 > 315 && ballposX+13 < 376 && ballposY-13 > 245 && ballposY-13 < 345)

  {

    is_over = true;

  }

  if(ballposX+13 > 315 && ballposX+13 < 376 && ballposY+13 > 245 && ballposY+13 < 345)

  {

    is_over = true;

  }

  if(ballposX-13 > 315 && ballposX-13 < 376 && ballposY+13 > 245 && ballposY+13 < 345)

  {

    is_over = true;

  }

  if(ballposX-13 > 315 && ballposX-13 < 376 && ballposY+13 > 245 && ballposY-13 < 345)

  {

    is_over = true;

  }

  

  //寶石

  if(ballposX > 579 && ballposX < 601 && ballposY > 409 && ballposY < 421)

  {

    is_win = true;

    is_over = true;

  }

  if(ballposX > 579 && ballposX < 601 && ballposY > 409 && ballposY < 421)

  {

    is_win = true;

    is_over = true;

  }

  if(ballposX > 579 && ballposX < 601 && ballposY > 409 && ballposY < 421)

  {

    is_win = true;

    is_over = true;

  }

  if(ballposX > 579 && ballposX < 601 && ballposY > 409 && ballposY < 421)

  {

    is_win = true;

    is_over = true;

  }

}

3.影片連結

https://youtu.be/7jWZpotG0no

2021年11月29日 星期一

black_Week08

 week12

1.小人走路控制方向


期末作品-電流急急棒

*示意圖(畫面*n)

*手繪(了解原理)

2021年11月22日 星期一

black_Week07

 week11

1.利用微積分掉落球


2.掉落球*2


3.利用for迴圈和陣列掉落數顆球


4.球彈地互動


5.被紅球碰到後停止


6.被紅球碰到後消失


7.熟悉布林變數


8.布林應用


9.隨機產生球


class Ball

{

  float x,y,vx,vy;

  boolean dead;

  Ball()

  {

    x=random(500);

    y=random(500);

    vy=random(-4,4);

    vx=random(-4,4);

    dead=false;

  }

  void draw()

  {

    if(dead==true)return;

    ellipse(x,y,50,50);

    if(dist(mouseX,mouseY,x,y)<50)

    {

      dead=true;

    }

    x=x+vx;

    y=y+vy;

    if(y>500||y<0)vy=-vy;

    if(x>500||x<0)vx=-vx;

  }

}

Ball []balls;

void setup()

{

  size(500,500);

  balls=new Ball[20];

  for(int i=0;i<20;i++)

  {

    balls[i]=new Ball();

  }

}

void draw()

{

  background(255);

  for(int i=0;i<20;i++)

  {

    balls[i].draw();

  }

}

10.重力加速度


11.reborn99


class Ball{
  float x, y, vx, vy;
  boolean dead;
  Ball(){
    reborn();
  }
  void reborn(){
    x = random(500);
    y = random(500);
    vy = random(-2,2);
    vx = random(-2,2);
    dead = false;
  }
  void draw(){
    if(dead==true) return;
    fill(255,0,0); ellipse(x,y, 5,5);
    if( dist(mouseX,mouseY,x,y)<5 ){
      dead=true;
      gameOver=true;
    }
    x = x + vx*1;
    y = y + vy*1;
    if(y>500 || y<0) reborn();
    if(x>500 || x<0) reborn();
  }
}
Ball [] balls;
void setup(){
  size(500,500);
  balls = new Ball[99];
  for(int i=0; i<99; i++){
    balls[i] = new Ball();
  }
}
boolean gameOver=false;
void draw(){
  background(0);
  for(int i=0; i<99; i++){
    balls[i].draw();
  }
  if(gameOver) background(255,0,0);  
}

2021年11月15日 星期一

black_Week06

 week10

1.計時器

2.每秒60frame


3.目前時間+計時器

4.寫出中文

5.利用滑鼠觸發切換字體

6.顯示目前時間

7.目前時間+下課時間+剩餘時間

8.目前時間+下課時間+剩餘時間(幾分鐘,幾秒鐘)


2021年11月1日 星期一

black_Week05

 week08

1.範例影片

2.自行範例影片

3.視訊鏡頭

4.存檔

5.讀檔

6.用for(迴圈)來改pixels[]裡的值,再利用updatePixels()把pixels[]更新到畫面中

7.改顏色

8.影片暫停




2021年10月25日 星期一

black_Week04

 week07

1.畫棋盤直線


2.用迴圈


3.橫線+直線


4.座標陣列

5.陣列畫棋子

6.滑鼠按棋子

7.調整準確位置

8.利用mouse(CENTER,RIGHT,LEFT)決定棋子狀態

9.畫出奇怪的圓

10.多重圈

2021年10月18日 星期一

black_Week03

Week05

1.讀圖


2.圖大小

3.背景+小圖

4.角色去背

5.滑鼠座標在角色正中間

6.撥放音樂

7.撥放兩個聲音

8.播放音階











2021年10月4日 星期一

black_Week02

 week04

1.用滑鼠座標改背景顏色


2.用滑鼠座標畫出線條

3.小畫家


4.小畫家改變筆色

5.小畫家改變筆粗細
void setup()
{
  size(500,500);
  rect(0,0,100,100);ellipse(50,50,8,8);//8的圓
  rect(0,100,100,100);ellipse(50,150,4,4);//4的圓
}
void draw()
{
  if(mousePressed)
  {
    if(mouseX<100)
    {
      if(mouseY<100)strokeWeight(8);//粗
      else if(mouseY<200)strokeWeight(4);//中
    }
    else line(mouseX,mouseY,pmouseX,pmouseY); 
  }
}

6.用for迴圈改筆粗細
void setup()
{
  size(500,500);
  for(int i=1;i<8;i++)
  {
    rect(0,i*50,50,50);
    ellipse(25,25+i*50,i,i);
  }
}
void draw()
{
  if(mousePressed)
  {
    if(mouseX<50)
    {
      for(int i=1;i<8;i++)
      {
        if(mouseY>i*50 && mouseY<i*50+50)
        {
          strokeWeight(i);
        }
      }
    }
    else line(mouseX,mouseY,pmouseX,pmouseY); 
  }
}