2020年11月16日 星期一
07161116 week04
week0404040404
WEEK04
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的檔案總管內
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);
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;
}
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;
}
}
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;//遇牆反彈
}
執行結果:
記得將圖片放入程式中
檢查各個名稱有無錯字或專有名詞有無拼錯













































