2023年11月23日 星期四

mei's week11

 week11

第一個程式和第二個程式

先劃出格子並在裡面放入隨機數字
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<2; k++){
    int i = int(random(4)), j = int(random(6));
    int i2 = int(random(4)), j2 = int(random(6));
    int tmp = value[i][j];
    value[i][j] = value[i2][j2];
    value[i2][j2] = tmp;
  }
}
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);
    }
  }
}

第四個程式

讓每一關都不一樣

int state = 0;
void setup(){
  size(400,400);
}
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==2){
    background(0,0,255);
  }
}
void mousePressed(){
  if(state==0) state=1;
}

第五個程式

需要用鍵盤 移動方塊至指定位置 即通關

int state = 0;
void setup(){
  size(400,400);
}
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){//第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;
  }
}

第六個程式和第七個程式

到藍色畫面後等待一段時間後回到第0關重新開始
int state = 0;
void setup(){
  size(400,400);
}
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){//第2關 藍
    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;
  }
}

第8個程式投籃遊戲

PImage imgRack;
void setup(){
  size(300,300);
  imgRack = loadImage("rack.png");
}
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;
}

第9個程式投籃遊戲球會飛出去

PImage imgRack;
void setup(){
  size(300,300);
  imgRack = loadImage("rack.png");
}
void draw(){
  background(255);
  image(imgRack,0,0);
  if(flying){
      fill(#FFA652); ellipse(x,y,20,20);
      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;
}

第10個程式籃球停止

PImage imgRack;
void setup(){
  size(300,300);
  imgRack = loadImage("rack.png");
}
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;
}

第11個程式踩地雷

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){//遇到紅色地雷,附近要+1
        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++){
    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);  
      }
    }
  }
}


















第12個程式


沒有留言:

張貼留言