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

2020年11月16日 星期一

07161116 week04

 


在網路上找圖 再把圖拉到process
設定好圖片大小 就會有圖片了
再找一張去背的圖 在改一些程式碼
就能讓去背圖跟著滑鼠移動了



PImage(讀入圖檔)


視窗碰撞:



float x=250,y=200;
float vx=1.0,vy=4.5;
void setup(){
 size(500,400); 
}
void draw(){
 ellipse(x,y,10,10); 
 x+=vx;
 y+=vy;
 if(x>500|| x<0)vx=-vx;
 if(y>400|| y<0)vy=-vy;
}


彈弓彈射

float x=250,y=200;
float vx=0,vy=0;
void setup(){
 size(500,400); 
}
void draw(){
  background(255);
  if(mousePressed)line(mouseX,mouseY,x,y);
 ellipse(x,y,10,10); 
 ellipse(mouseX,mouseY,10,10);
 x+=vx;
 y+=vy;
 if(x>500|| x<0)vx=-vx;
 if(y>400|| y<0)vy=-vy;
}
void mouseReleased(){
  vx=x-mouseX;vy=y-mouseY; 
}








week0404040404

 WEEK04


在網路上找圖 再把圖拉到process
設定好圖片大小 就會有圖片了
再找一張去背的圖 在改一些程式碼
就能讓去背圖跟著滑鼠移動了!!

 PImage img;
PImage img2;
void setup()
{
  size (300,225);
  img = loadImage("1.png");
  img2 = loadImage("2.png");
}
int x=0;
void draw()
{
  if(mouseX>200) x--;
  image( img , x, 0);
  image( img2 , mouseX-50/2, mouseY-80/2,50,80);
}



使圓碰到邊界就反彈

float x=250,y=200;
float vx=2,vy=2;
void setup()
{
  size(500,400);
}
void draw()
{
  if(mousePressed) line(mouseX,mouseY, x,y);
  ellipse( x, y, 10, 10);
  ellipse( mouseX, mouseY, 10, 10);
  x+=vx; y+=vy;
  if(x>500 || x<0) vx = -vx;
  if(y>400 || y<0) vy = -vy;
}
void mosueReleased()
{
  vx = x-mouseX; vy = y-mouseY;
}

week04 鄭皓文

           上星期大家應該是去校外教學了,剛好我又再隔離就完美錯過了這次教學活動,不得不說挺遺憾的,但下星期我就可以結束隔離了。麻煩的是,酒店的網路信號比動感地帶3G還差,所以我現在只能通過臉書社團的存檔照片進行操作,直播畫面經常出現卡頓或者掉線的情形。

      回到正題,這星期我們要學習如何匯入圖檔,步驟好像和之前用GLUT差不多,不過要注意的事情是這個功能在3.5.4裡面好像不能執行,我就只能重新回滾到3.5.3版本進行操作,修改視窗大小到和圖片解析度一樣後得到:

程式碼如下:

size(640,640);

PImage img;

img = loadImage("DEDSEC.png");

image(img,0,0);

要添加第二張圖片也很簡單:

圖片的效果會變成這樣

變更成這幾行就可以了:

size(1280,720);

PImage img;

PImage img2;

img = loadImage("DEDSEC.png");

img2 = loadImage("DEDSEC2.png");

image(img2,0,0);

image(img,450,200,400,400); 

那假如我們想讓這個圖片有隨滑鼠移動的功能該怎麼辦呢,也不難:

程式碼如下:

PImage img;

PImage img2;

void setup()

{

  size(1280,720);

  img = loadImage("DEDSEC.png");

  img2 = loadImage("DEDSEC2.png");

}

void draw()

{

  image(img2, 0 , 0);

  image(img,mouseX-150/2, mouseY-120/2,300,300);

} 

    既然可以控制滑鼠那自然也可以控制背景,只要稍作調整就可以讓這台經典的LP500在80年代風格的城市中奔馳了,且程式會隨著車輛的開動變更景觀,不過似乎因為我選了一張4K圖執行效率相當緩慢

當成OUTRUN的平面2D版本就行

程式碼如下:

PImage img;

PImage img2;

void setup()

{

  size(1920,1080);

  img=loadImage("city.jpg");

  img2=loadImage("contach.jpg");

}

int x=0;

void draw()

{

  if(mouseX>900)x-=20;

  image(img,x,0,1920,1080);

  image(img2,mouseX-50/2,mouseY-50/2,1000,220);

} 

    當然了,我們要做的還不止於此,我們可以試著寫下彈弓發射後的物理效果模擬:

