2023年11月23日 星期四

91 week11

第十一週:

week11-1+week11-2:

    step01:視窗大小設定600*500,背景設定白色,畫出點名表的格線:


   step02:更改表格顏色為粉紅色,並加上Hello的字樣:

    step03:左手右手隨機亂數生成:

    


程式碼:

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++){//左手i
    for(int j=0;j<6;j++){//右手j
      fill(#F5B4B4);rect(j*100,i*100,100,100);
      fill(0); text(value[i][j],j*100+25,i*100+50);
    }
  }
}

week11-3:

    step01:給他一個初始值,從十開始數字不重複,左手i、右手j做交換

   step02:每次挑兩個數做交換,k<2可以修改數值



程式碼:

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;
  }
}
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[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++){//左手i
    for(int j=0;j<6;j++){//右手j
      fill(#F5B4B4);rect(j*100,i*100,100,100);
      fill(0); text(value[i][j],j*100+25,i*100+50);
    }
  }
}

week11-4:

    step01:設定三個狀態state,第0關白色,第1關紅色,第2關藍色,目前只有白色背景



   step02:增加跳關按鍵,設定視窗中間位置,mousepressed給滑鼠觸發功能


程式碼:

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

week11-5:

    step01:右上角新增白色方塊,左上角黑色方塊

   step02:加上黑色方塊移動功能,如果按下右方向鍵,可以移動

   step03:當移動到白色方塊上面,跳到下一個狀態,藍色的關卡





程式碼:

int state=0;
void setup(){
  size(400,400);
  textSize(50);
}
int x=50,y=50;
void draw(){
  if(state==0){//白色
    background(255);
    fill(0); text("Click to Start",80,200);
  }else if(state==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);
  }
}
void mousePressed(){
  if(state==0) state=1;
}
void keyPressed(){
  if(state==1&&keyCode==RIGHT){
    x+=10;
    if(x==300) state=2;
  }
}

week11-6:

    step01:在藍色狀態倒數十秒鐘。

   step02:當滑鼠按下state數值,可以做循環


程式碼:

int state=0; void setup(){   size(400,400);   textSize(50); } int x=50,y=50,t=100; void draw(){   if(state==0){//白色     background(255);     fill(0); text("Click to Start",80,200);     x=50;   }else if(state==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);     fill(255,255,0); text("Wait "+t,80,200);     t--;     if(t==0) state=1;   } } void mousePressed(){   if(state==0) state=1; } void keyPressed(){   if(state==1&&keyCode==RIGHT){     x+=10;     if(x==300) state=2;   } }

week11-7:

    step01:投籃機射擊曲線,做出籃框。

   step02:做出籃球加上顏色

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

week11-8:

    step01:如果滑鼠放開,增加在飛行中跟沒有飛行的程式碼。

   step02:按下滑鼠不飛行,放開飛行

   step03:把posX posY去掉,換成x,y軸,再增加GameOver的功能,按下任意鍵固定球。


程式碼:

PImage imgRack;
void setup(){
  size(300,300);
  imgRack=loadImage("rack.jpg");
}
boolean gameOver=false;
void keyPressed(){
  gameOver=true;
}
void draw(){
  background(255);
  image(imgRack,0,0);
  if(flying){
    if(!gameOver){
    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(){
   x=posX=mouseX;
   y=posY=mouseY;
   flying=false;
}
void mouseReleased(){
  vx=posX-mouseX;
  vy=posY-mouseY;
  flying=true;
}

week11-A:

   踩地雷遊戲






程式碼:

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-1,j);
            addNumber(i,j+1);
            addNumber(i+1,j-1);
            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++)
   {
      for(int j=0;j<9;j++)
      {
         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) ;
         }
      }
   }
}
貪食蛇:

程式碼:
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;
}











沒有留言:

張貼留言