按對應字母依序印出格子
int [] table = new int[26*2];
void setup(){
size(800,400);
}
void draw(){
background(255);
for(int i=0;i<26;i++){
if(table[i]==1) rect(i*30,100,30,30);///如果某大寫字母被按到,框出對應格子
if(table[i+26]==1) rect(i*30,150,30,30);///如果某小寫字母被按到,框出對應格子
}
}
void keyPressed(){
for(int i=0;i<26;i++){
if(key=='A'+i) table[i]=1;
if(key=='a'+i) table[i+26]=1;
print(table[i]);
print(table[i+26]);
}
}
2.畫一顆白球碰到左右邊界反彈(左右橫移)

程式碼:
int ballX=300,ballY=300;///球心在300,300
int vx=-2;///姮怡起始速度為-2
void setup(){
size(700,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
if(ballX<0) vx=+2;///碰到左邊屆反彈
if(ballX>700) vx=-2;///碰到右邊界反彈
}
3.球碰到邊界反彈
int ballX=300,ballY=300;
int vx=-2;///左右起始速度
int vy=-2;///上下起始速度
void setup(){
size(700,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
ballY+=vy;
if(ballX<0) vx=+2;///碰到左邊屆反彈
if(ballX>700) vx=-2;///碰到右邊屆反彈
if(ballY<0) vy=+2;///碰到上邊屆反彈
if(ballY>400) vy=-2;///碰到下邊屆反彈
}

4.彈跳的球
float ballX=300,ballY=300;
float vx=+2,vy=-10;
void setup(){
size(600,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
ballY+=vy;
vy+=0.98;///在垂直方向加重力
if(ballX<0+15) vx=-vx*0.9;///球邊碰到邊屆時反彈,並且速度*0.9
if(ballX>600-15) vx=-vx*0.9;//球邊碰到邊屆時反彈,並且速度*0.9
if(ballY<0+15) vy=-vy*0.9;//球邊碰到邊屆時反彈,並且速度*0.9
if(ballY>400-15) vy=-vy*0.9;//球邊碰到邊屆時反彈,並且速度*0.9
}

5.加上摩擦力
float ballX=100,ballY=300;
float vx=+2,vy=-10;
void setup(){
size(600,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
ballY+=vy;
if(ballX<0+15) vx=-vx*0.9;
if(ballX>600-15) vx=-vx*0.9;
if(ballY<0+15) vy=-vy*0.9;
if(ballY>400-15) {
vy=-vy*0.9;
vx=vx*0.9;
ballY=400-15;
}
vy+=0.98;
}

5.馬力歐跳
PImage imgMario;///宣告圖片變數
float marioX=100,marioY=100;///圖片位置
float mariovX=0,mariovY=0;///圖片速度
void setup(){
size(500,500);
imgMario=loadImage("mario.png");///讀檔,要先拉一張mario.png到程式碼上
}
void draw(){
background(255);
rect(0,200,500,500);
image(imgMario,marioX,marioY,100,100);
marioX+=mariovX;
marioY+=mariovY;
if(marioY<=100) mariovY+=0.9;
else marioY=100;
}
void keyPressed(){
if(keyCode==RIGHT) marioX+=3;
if(keyCode==LEFT) marioX-=3;
if(keyCode==UP) mariovY=-15;
}

6.可以煞車的馬力歐,但是斜著跳會有問題!!!
PImage imgMario;
float marioX=100,marioY=100;
float mariovX=0,mariovY=0;
void setup(){
size(500,500);
imgMario=loadImage("mario.png");
}
void draw(){
background(255);
rect(0,200,500,500);
image(imgMario,marioX,marioY,100,100);
marioX+=mariovX;
marioY+=mariovY;
if(softBrake==1) mariovX*=0.9;
if(marioY<=100) mariovY+=0.9;
else marioY=100;
}
int softBrake;///宣告煞車變數
void keyReleased(){///如果左右按鍵放開,煞車變數設為1
if(keyCode==RIGHT) softBrake=1;
if(keyCode==LEFT) softBrake=1;
}
void keyPressed(){
if(keyCode==RIGHT) {
mariovX=3;softBrake=0;
}
else if(keyCode==LEFT) {
mariovX=-3;softBrake=0;
}
else if(keyCode==UP)
mariovY=-15;
}

7.解決辦法
程式碼:
7.

程式碼:
int ballX=300,ballY=300;///球心在300,300
int vx=-2;///姮怡起始速度為-2
void setup(){
size(700,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
if(ballX<0) vx=+2;///碰到左邊屆反彈
if(ballX>700) vx=-2;///碰到右邊界反彈
}
3.球碰到邊界反彈
int ballX=300,ballY=300;
int vx=-2;///左右起始速度
int vy=-2;///上下起始速度
void setup(){
size(700,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
ballY+=vy;
if(ballX<0) vx=+2;///碰到左邊屆反彈
if(ballX>700) vx=-2;///碰到右邊屆反彈
if(ballY<0) vy=+2;///碰到上邊屆反彈
if(ballY>400) vy=-2;///碰到下邊屆反彈
}

4.彈跳的球
float ballX=300,ballY=300;
float vx=+2,vy=-10;
void setup(){
size(600,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
ballY+=vy;
vy+=0.98;///在垂直方向加重力
if(ballX<0+15) vx=-vx*0.9;///球邊碰到邊屆時反彈,並且速度*0.9
if(ballX>600-15) vx=-vx*0.9;//球邊碰到邊屆時反彈,並且速度*0.9
if(ballY<0+15) vy=-vy*0.9;//球邊碰到邊屆時反彈,並且速度*0.9
if(ballY>400-15) vy=-vy*0.9;//球邊碰到邊屆時反彈,並且速度*0.9
}

5.加上摩擦力
float ballX=100,ballY=300;
float vx=+2,vy=-10;
void setup(){
size(600,400);
}
void draw(){
background(255);
ellipse(ballX,ballY,30,30);
ballX+=vx;
ballY+=vy;
if(ballX<0+15) vx=-vx*0.9;
if(ballX>600-15) vx=-vx*0.9;
if(ballY<0+15) vy=-vy*0.9;
if(ballY>400-15) {
vy=-vy*0.9;
vx=vx*0.9;
ballY=400-15;
}
vy+=0.98;
}

5.馬力歐跳
PImage imgMario;///宣告圖片變數
float marioX=100,marioY=100;///圖片位置
float mariovX=0,mariovY=0;///圖片速度
void setup(){
size(500,500);
imgMario=loadImage("mario.png");///讀檔,要先拉一張mario.png到程式碼上
}
void draw(){
background(255);
rect(0,200,500,500);
image(imgMario,marioX,marioY,100,100);
marioX+=mariovX;
marioY+=mariovY;
if(marioY<=100) mariovY+=0.9;
else marioY=100;
}
void keyPressed(){
if(keyCode==RIGHT) marioX+=3;
if(keyCode==LEFT) marioX-=3;
if(keyCode==UP) mariovY=-15;
}

6.可以煞車的馬力歐,但是斜著跳會有問題!!!
PImage imgMario;
float marioX=100,marioY=100;
float mariovX=0,mariovY=0;
void setup(){
size(500,500);
imgMario=loadImage("mario.png");
}
void draw(){
background(255);
rect(0,200,500,500);
image(imgMario,marioX,marioY,100,100);
marioX+=mariovX;
marioY+=mariovY;
if(softBrake==1) mariovX*=0.9;
if(marioY<=100) mariovY+=0.9;
else marioY=100;
}
int softBrake;///宣告煞車變數
void keyReleased(){///如果左右按鍵放開,煞車變數設為1
if(keyCode==RIGHT) softBrake=1;
if(keyCode==LEFT) softBrake=1;
}
void keyPressed(){
if(keyCode==RIGHT) {
mariovX=3;softBrake=0;
}
else if(keyCode==LEFT) {
mariovX=-3;softBrake=0;
}
else if(keyCode==UP)
mariovY=-15;
}

7.解決辦法
程式碼:
PImage imgMario;
float marioX=100, marioY=100;
float marioVx=0, marioVy=0;
void setup() {
size(500, 500);
imgMario=loadImage("mario.png");
}
void draw() {
background(255);
rect(0, 200, 500, 50);
rect(120,120, 500, 50);
image(imgMario, marioX, marioY, 100, 100);
marioX +=marioVx;
marioY +=marioVy;
if (marioY<=100)marioVy+=0.9;
else {marioY=100;flying=0;}
if(marioX>=60&&flying==1){checkbox=1;}
else if(marioX>=60&&checkbox==1){marioY=20;}
else{flying=0;checkbox=0;}
if(marioX<=10||marioX>=480)marioVx*=-1;
if (brake==1)marioVx*=0.98;
}
int flying=0;
int brake=0;
int checkbox=0;
void keyReleased() {
if (keyCode==RIGHT) {
brake=1;
}
if (keyCode==LEFT) {
brake=1;
}
}
void keyPressed() {
if (keyCode==RIGHT) {
marioVx=3;
brake=0;
}
if (keyCode==LEFT) {
marioVx=-3;
brake=0;
}
if (keyCode==UP&&flying==0){
marioVy=-15;
flying=1;
}
}
7.

沒有留言:
張貼留言