不過感覺好像有點假是怎麼回事

    感覺有點假就對了,因為現在這個程式只遵循牛頓第一定理,現實生活中應該還要有牛頓第二定理才對,稍作修改後我們得到:

有沒有感覺瞬間真實起來了

程式碼如下:

float x=250,y=200;

float vx=1.3,vy=-14;

void setup()

{

  size(1280,720);

}

void draw()

{

  ellipse(x,y,25,25);

  x+=vx;

  y+=vy;

  vy += 0.98;

  if(x>1280 || x<0) vx = -vx*0.85;

  if(y>720 || y<0) vy = -vy*0.85;

}

    今天上課的內容大概就是這些,除了讀圖外還學到了一些簡易的遊戲製作和簡易物理模擬,但是感覺要做出可以玩的遊戲還要學很多東西才行。










2020年11月14日 星期六

KIO Week04

 補Week04

將圖檔載入到processing的檔案總管內


使用程式碼呼叫出剛剛載入的圖檔

可同時載入、呼叫多個圖檔並設定位置及大小

讓圖片跟著鼠標移動

準備做背景捲動

如果要讓人物向右走 那背景就要向左移動

用float讓移動更流暢 使用變數做移動

加入速度(velocity) 由速度改變x,y位置
並且x,y位置超過邊界時會反彈

製作類似憤怒鳥的程式
速度會因為(圓球位置-滑鼠座標位置)而改變
mouseReleased()
如果滑鼠放開的函式

加入重力 並且撞到東西會損失動能


2020年10月19日 星期一

week04




PImage img;
float x=100,y=200;
void setup(){
  size(500,500);
  img=loadImage("1.png");
}
void draw(){
    image(img,x,y,100,100);
}


拋物線
PImage img;
float x=100,y=200,vx=3,vy=-30;
void setup(){
  size(500,500);
  img=loadImage("1.png");
}
void draw(){
    image(img,x,y,100,100);
    x+=vx;
    y+=vy;
    vy+=0.98;
}


切水果

PImage img;
float x=100,y=500,vx=3,vy=-30;
int fruitDie=0;
void setup(){
  size(500,500);
  img=loadImage("1.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;
   }
}



聲音
import ddf.minim.*;
Minim minim;
AudioPlayer player1;
AudioPlayer player2;
PImage img;
float x=100,y=500,vx=3,vy=-30;
int fruitDie=0;
void setup(){
  size(500,500);
  img=loadImage("1.png");
  minim=new Minim(this);
  player1=minim.loadFile("wind.wav");
  player2=minim.loadFile("swords.wav");
}
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;
    player2.rewind();
    player2.play();
    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;
   }
}

2020年10月5日 星期一

𝔍𝔒𝔗𝔇-week 4

今日進度:

1.放入圖片並顯示

2.放入2張圖片並讓其中一張圖片跟著鼠標移動

3.放入2張圖片並讓其中一張圖片跟著鼠標中央移動

4.放入背景圖和角色圖讓讓背景會移動

5.遇邊界會自動反彈的球

6.類似憤怒鳥的彈射功能

7.具有地心引力的球

今日成果:

1.放入圖片並顯示

程式:

PImage img;

size(800,500);

img = loadImage("image.png"); //插入圖片

image( img, 0, 0);//圖片位置

執行結果:



⚠️注意事項:

記得將圖片放入程式中並在下方看到檔案已放入程式中才算完成

2.放入2張圖片並讓其中一張圖片跟著鼠標移動

程式:

PImage img;

PImage img2;

void setup()

{

size(270,400);

img = loadImage("image.png"); //插入圖片1

img2 = loadImage("image2.png"); //插入圖片2

}

void draw()

{

image( img, 0, 0);

image( img2, mouseX, mouseY,35,59); //圖片2跟著鼠標移動,且尺寸為35*59

}

執行結果:


3.放入2張圖片並讓其中一張圖片跟著鼠標中央移動

程式:

PImage img;

PImage img2;

void setup()

{

size(270,400);

img = loadImage("image.png"); //插入圖片1

img2 = loadImage("image2.png"); //插入圖片2

}

void draw()

{

image( img, 0, 0);

image( img2, mouseX-35/2, mouseY-59/2,35,59); //圖片2中央跟著鼠標移動,且尺寸為35*59

}

執行結果:


4.放入背景圖和角色圖讓讓背景會移動

程式:

PImage img;

PImage img2;

void setup()  //只做一次

{

  size(400,400);

  img = loadImage("long_background.jpg"); //插入背景圖

  img2 = loadImage("rick.jpg");  //插入角色圖

}

