越吃越長貪食蛇
2.製作方式
用processing 結合arduino板 製作出一個簡易的貪食蛇遊戲
隨心所欲愛吃什麼就吃什麼
3.圖片
4.心得介紹
由於之前所做的跟其他組相似,所以全部都重新來過,所以我們做一個貪食蛇的遊戲
遊戲非常簡單,讓大家操作起來更得心應手也有趣,所以瞞開心的也蠻有成就感的yeah
5.影片
6.組員分工情況
我們的程式設計 還有配接電路加上所有的美觀美術都是大家一起分工合作完成的,非常和樂融融,開心萬分。
int ballSize = 15; float ballX; float ballY; float ballSpeedX; float ballSpeedY; int padding = 25; int paddleH = 50; float paddleSpeedY = 3; float paddleLePosY; float paddleLeSpeedY = 0; float paddleRiPosY; float paddleRiSpeedY = 0; int scoreLe = 0; int scoreRi = 0; void setup() { size(480, 360); background(0); ballX = width/2; ballY = height/2; ballSpeedX = 3; paddleLePosY = height/2-paddleH/2; paddleRiPosY = height/2-paddleH/2; } void draw() { if (ballX &rt;= width || ballX <= 0 ) { if ( ballX &rt;= width ) { scoreLe += 1; } else { scoreRi += 1; } ballX = width/2; ballY = height/2; ballSpeedY = 0; paddleLePosY = height/2 - paddleH/2; paddleRiPosY = height/2 - paddleH/2; } noStroke(); fill(235,168,50); rectMode(CORNER); rect(0, 0, width, height); stroke(100); line(padding, padding, width-padding, padding); line(padding, height-padding, width-padding, height-padding); line(width/1, padding, width/1, height-padding); fill(255,0,0); textAlign(LEFT); text(scoreLe,padding, padding-10); textAlign(RIGHT); text(scoreRi, width-padding, padding-10); paddleLePosY += paddleLeSpeedY; if (paddleLePosY < padding) { paddleLePosY = padding; } else if (paddleLePosY+paddleH &rt; height-padding) { paddleLePosY = height-padding-paddleH; } paddleRiPosY += paddleRiSpeedY; if (paddleRiPosY < padding) { paddleRiPosY = padding; } else if (paddleRiPosY+paddleH &rt; height-padding) { paddleRiPosY = height-padding-paddleH; } noStroke(); fill(0,128,255); rectMode(CORNER); rect(padding, paddleLePosY, 10, paddleH); rect(width-padding, paddleRiPosY, 10, paddleH); ballX += ballSpeedX; ballY += ballSpeedY; if ( ballY-ballSize/2 < padding || ballY+ballSize/2 &rt; height-padding ) { ballSpeedY *= -1; } if (ballX-ballSize/2 <= padding && ballX+ballSize/2 &rt; padding) { if (ballY &rt;= paddleLePosY && ballY <= paddleLePosY+paddleH) { ballSpeedX *= -1; float hit = ballY - (paddleLePosY+paddleH/2); ballSpeedY += (hit / (paddleH/2)) *2; // range -1 to 1 (*2) } } if (ballX+ballSize/2 &rt;= width-padding && ballX-ballSize/2 < width-padding) { if (ballY &rt;= paddleRiPosY && ballY <= paddleRiPosY+paddleH) { ballSpeedX *= -1; float hit = ballY - (paddleRiPosY+paddleH/2); ballSpeedY += (hit / (paddleH/2)) *2; // range -1 to 1 (*2) } } noStroke(); fill(255,255,0); rectMode(CENTER); rect(ballX, ballY, ballSize, ballSize); } void keyPressed() { if (key == 'w' || key == 'W') { paddleLeSpeedY = paddleSpeedY * -1; } else if (key == 's' || key == 'S') { paddleLeSpeedY = paddleSpeedY; } else if (keyCode == UP) { paddleRiSpeedY = paddleSpeedY * -1; } else if (keyCode == DOWN) { paddleRiSpeedY = paddleSpeedY; } } void keyReleased() { if (key == 'w' || key == 'W' || key == 's' || key == 'S') { paddleLeSpeedY = 0; } else if (keyCode == UP || keyCode == DOWN) { paddleRiSpeedY = 0; } }
void setup(){ size(600,600); } float rrr=0.01; void draw(){ translate(300,300); rotate(rrr+=0.01); background(0,0,0); for(int i=0;i<36;i++){ rotate( PI/18); fill(255,168,70); ellipse(100,0,150,20); fill(80,10,70); ellipse(0,0,80,80); fill(70,60,230); ellipse(50,0,20,20); fill(150,60,230); ellipse(80,0,10,20); fill(150,255,230); ellipse(110,0,50,20); fill(150,170,50); ellipse(140,0,10,20); } }
void setup(){ size(600,600); } float rrr=0.1; void draw(){ translate(mouseX,mouseY); if(mousePressed){ float mymove=(mouseX-pmouseX)*(mouseX-pmouseX)+ (mouseY-pmouseY)*(mouseY-pmouseY); rotate(rrr+=0.1); background(0,0,0); for(int i=0;i<36;i++){ rotate( PI/18); fill(255,168,70); ellipse(100,0,150,20); fill(80,10,70); ellipse(0,0,80,80); fill(70,60,230); ellipse(50,0,20,20); fill(150,60,230); ellipse(80,0,10,20); fill(150,255,230); ellipse(110,0,50,20); fill(150,170,50); ellipse(140,0,10,20); } } }
void setup() { size(500,400); background(255); fill(255,0,0); rect(0,0,50,50); fill(0,255,0); rect(0,50,50,50); fill(0,0,255); rect(0,100,50,50); fill(255,200,170); rect(0,150,50,50); fill(0,0,0); rect(0,200,50,50); fill(255,255,255); rect(0,250,50,50); fill(255,255,255); rect(0,300,50,50); ellipse(0+25,250+25,10,10); fill(255,255,255); rect(0,350,50,50); ellipse(0+25,300+25,15,15); stroke(255,0,0); strokeWeight(10); } int r,g,b,i,x,y; void draw() { if(mouseX < 50 && mouseY &rt;250 && mouseY <300 && mousePressed) { i=5; } else if(mouseX < 50 && mouseY &rt;300 && mouseY <350 && mousePressed) { i=10; } else if(mouseX < 50 && mouseY &rt; 350 && mouseY < 400 && mousePressed) { i=20; r=255; g=255; b=255; } else if(mouseX<50 && mouseY<50 && mousePressed) { r=255; g=0; b=0; } else if(mouseX<50 && mouseY&rt;50 && mouseY<100 && mousePressed) { r=0; g=255; b=0; } else if(mouseX<50 && mouseY&rt;100 && mouseY<150 && mousePressed) { r=0; g=0; b=255; } else if(mouseX<50 && mouseY&rt;150 && mouseY<200 && mousePressed) { r=255; g=200; b=170; } else if(mouseX<50 && mouseY&rt;200 && mouseY<250 && mousePressed) { r=0; g=0; b=0; } if(mouseX&rt;70 && pmouseX&rt;70){ if(mousePressed) { strokeWeight(i); stroke(r,g,b); line(mouseX,mouseY,pmouseX,pmouseY); } } }心得:從小看蠟筆小新長大 ,現在我長大了,但他還是小新,實在是很感慨,我想他才是我心目中的不老天王吧,能夠畫出心目中的偶像真是我的榮幸,以及感謝老師能夠給予這麼棒的教材真的很感動拉
void setup(){ size(600,600); } void draw(){ fill(255,255,255); rect(100,100,100,100); fill(255,168,178); ellipse(mouseX,mouseY,100,80); fill(0,0,0); ellipse(mouseX-15,mouseY-15,5,10); fill(0,0,0); ellipse(mouseX+15,mouseY-15,5,10); fill(0,0,0); ellipse(mouseX,mouseY+25,30,20); fill(255,168,178); ellipse(mouseX,mouseY+25,25,15); fill(0,0,0); ellipse(mouseX-5,mouseY+25,3,6); fill(0,0,0); ellipse(mouseX+5,mouseY+25,3,6); fill(255,168,178); ellipse(mouseX+30,mouseY-48,10,30); fill(255,168,178); ellipse(mouseX-30,mouseY-48,10,30); }
作業2
void setup(){ size(600,600); //frameRate(1); } float x=100,y=100; void draw(){ background(0,0,0); fill(123,72,38); ellipse(mouseX-5,mouseY-50,8,20); fill(123,72,38); ellipse(mouseX,mouseY-45,50,10); fill(123,72,38); ellipse(mouseX,mouseY-40,65,10); fill(123,72,38); ellipse(mouseX,mouseY-35,80,10); fill(123,72,38); ellipse(mouseX,mouseY-28,90,15); translate(x,y); fill(255,168,178); ellipse(0,0,100,80); fill(0,0,0); ellipse(-15,-15,5,10); fill(0,0,0); ellipse(+15,-15,5,10); fill(0,0,0); ellipse(0,+25,30,20); fill(255,168,178); ellipse(0,+25,25,15); fill(0,0,0); ellipse(-5,+25,3,6); fill(0,0,0); ellipse(+5,+25,3,6); fill(255,168,178); ellipse(+30,-48,10,30); fill(255,168,178); ellipse(-30,-48,10,30); x=x*0.9 + mouseX*0.1; y=y*0.9 + mouseY*0.1; }作業3 心得:這次對於畫圖的技巧感覺更熟練了!
size(800,600); for( int i=0;i<80;i++) { for( int k=0;k<60;k++) {fill(i*255/40,k*255/30,0); rect(i*10,k*10,10,10); }}
作業3
size(400,300); for( int i=0;i<4;i++) { for( int k=0;k<3;k++) {fill(i*255/4,k*255/3,0); ellipse(i*100+50,k*100+50,100,100); }}
size(400,300); for( int i=0;i<4;i++) { for( int k=0;k<3;k++) {fill(i*255/4,k*255/3,0); ellipse(i*100+50,k*100+50,100,100); fill(195,195,195); ellipse(i*100+50,k*100+50,20,100); fill(128,128,225); ellipse(i*100+50,k*100+50,20,20); }}
心得: 今天學到了很多小技巧,非常充實,by the way,開燈看投影太亮了看不清楚
size(500,500); PImage kitty; kitty = loadImage("http://hello-kitty.sanriotown.com/images/kitty.png"); image(kitty, 20,20); saveFrame("kitty");
size(600,600); fill(195,195,195); ellipse(300,300,500,500); fill(255,255,255); ellipse(300,300,490,490); noStroke(); fill(195,195,195); triangle(258,295,291,48,317,293); triangle(103,440,258,295,317,293); triangle(258,295,317,293,493,441);我覺得角度的設定實在很難,總是差強人意,我會繼續研磨,做出更好作品!