2023年11月23日 星期四

SangMo 互動技術 Week11

Week11

Step 1-1印出方格 

void setup(){

  size(600,500);
}
void draw(){
  background(255);
  for(int i=0;i<4;i++){
    for(int j=0;j<6;j++){
      fill(255,165,0);rect(j*100,i*100,100,100);
      fill(0);text("Hello",j*100+25,i*100+50);
    }
  }
}
執行圖:

Step 1-2隨機數字 

void setup(){
  size(600,500);
  for(int i=0;i<4;i++){
    for(int j=0;j<6;j++){
      value[i][j] = int(random(40));
    }
  }
}
int [][]value = new int[4][6];
void draw(){
  background(255);
  for(int i=0;i<4;i++){
    for(int j=0;j<6;j++){
      fill(255,165,0);rect(j*100,i*100,100,100);
      fill(0);text("Hello",j*100+25,i*100+50);
    }
  }
}
執行圖:

Step 1-3 數字交換

void setup(){
  size(600,500);
  for(int i=0;i<4;i++){
    for(int j=0;j<6;j++){
      value[i][j] = i*6+j+10;//從10開始,數字不重複
    }
  }
  for(int k=0;k<2;k++){
    int i=int(random(4)),j=int(random(6));
    int i2=int(random(4)),j2=int(random(6));
    int temp = value[i2][j2];
    value[i][j]=value[i2][j2];
    value[i2][j2]=temp;
  }
}
int [][]value = new int[4][6];
void draw(){
  background(255);
  for(int i=0;i<4;i++){
    for(int j=0;j<6;j++){
      fill(255,165,0);rect(j*100,i*100,100,100);
      fill(0);text(value[i][j],j*100+25,i*100+50);
    }
  }
}
執行圖:

Step 1-4 場景轉換 *

int state = 0;
void setup(){
  size(400,400);
  textSize(50);
}
int x=50,y=50;
void draw(){
  if(state==0){//第0關
    background(255);
    fill(0);text("Click to Start",80,200);
  }else if (state==1){//第1關,紅色
    background(255,0,0);
    
  }else if (state==2){//第1關,藍色
    background(0,0,255);
  }
}
void mousePressed(){
  if(state==0)state=1;
}

  

Step 1-5 鍵盤控制轉換場景 *

 int state = 0;
void setup(){
  size(400,400);
  textSize(50);
}
int x=50,y=50;
void draw(){
  if(state==0){//第0關
    background(255);
    fill(0);text("Click to Start",80,200);
  }else if (state==1){//第1關,紅色
    background(255,0,0);
    fill(255);rect(300,50,50,50);
    fill(128);rect(x,y,50,50);
    
  }else if (state==2){//第1關,藍色
    background(0,0,255);
  }
}
void mousePressed(){
  if(state==0)state=1;
}
void keyPressed(){鍵盤控制方塊 移到後轉場景
  if(state==1 && keyCode==RIGHT){
    x+= 10;
    if(x==300)state=2;
  }
}

Step 1-6 利用if倒計時轉換場景 *

int state = 0;
void setup(){
  size(400,400);
  textSize(50);
}
int x=50,y=50,t=100;
void draw(){
  if(state==0){//第0關
    background(255);
    fill(0);text("Click to Start",80,200);
    x=50;
  }else if (state==1){//第1關,紅色
    background(255,0,0);
    fill(255);rect(300,50,50,50);
    fill(128);rect(x,y,50,50);
    t=100;
  }else if (state==2){//第1關,藍色
    background(0,0,255);
    fill(255,255,0);text("Wait"+t,80,200);
    t--;
    if(t==0)state=0; 
  }
}
void mousePressed(){
  if(state==0)state=1;
}
void keyPressed(){
  if(state==1 && keyCode==RIGHT){
    x+= 10;
    if(x==300)state=2;
  }
}
  

  

Step 1-7 修正數字變負的問題

int state = 0;
void setup(){
  size(400,400);
  textSize(50);
}
int x=50,y=50,t=100;
void draw(){
  if(state==0){//第0關
    background(255);
    fill(0);text("Click to Start",80,200);
    x=50;
  }else if (state==1){//第1關,紅色
    background(255,0,0);
    fill(255);rect(300,50,50,50);
    fill(128);rect(x,y,50,50);
    t=100;
  }else if (state==2){//第1關,藍色
    background(0,0,255);
    fill(255,255,0);text("Wait"+t,80,200);
    t--;
    if(t==0)state=0;
  }
}
void mousePressed(){
  if(state==0)state=1;
}
void keyPressed(){
  if(state==1 && keyCode==RIGHT){
    x+= 10;
    if(x==300)state=2;
  }
}
    

Step 1-8 籃球架

PImage imgRack;
void setup(){
  size(300,300);
  imgRack=loadImage("rack.jpg");
}
void draw(){
  background(255);
  image(imgRack,0,0);
  if(mousePressed){
    fill(255);ellipse(posX,posY,20,20);
    line(posX,posY,mouseX,mouseY);
  }
  fill(#FFA652);ellipse(mouseX,mouseY,20,20);
}
float posX = -100,posY=-100;
void mousePressed(){
  posX = mouseX;
  posY= mouseY;
}

Step 1-9 籃球架 拋物線程式 

PImage imgRack;
void setup(){
  size(300,300);
  imgRack=loadImage("rack.png");
}
void draw(){
  background(255);
  image(imgRack,0,0);
  if(flying){
    x += vx;
    y += vy;
    vy += 0.98;
  }else{
    x=mouseX;
    y=mouseY;
  if(mousePressed){
    fill(255);ellipse(x,y,20,20);
    line(posX,posY,x,y);
    }
  }
  fill(#FFA652);ellipse(mouseX,mouseY,20,20);
}
boolean flying=false;
float x,y,vx,vy;
float posX = -100,posY=-100;
void mousePressed(){
  posX = mouseX;
  posY = mouseY;
}
void mouseReleased(){
  vx = posX-mouseX;
  vy = posY-mouseY;
  flying = true;
}

Step a 籃球架 拋物線程式 

PImage imgRack;
void setup(){
  size(1000,1000);
  imgRack=loadImage("rack.png");
}
boolean gameOver=false;  
void draw(){
  background(255);
  image(imgRack,200,200);
  if(flying){
    if(!gmaeOver){//if(!keyPressed){
    x += vx;
    y += vy;
    vy += 0.98;
    }
  }else{
    x=mouseX;
    y=mouseY;
  if(mousePressed){
    fill(255);ellipse(posX,posY,20,20);
    line(posX,posY,x,y);
    }
  }
  fill(#FFA652);ellipse(x,y,20,20);
}
boolean flying=false;
float x,y,vx,vy;
float posX = -100,posY=-100;
void mousePressed(){
  posX = mouseX;
  posY = mouseY;
}
void mouseReleased(){
  vx = posX-mouseX;
  vy = posY-mouseY;
  flying = true;
}

Step B 踩地雷程式


Step C 貪食蛇程式

 

沒有留言:

張貼留言