int x; //設定移動變數

void draw() //每次都做

{

  if(mouseX>300) x--;  //當鼠標超過300後,圖片往右移

  image( img, x, 0);

  image( img2, mouseX-35/2, mouseY-59/2,35,59);//圖片2中央跟著鼠標移動,且尺寸為35*59

}

執行結果:




                                              ↑角色用PPT移除背景後放入遊戲中

5.遇邊界會自動反彈的球

程式:

float x=250,y=200;

float vx=2.0,vy=1.5; //初速度

void setup()

{

  size(500,400);

}

void draw()

{

  ellipse(x,y, 10, 10);

  x+=vx;

  y+=vy;

  if(x>500 || x<0) vx = -vx; //遇牆反彈

  if(y>400 || y<0) vy = -vy;//遇牆反彈

} 


執行結果:





6.類似憤怒鳥的彈射功能
程式:
float x=250,y=200;
float vx=0,vy=0; //初速度
void setup()
{
  
  size(500,400);
}
void draw()
{
  background(255);
  if(mousePressed) line(mouseX, mouseY, x, y);
  ellipse(x,y, 10, 10);
  ellipse(mouseX,mouseY, 10, 10);
  x+=vx;y+=vy;
  if(x>500 || x<0) vx = -vx; //遇牆反彈
  if(y>400 || y<0) vy = -vy; //遇牆反彈
} 
void mouseReleased() // 當鼠標放開後彈射
{
  vx= x-mouseX; vy= y-mouseY;
}
執行結果:
                                       
7.具有地心引力的球
程式:
float x=250,y=200;
float vx=1.3,vy=-14;
void setup()
{
  
  size(500,400);
}
void draw()
{
  //background(255); //加入即可得到白色的背景
  ellipse(x,y, 10, 10);
  x+=vx;y+=vy; //牛頓第一定律 作用力=反作用力
  vy += 0.98; //牛頓第二定律 重力加速度
  if(x>500 || x<0) vx = -vx*0.85;
  if(y>400 || y<0) vy = -vy*0.85;
} 

執行結果:
                                            ↑未清除背景的地心引力球,若需清除加background(255);
⚠️注意事項:

記得將圖片放入程式中

檢查各個名稱有無錯字或專有名詞有無拼錯

🗿Week01



1.開啟processing




2.改變字的大小



3.畫一條線







 

🗿Week04



1. 找到圖片,直接把圖片拉到Processing裡面就會在檔案總管裡
2. 然後讀入圖片,調整好大小,再印出來 就會有原本的圖片了!

程式碼:
PImage img;
size(800,498);///設定畫面大小
img = loadImage("image.png");///在資料夾中找圖檔
image(img,0,0);///設定圖檔的位置

 *image( img,0,0,200,200) ///圖片從0,0開始印,大小為200,200

3.用同樣的方法就可以印出更多張圖



加入mouseX,mouseY 
小圖就會跟著你的滑鼠移動

程式碼:
PImage img;
PImage img2;
void setup(){///只做一次
  size(800,498);
  img = loadImage("image.png");
  img2 = loadImage("loge.png");
}
void draw(){ 
  image(img,0,0); ///(img,調整起始印圖片的位置,控制圖片大小)
  image(img2,mouseX-289/2,mouseY-169/2, 289, 169);///讓鼠標的點在圖的中心
}


找一個長長的圖,再找一個去背圖主角

很長的圖片移動x座標
使用x--讓整個主角看起來像是往右邊移動 

程式碼:
PImage img;
PImage img2;
void setup(){
  size(800,375);
  img = loadImage("background.png");
  img2 = loadImage("mario.png");
}
int x=0;
void draw(){ 
  if(mouseX>700) x--; ///鼠標大於700,背景移動
  image(img,x,0);
  image(img2,mouseX-220/2,mouseY-169/2, 220, 169);
}

*去背小知識


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


-
球彈跳(要合乎物理定律)

程式碼:
float x=250, y=200;///為了精細,加入小數點
float vx=1.3, vy=-14;///初速為0
void setup(){
  size(500,400);
}
void draw(){
  background(255);
  ellipse(x,y,10,10);
  x+=vx; y+=vy;///牛頓第一運動定律,動者恆動
  vy+=0.98;///牛頓第二運動定律 f=ma 加速度
  if(x>500 || x<0) vx = -vx*0.85;///遇到邊界,反彈
  if(y>400 || y<0) vy = -vy*0.85;///遇到邊界,反彈
}