2019年10月3日 星期四

☆。week04開始的互動技術。★

★筆記☆
工具->顏色選擇器。
size() //畫面的大小。
line()//劃一條線,從開始點的XY座標,到結束點的XY座標。
rect()//畫一個長方形,從開始點的XY座標,到結束點的XY座標。
fill()//方格填色,A(RGBA)方式ORB(#??????)色碼填色。
background()//背景填色,A(RGBA)方式ORB(#??????)色碼填色。
ellipse()//橢圓形(起點(XY)座標,長,寬。)
void setup(){} //大約等於Strat()
void draw(){} //大約等於Update()
PImage img;增加圖片近來,先進行宣告
img=loadImage("dora.jpg");讀入圖片
image(img,0,0,width,height);顯示圖片
if (mousePressed&& mouseButton == RIGHT) { //如果是右鍵,那就把格子填白
int nowX=mouseX/16*16 , nowY=mouseY/30*30; //偵測在哪個位置,將小數消掉之後讓方格基點在左上角
mouseDragged()//滑鼠移動函式
key//用來偵測鍵盤的按鍵
keyCode//用來偵測沒辦法直接打出來的按鍵 UP RIGHT ALT CTRL ENTER 之類的
可以使用PRINT來偵測KEY OR KEYCODE//可能會因為系統差異而有不同編碼
多用變數取代定值,可以更方便更改。
keyReleased//按鍵跳起來後執行
★☆


int table[]=new int[26*2];
int keyX[]=new int[26*2];
int keyY[]=new int[26*2];
void setup(){
  size(700,400);
}
void draw(){
  background(255);
  for(int i=0;i<26;i++){
    if(table[i]==1)rect(keyX[i],keyY[i],30,30);

    if(table[i+26]==1)rect(keyX[i],keyY[i],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;
  }
★☆有彈跳功能(地心引力的球)




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>600-15||ballX<0+15)Vx*=-0.9;
  if(ballY<0+15)Vy*=-0.9;
  if(ballY>400-20){
    Vy=-Vy*0.9;
    Vx=Vx*0.9;
    ballY=400-15;
  }
    Vy+=0.98;
}

★☆
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);
  image(imgMario, marioX, marioY, 100, 100);
  marioX +=marioVx;
  marioY +=marioVy;
  if (marioY<=100)marioVy+=0.9;
  else marioY=100;
  if (brake==1)marioVx*=0.98;
}
int brake=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) {
    marioVy=-15;
  }
}
★☆///斜跳會出問題
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;
  }
}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...