✎期中作品製作示範
👀爆爆王
void setup(){size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int [100];
int []waterI=new int [100];
void draw(){
background(#92AD28);
noStroke(); //沒有框線
for(int i=0;i<10;i++){
for(int j=0;j<17;j++){
if((j-i)%2==0) fill(#7E9819);
else fill(#92AD28);
rect(j*50,i*50,50,50);
}
}
fill(255,0,0);
ellipse(userJ*50+25,userI*50+25,50,50);
for(int i=0;i<waterN;i++){
fill(#93E1F7);
ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
}
}
void keyPressed(){
//控制角色方向位置
if(keyCode==LEFT) userJ--;
if(keyCode==RIGHT) userJ++;
if(keyCode==UP) userI--;
if(keyCode==DOWN) userI++;
//施放水球
if(key==' ') {
waterI[waterN]=userI;
waterJ[waterN]=userJ;
waterN++;
}
}
按下左上角的三角形或Ctrl+R,即可執行看結果
👀鱷魚牙齒遊戲
int bad=0;int [] all=new int [18];
void setup(){
size(500,500);
bad=int(random(18));
all[bad]=1;
println(bad);
}
boolean bGameOver=false;
void draw(){
if(bGameOver){
background(255,0,0);
return;
}
background(255);
fill(0,155,0);
ellipse(250,250,300,300);
//畫出上排牙齒
for(int i=0;i<9;i++){
if(all[i]==-1) continue;
fill(255);
rect(110+i*30,200,30,30);
if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY <200+30){
fill(0);
rect(110+i*30,200,30,30);
//判斷是否為壞掉的牙齒
if(mousePressed && all[i]!=1) all[i]=-1;if(mousePressed && all[i]==1) bGameOver=true;
}
}
//畫出下排牙齒
for(int i=0;i<9;i++){
if(all[i+9]==-1) continue;
fill(255);
rect(110+i*30,300,30,30);
if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY <300+30){
fill(0);
rect(110+i*30,300,30,30);
//判斷是否為壞掉的牙齒
if(mousePressed && all[i+9]!=1) all[i+9]=-1;
if(mousePressed && all[i+9]==1) bGameOver=true;
}
}
}
按下左上角的三角形或Ctrl+R,即可執行看結果
👀採礦遊戲(?
void setup(){size(600,400);
}
float userX=300,userY=200;
float mapX=0,mapY=0;
void draw(){
background(#44B220);
stroke(#356C23);
noFill();
for(int i=0;i<16;i++){
for(int j=0;j<24;j++){
rect(mapX+j*25,mapY+i*25,25,25);
}
}
stroke(0);
fill(#FC9E38);
float angle=atan2(mouseY-userY,mouseX-userX);
//畫出三角形
triangle(userX+40*cos(angle),userY+40*sin(angle),
userX+15*cos(angle+PI/2),userY+15*sin(angle+PI/2),
userX+15*cos(angle-PI/2),userY+15*sin(angle-PI/2)); //PI=3.1415926...
ellipse(userX,userY,30,30);
mapX-=dirX;
mapY-=dirY;
}
int dirX=0,dirY=0;
void keyPressed(){
if(key=='a' || key=='A') dirX=-1;
if(key=='s' || key=='S') dirY=1;
if(key=='d' || key=='D') dirX=1;
if(key=='w' || key=='W') dirY=-1;
}
void keyReleased(){
if(key=='a' || key=='A') dirX=0;
if(key=='s' || key=='S') dirY=0;
if(key=='d' || key=='D') dirX=0;
if(key=='w' || key=='W') dirY=0;
}
按下左上角的三角形或Ctrl+R,即可執行看結果
👀小精靈
void setup(){size(600,400);
}
float open=1,angle=0;
int now=0;
float pacX=300,pacY=200;
int dirX=0,dirY=0;
void draw(){
background(0);
fill(255,255,0);
arc(pacX,pacY,30,30,0+angle+open,PI*2+angle-open); //畫扇形
pacX+=dirX;
pacY+=dirY;
now++;
open=abs((now%60)/60.0-0.5);
}
void keyPressed(){
//上下左右控制方向
if(keyCode==UP){ dirX=0; dirY=-1; angle=radians(270);} //radians(); 弧度(角度數值);
if(keyCode==DOWN){ dirX=0; dirY=1; angle=radians(90);}
if(keyCode==LEFT){ dirX=-1; dirY=0; angle=radians(180);}
if(keyCode==RIGHT){ dirX=1; dirY=0; angle=0;}
}
👀貓抓老鼠
void setup(){size(500,800);
for(int i=0;i<100;i++){
//亂數產生老鼠的位置
ratX[i]=100+int(random(3))*150; //random(3); 產生亂數
ratY[i]=-random(8000);
}
}
float []ratX=new float[100];
float []ratY=new float[100];
int score=0;
void draw(){
background(255,255,0);
fill(255); ellipse(100,100,100,50);
fill(255); ellipse(250,100,100,50);
fill(255); ellipse(400,100,100,50);
fill(255,0,0); textSize(50); text("Score:"+score,100,100);
for(int i=0;i<100;i++){
fill(80); ellipse(ratX[i],ratY[i],50,50);
ratY[i]+=2;
//判斷老鼠與滑鼠之間的距離
if(dist(mouseX,mouseY,ratX[i],ratY[i])<25){
ratY[i]=-random(8000);
score+=100;
}
}
}
按下左上角的三角形或Ctrl+R,即可執行看結果
👀圖片拼圖
int [][]puzzle=new int[20][20]; //存放真實答案
int [][]touch=new int[20][20]; //記錄滑鼠點擊
void setup(){
size(600,800);
}
boolean bGenerator=true; //判斷目前模式
void draw(){
background(255);
if(bGenerator){ //設計關卡
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
if(puzzle[j][i]==0) fill(128);
else fill(255);
rect(100+15*j,100+15*i,15,15);
}
}
}
else{ //判斷遊戲過程正確或錯誤
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
if(touch[j][i]==0) fill(200);
else if(puzzle[j][i]==0&& touch[j][i]==1)fill(0,255,0);
else if(puzzle[j][i]==1&& touch[j][i]==1)fill(255,0,0);
rect(100+15*j,100+15*i,15,15);
}
}
}
}
int [][]touch=new int[20][20]; //記錄滑鼠點擊
void setup(){
size(600,800);
}
boolean bGenerator=true; //判斷目前模式
void draw(){
background(255);
if(bGenerator){ //設計關卡
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
if(puzzle[j][i]==0) fill(128);
else fill(255);
rect(100+15*j,100+15*i,15,15);
}
}
}
else{ //判斷遊戲過程正確或錯誤
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
if(touch[j][i]==0) fill(200);
else if(puzzle[j][i]==0&& touch[j][i]==1)fill(0,255,0);
else if(puzzle[j][i]==1&& touch[j][i]==1)fill(255,0,0);
rect(100+15*j,100+15*i,15,15);
}
}
}
}
void mouseDragged(){
int i=int((mouseY-100)/15);
int j=int((mouseX-100)/15);
if(bGenerator){
puzzle[j][i]=1;
}
else{
touch[j][i]=1;
}
}
void keyPressed(){
int i=int((mouseY-100)/15);
int j=int((mouseX-100)/15);
if(bGenerator){
puzzle[j][i]=1;
}
else{
touch[j][i]=1;
}
}
void keyPressed(){
//切換模式
if(key=='g'){
bGenerator=!bGenerator;
}
}
if(key=='g'){
bGenerator=!bGenerator;
}
}
按下左上角的三角形或Ctrl+R,即可執行看結果
🌟設計關卡模式
🌟遊戲模式
沒有留言:
張貼留言