2022/10/24 Week08
# 水果忍者打字遊戲
1. 複習上週 把音樂載下來+外掛
///直接將下載好的mp3拉進專案,就會自動增一個data資料夾
import processing.sound.*;
SoundFile sound1, sound2, sound3;
void setup(){
size(400,300);
sound1 = new SoundFile(this, "In Game Music.mp3");
sound1.play();
}
void draw(){
}
2. 可以切換音樂+文字
import processing.sound.*;
SoundFile sound1, sound2, sound3;
void setup(){
size(400,300);
textSize(50);
fill(255,0,0);
sound1 = new SoundFile(this, "In Game Music.mp3");
sound2 = new SoundFile(this, "Intro Song_Final.mp3");
sound1.play();
}
int stage=1; ///1、2、3
void draw(){
background(255);
if(stage==1){///舞台1
text("stage 1",100,100);
}
else if(stage==2){///舞台2
text("stage 2",100,100);
}
}
void mousePressed(){
if(stage==1){ ///stage1音樂正在播,點擊切換成stage2音樂
stage=2;
sound1.stop();
sound2.play();
}
else if(stage==2){ ///stage2音樂正在播,點擊切換成stage1音樂
stage=1;
sound2.stop();
sound1.play();
}
}
3. 切換文字(去掉上面播放音樂的程式碼)
void setup(){
size(400,300);
textSize(50);
fill(255,0,0); ///紅字
}
int stage=1; ///1、2、3
void draw(){
background(255,255,0);
fill(255,0,0);
textSize(80);
if(stage==1){///舞台1
text("stage 1",100,100);
}
else if(stage==2){///舞台2
text("stage 2",100,100);
}
}
void mousePressed(){
if(stage==1) stage=2;
else if(stage==2) stage=1;
}
4. 水果飛起來,然後可以消滅(暫停球飛動)
void setup(){
size(400,300);
}
float fruitX=200, fruitY=150; ///水果的位置 X、Y 有小數點,精確
float fruitVX=1, fruitVY=-1; ///水果的速度 VX VY
boolean flying=true;
void draw(){
background(255,255,0);//背景
ellipse(fruitX, fruitY, 50, 50);//圓
if(flying){ ///如果再飛,水果的位置會改變
fruitX += fruitVX;
fruitY += fruitVY;
}
}
void keyPressed(){
flying=false; ///暫停飛翔(白球停在原地)
}
5. 水果飛起來,然後可以消滅(換下一個球)
void setup(){
size(400,300);
}
float fruitX=200, fruitY=300;///水果的位置 X、Y有小數點,精確
float fruitVX=2, fruitVY=-13; ///水果的速度 VX VY
boolean flying=true;
void draw(){
background(255,255,0);//背景
ellipse(fruitX, fruitY, 50, 50);//圓
if(flying){ ///如果再飛,水果的位置會改變
fruitX += fruitVX;
fruitY += fruitVY;
fruitVY += 0.98/3; //重力加速度
}
}
void keyPressed(){
flying=false;
fruitReset(); ///重新準備另一個水果
}
void fruitReset(){
fruitX=random(100,300); //隨機數值,介於100~300之間
fruitY=300; //固定飛的高度
fruitVX=random(-2,+2); //隨機數值,介於-2~+2之間
fruitVY=-13; //回復成原本的速度
flying=true; //可以繼續飛
}
6. 用Class的方式修改上一個程式
//目標: class物件: 每個水果都可以用物件畫出來
class Fruit{
float x, y, vx, vy;
boolean flying;
PApplet sketch;//為了讓random可以用,修改一下
Fruit(PApplet _sketch){ //建構子: 一開始要做的事
sketch = _sketch;//為了讓random可以用,修改一下
reset();
}
void reset(){
x = sketch.random(100.0, 300.0);//為了讓random可以用,修改一下
y = 300;
vx = sketch.random(-2, +2);//為了讓random可以用,修改一下
vy = -13;
flying = true;
}
void update(){
x += vx;
y += vy;
vy += 0.98/3; //重力加速度
}
}
Fruit fruit;
void setup(){
size(400,300);
fruit = new Fruit(this); //為了讓random可以用,修改一下
}
void draw(){
background(255,255,0);
ellipse(fruit.x, fruit.y, 50, 50);
fruit.update();
}
void keyPressed(){
fruit.reset();
}
7. 先新增一個分頁(Fruit)將程式分開,再加上點擊英文,就可打落水果
///主程式
//先新增一個分頁,取名Fruit(上面倒三角形/新增分頁)
Fruit[] fruits;
void setup(){
size(400,300);
fruits = new Fruit[3];
for(int i=0; i<3; i++){
fruits[i] = new Fruit(this); //為了讓random可以用,修改一下
}
}
void draw(){
background(255,255,0);
for(int i=0; i<3; i++){
fill(255); ellipse(fruits[i].x, fruits[i].y, 50, 50); ///球
textSize(30);
textAlign(CENTER,CENTER);
fill(0); text(fruits[i].c, fruits[i].x, fruits[i].y); ///字
fruits[i].update();
}
}
void keyPressed(){
for(int i=0; i<3; i++){
if( keyCode == fruits[i].c){
fruits[i].reset();
}
}
}
//////////////////////////////////////////
///Class: Fruit
String line="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
class Fruit{
float x, y, vx, vy;
boolean flying;
char c; //水果對應的字母
PApplet sketch;//為了讓random可以用,修改一下
Fruit(PApplet _sketch){ //建構子: 一開始要做的事
sketch = _sketch;//為了讓random可以用,修改一下
reset();
}
void reset(){
x = sketch.random(100.0, 300.0);//為了讓random可以用,修改一下
y = 300;
vx = sketch.random(-2, +2);//為了讓random可以用,修改一下
vy = -13;
flying = true;
int i=int(random(26));
c = line.charAt(i);
}
void update(){
x += vx;
y += vy;
vy += 0.98/3; //重力加速度
}
}
////////////////////////////////////////////////








沒有留言:
張貼留言