1.做爆爆王的畫面:角色移動操控、放水球
2.講解期中作業小精靈:使小精靈嘴巴能夠自動開合、移動時嘴巴位置不改變
重要概念 :
1. keyCode → 鍵盤方向鍵操控角色移動
2. arc → 有開口的圓形
一、爆爆王
1. 畫出爆爆王的野戰地圖背景
2.增加角色,並使用 keyCode 使他能移動
3.使用陣列的概念 放出水球
程式碼:
void setup(){
size (850,500);
}
int userJ=9, userI=5;
float userX,userY;
int waterN=0; ///waterball
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);
///USER
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++;
///USER MOVE
if(key==' '){ waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++;}
/// WATERBALL
}
二、期中作業小精靈
1.畫出小精靈: 使用 arc 概念
2.讓小精靈的嘴巴能夠自動開合
3.使小精靈能夠轉四方向並且嘴巴角度不變 ( keyCode )
4.讓小精靈移動!!
程式碼:
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);
///0.5 -> 0 -> 0.5 -> 0.5 -> 0 ...
}
int dir=0;
void keyPressed(){
if(keyCode==UP) {dirX=0;dirY=-1; angle=radians(270);}
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;}
}
沒有留言:
張貼留言