2023年11月23日 星期四

week11 我好爛

WEEK11


Step01

想要使用Processing做出座位表



做出表格


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





把每個表格變成數字


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(#F5B4B4);rect(j*100,i*100,100,100);
      fill(0); text(value[i][j],j*100+25,i*100+50);
    }
  }
}





讓每個數字做交換

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<1000;k++){
int i=int(random(4)),j=int(random(6));
int i2=int(random(4)),j2=int(random(6));
int temp =value[i][j];
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(#F5B4B4);rect(j*100,i*100,100,100);
      fill(0); text(value[i][j],j*100+25,i*100+50);
    }
  }
}



Step02


很多關卡,點一下進入遊戲

int state=0; //0:white, 1:red,2;blue
void setup()
{
  size(400,400);
  textSize(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){
    background(0,0,255);//第2關,藍色
  }
}
void mousePressed(){
  if(state==0) state=1;
}







進入關卡,有兩個方塊,把左邊的方塊推到右邊就進入第二關卡

int state=0; //0:white, 1:red,2;blue
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){
    background(0,0,255);//第2關,藍色
  }
}
void mousePressed(){
  if(state==0) state=1;
}
void keyPressed(){
  if(state==1&&keyCode==RIGHT){
    x+=10;
    if(x==300)state=2;
  }
}





第二關倒數100,回到開始畫面,如此重複...



int state=0; //0:white, 1:red,2;blue
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){
    background(0,0,255);//第2關,藍色
  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;
  }
}







Step03


做出投籃機拋物線


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; }









埋地雷


int[][]mine =new int[9][9];
void setup(){
  size(450,450);
  for(int i=0;i<9;i++) mine[i][0]=9;
  for(int k=0;k<1000;k++){
    int i = int(random(9)),j=int (random(9));
    int i2 = int(random(9)),j2=int (random(9));
    int temp=mine[i][j];
    mine[i][j]=mine[i2][j2];
    mine[i2][j2]=temp;
  }
  for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
      if(mine[i][j]==9){
        addNumber(i-1,j-1);
        addNumber(i-1,j);
        addNumber(i-1,j+1);
        addNumber(i,j-1);
        //addNumber(i,j);
        addNumber(i,j+1);
        addNumber(i+1,j-1);
        addNumber(i+1,j);
        addNumber(i+1,j+1);
      }
    }
  }
}
void addNumber(int i,int j){
  if(i<0||j<0||i>=9||j>=9) return;
  if(mine[i][j]!=9) mine[i][j]++;
}
void draw(){
  for(int i=0;i<9;i++){//y
    for(int j=0;j<9;j++){//x
    if(mine[i][j]==9) fill(255,128,128);
      else fill(255);
      rect(j*50,i*50,45,45);
     if(mine[i][j]!=0){
      fill(0); text(""+mine[i][j],j*50+23,i*50+23,45,45);
    }
  }
}
}





360度貪食蛇

void setup(){
  size(600,400);
}
float x=300,y=200,dir=0;
void draw(){
  //background(0);
  joker(x,y,dir);
  x+=cos(dir);
  y+=sin(dir);
}
void joker(float x, float y,float dir){
  ellipse(x,y,50,50);
  line(x,y,x+25*cos(dir),y+25*sin(dir));
}
void keyPressed(){
  if(keyCode==RIGHT) dir +=0.1;
  if(keyCode==LEFT) dir -=0.1;
}
















































 

沒有留言:

張貼留言