2021年11月29日 星期一

ᐇ Week12

 Week12

這周主要規劃期末作品内容,每周逐步完成。

1.小人移動網址

https://openprocessing.org/sketch/911326

2.sprite animation人物移動

PImage img;

void setup(){

  size(500,500);

  img=loadImage("img.jpg");

  imageMode(CENTER);

}

int a=0, b=0, x=250, y=250;//ab用於更換行列圖片

void draw(){

  background(255);

  //image( img, 0,0);

  image(  img.get(141*a, 211*b, 141,211), x,y);//選擇所需圖片

  if(frameCount%30==0) a = (a+1)%4;

}

void keyPressed(){

  if(keyCode==RIGHT){ b=3; x++; }//可通過改變x大小調整速度

  if(keyCode==LEFT) { b=2; x--; }

  if(keyCode==UP) { b=1; y--; }

  if(keyCode==DOWN){ b=0; y++; }

}

3.期末規劃

(1)内容大綱

我們組選擇做出類似Geometry dash的作品,每周都加上調整

(2)示意圖
我們將使用滑鼠或是鍵盤控制一個正方形的彈跳,使其不能碰到三角形或其他有傷害的障礙物,在此期間我們會不斷前進,帶來不同位置的障礙物。
跳躍的正方形
躲避三角形
(3)Youtube影片
https://youtu.be/k90y6PIzIaE
該視頻將會簡單介紹游戲流程
(4)原理,初始程式碼

1.準備陷阱和背景
float []badx;//陷阱
void setup(){
  size(600,400);
  badx=new float[100];//準備100個陷阱
  badx[0]=random(200,300);
  for(int i=0;i<100;i++){
    badx[i]=badx[i-1]+random(200,250);//陷阱間隔
  }
}
void draw(){
  background(#FF0A7D);
}
2.角色和背景移動
float []badx;//陷阱
void setup(){
  size(600,400);
  badx=new float[100];//準備100個陷阱
  badx[0]=300+random(200,300);//預留距離
  for(int i=1;i<100;i++){
    badx[i]=badx[i-1]+random(200,250);//陷阱間隔
  }
}
float usery=300, bgx=0;//方塊y坐標,三角形背景x的移動
void draw(){
  background(#FF0A7D);
  fill(#F5ADCF);
  for(int i=0;i<100;i++){
    triangle(badx[i]-bgx,300,badx[i]-25-bgx,350,badx[i]+25-bgx,350);
  }
  fill(#AD0051); rect(0,350,600,400);//地面
  rect(150,usery,50,50);
  bgx+=3;//移動
}
3.跳躍
float []badx;//陷阱
void setup(){
  size(600,400);
  badx=new float[100];//準備100個陷阱
  badx[0]=300+random(200,300);//預留距離
  for(int i=1;i<100;i++){
    badx[i]=badx[i-1]+random(200,250);//陷阱間隔
  }
}
float usery=300, vy=0, bgx=0;//方塊y坐標,三角形背景x的移動
void draw(){
  background(#FF0A7D);
  fill(#F5ADCF);
  for(int i=0;i<100;i++){
    triangle(badx[i]-bgx,300,badx[i]-25-bgx,350,badx[i]+25-bgx,350);
  }
  fill(#AD0051); rect(0,350,600,400);//地面
  rect(150,usery,50,50);
  if(jumping){
    usery+=vy;
    vy+=0.98/2;//重力加速度
    if(usery>300){//停留在地面
      jumping=false;
      usery=300;
    }
  }
  bgx+=3;//移動
}
boolean jumping=false;
void keyPressed(){
  if(jumping==false){
    jumping=true;//true時跳躍
    vy=-10;//往上跳
  }
}
4.方塊后影子
float []badx,bubblex,bubbley;//陷阱
void setup(){
  size(600,400);
  badx=new float[100];//準備100個陷阱
  badx[0]=300+random(200,300);//預留距離
  for(int i=1;i<100;i++){
    badx[i]=badx[i-1]+random(200,250);//陷阱間隔
  }
  bubblex=new float[10];
  bubbley=new float[10];
  for(int i=0;i<10;i++){
    bubblex[i]=0;
    bubbley[i]=300;//準備影子
  }
}
float usery=300, vy=0, bgx=0;//方塊y坐標,三角形背景x的移動
void draw(){
  background(#FF0A7D);
  fill(#F5ADCF);
  for(int i=0;i<100;i++){
    triangle(badx[i]-bgx,300,badx[i]-25-bgx,350,badx[i]+25-bgx,350);
  }
  fill(#AD0051); rect(0,350,600,400);//地面
  rect(150,usery,50,50);
  if(jumping){
    usery+=vy;
    vy+=0.98/2;//重力加速度
    if(usery>300){//停留在地面
      jumping=false;
      usery=300;
    }
  }
  for(int i=9;i>0;i--){
    bubblex[i]=bubblex[i-1];
    bubbley[i]=bubbley[i-1];
    ellipse(bubblex[i]+150-bgx,bubbley[i],10,10);
  }
  bubblex[0]=bgx;
  bubbley[0]=usery;
  bgx+=3;//移動
}
boolean jumping=false;
void keyPressed(){
  if(jumping==false){
    jumping=true;//true時跳躍
    vy=-10;//往上跳
  }
}








沒有留言:

張貼留言