2023年10月5日 星期四

chotwo_week04

 Week04


week04_1_uno_for_for_rect

 建置視窗大小和卡片 ▼


void setup(){
  size(400,400); 
}
int [][] card = new int[8][11]; //卡片數量
void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      rect(j*30, i*50, 32, 50); //卡片大小
    }
  }
} 

 

week04_2_uno_color_red_yellow_green_blue

陣列準備四個顏色 


用列數取顏色 


void setup(){
  size(400,400); 
}

int [][] card = new int[8][11]; //卡片數量
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      fill(C[i%4]); // 用列數取顏色
      rect(j*30, i*50, 32, 50); //卡片大小
    }
  }
}

 

week04_3_uno_better_card_func

 

做好牌的底色和外框 



void setup(){
  size(400,400); 
}
int [][] card = new int[8][11]; //卡片數量
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      drawCard(j*32, i*50, C[i%4]); 
    }
  } 
}
void drawCard(int x, int y, color c){
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32, 50, 7);
  noStroke();
  fill(c);
  rect(x+3, y+3, 32-5, 50-5, 4);
}

week04_4_uno_ellipse_translate_rotate

▼ 畫出每張牌傾斜的橢圓


void setup(){
  size(400,400); 
}

int [][] card = new int[8][11]; //卡片數量
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      drawCard(j*32, i*50, C[i%4]); 
    }
  } 
}
void drawCard(int x, int y, color c){
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32, 50, 7);
  noStroke();
  fill(c);
  rect(x+3, y+3, 32-5, 50-5, 4);
  pushMatrix();
  fill(255);
  translate(x+16,y+25);
  rotate(radians(45));
  ellipse(0,0,20,30);
  popMatrix();
}


week04_5_uno_ellipse_text_textSize

▼ 畫出置中且對應顏色的數字0~10、調整大小 



void setup(){
  size(400,400); 
}

int [][] card = new int[8][11]; //卡片數量
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      drawCard(j*32, i*50, C[i%4], j); 
    }
  } 
}
void drawCard(int x, int y, color c, int n){
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32, 50, 7);
  noStroke();
  fill(c);
  rect(x+3, y+3, 32-5, 50-5, 4);
  
  pushMatrix();
  fill(255);
  translate(x+16, y+25);
  rotate(radians(45)); //轉橢圓的角度
  ellipse(0, 0, 20, 30);
  popMatrix();
  
  textAlign(CENTER,CENTER);
  textSize(9);
  text( n, x+7, y+6); // n 根據j改變卡片號碼
  
  textSize(20);
  fill(c);
  text( n, x+16, y+22);
}

week04_6_uno_shuffle_wash_card

 ▼ 洗牌 






void setup(){
  size(400,400); 
  myShuffle();
}
void myShuffle(){
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      cardN[i*11+j] = j;
      cardC[i*11+j] = C[i%4];
    }
  }
  int a = int(random(88)), b =int(random(88));
  int temp = cardN[a];
  cardN[a] = cardN[b];
  cardN[b] = temp;
  temp = cardC[a];
  cardC[a] = cardC[b];
  cardC[b] = temp;  
}
//int [][] card = new int[8][11]; //卡片數量
int [] cardN = new int[88]; // card number
int [] cardC = new int[88]; // card color
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      //drawCard(j*32, i*50, C[i%4], j); 
      drawCard(j*32, i*50, cardC[i*11+j], cardN[i*11+j]); 
    }
  } 
}
void drawCard(int x, int y, color c, int n){
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32, 50, 7);
  noStroke();
  fill(c);
  rect(x+3, y+3, 32-5, 50-5, 4);
  
  pushMatrix();
  fill(255);
  translate(x+16, y+25);
  rotate(radians(45)); //轉橢圓的角度
  ellipse(0, 0, 20, 30);
  popMatrix();
  
  textAlign(CENTER,CENTER);
  textSize(9);
  text( n, x+7, y+6); // n 根據j改變卡片號碼
  
  textSize(20);
  fill(c);
  text( n, x+16, y+22);
}


week04_7_uno_shuffle_many_times


▼ 洗牌10000次

void setup(){
  size(400,400); 
  myShuffle();
}
void myShuffle(){
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      cardC[i*11+j] = C[i%4];
      cardN[i*11+j] = j;
    }
  }
  for(int i=0; i<10000; i++){
    int a = int(random(88)), b =int(random(88));
    int temp = cardN[a]; cardN[a] = cardN[b]; cardN[b] = temp;
    temp = cardC[a]; cardC[a] = cardC[b]; cardC[b] = temp;  
  }
}
//int [][] card = new int[8][11]; //卡片數量
int [] cardN = new int[88]; // card number
int [] cardC = new int[88]; // card color
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      //drawCard(j*32, i*50, C[i%4], j); 
      drawCard(j*32, i*50, cardC[i*11+j], cardN[i*11+j]); 
    }
  } 
}
void drawCard(int x, int y, color c, int n){
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32, 50, 7);
  noStroke();
  fill(c);
  rect(x+3, y+3, 32-5, 50-5, 4);
  
  pushMatrix();
  fill(255);
  translate(x+16, y+25);
  rotate(radians(45)); //轉橢圓的角度
  ellipse(0, 0, 20, 30);
  popMatrix();
  
  textAlign(CENTER,CENTER);
  textSize(9);
  text( n, x+7, y+6); // n 根據j改變卡片號碼
  
  textSize(20);
  fill(c);
  text( n, x+16, y+22);
}


week04_8_uno_big_card_interaction

 ▼ 把牌放大放右邊 

void setup(){
  size(800,400); 
  myShuffle();
}
void myShuffle(){
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      cardC[i*11+j] = C[i%4];
      cardN[i*11+j] = j;
    }
  }
  for(int i=0; i<10000; i++){
    int a = int(random(88)), b =int(random(88));
    int temp = cardN[a];
    cardN[a] = cardN[b];
    cardN[b] = temp;
    temp = cardC[a];
    cardC[a] = cardC[b];
    cardC[b] = temp;  
  }
}
//int [][] card = new int[8][11]; //卡片數量
int [] cardN = new int[88]; // card number
int [] cardC = new int[88]; // card color
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      //drawCard(j*32, i*50, C[i%4], j); 
      drawCard(j*32, i*50, cardC[i*11+j], cardN[i*11+j], 32); 
    }
  } 
  drawCard(450,50, cardC[7], cardN[77], 128);
}
void drawCard(int x, int y, color c, int n, int w){
  float s = w/32.0;  //Scale size 128/32
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32*s, 50*s, 7*s);
  noStroke();
  fill(c);
  rect(x+2.5*s, y+2.5*s, 32*s-5*s, 50*s-5*s, 4*s);
  
  pushMatrix();
  fill(255);
  translate(x+16*s, y+25*s);
  rotate(radians(45)); //轉橢圓的角度
  ellipse(0, 0, 20*s, 30*s);
  popMatrix();
  
  textAlign(CENTER,CENTER);
  textSize(9*s);
  text(""+n, x+7*s, y+6*s); // n 根據j改變卡片號碼
  
  textSize(20*s);
  fill(c);
  text(""+n, x+16*s, y+22*s);
}


week04_9_uno_pool_get_card_interaction

 ▼ 右鍵偷看牌堆,左鍵抽牌



void setup(){
  size(800,400); 
  myShuffle();
}
void myShuffle(){
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      cardC[i*11+j] = C[i%4];
      cardN[i*11+j] = j;
    }
  }
  for(int i=0; i<10000; i++){
    int a = int(random(88)), b =int(random(88));
    int temp = cardN[a];
    cardN[a] = cardN[b];
    cardN[b] = temp;
    temp = cardC[a];
    cardC[a] = cardC[b];
    cardC[b] = temp;  
  }
}
//int [][] card = new int[8][11]; //卡片數量
int [] cardN = new int[88]; // card number
int [] cardC = new int[88]; // card color
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色

void draw(){
  background(255);
  if(mousePressed && mouseButton==RIGHT){ // cheat key, peek all
    for(int i=0; i<8; i++){
      for(int j=0; j<11; j++){//drawCard(j*32, i*50, C[i%4], j); 
        drawCard(j*32, i*50, cardC[i*11+j], cardN[i*11+j], 32); 
      }
    } 
  }else drawCard(50, 50, #000000, 99, 128); // get card here
  
  for(int i=0; i<myCard; i++){
    drawCard(430+40*i, 50, cardC[i], cardN[i], 128);
  }
}
int myCard = 0;
void mousePressed(){
  if(mouseButton==LEFT) myCard++;
}
void drawCard(int x, int y, color c, int n, int w){
  float s = w/32.0;  //Scale size 128/32
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32*s, 50*s, 7*s);
  noStroke();
  fill(c);
  rect(x+2.5*s, y+2.5*s, 32*s-5*s, 50*s-5*s, 4*s);
  
  pushMatrix();
  fill(255);
  translate(x+16*s, y+25*s);
  rotate(radians(45)); //轉橢圓的角度
  ellipse(0, 0, 20*s, 30*s);
  popMatrix();
  
  textAlign(CENTER,CENTER);
  textSize(9*s);
  text(""+n, x+7*s, y+6*s); // n 根據j改變卡片號碼
  
  textSize(20*s);
  fill(c);
  text(""+n, x+16*s, y+22*s);
}

week04_A_uno_pool_spread_4_people


▼ 左鍵順時針發牌給四個人


void setup(){
  size(850,850);
  myShuffle();
}
void myShuffle(){
  for(int i=0; i<8; i++){
    for(int j=0; j<11; j++){
      cardC[i*11+j] = C[i%4];
      cardN[i*11+j] = j;
    }
  }
  for(int i=0; i<10000; i++){
    int a = int(random(88)), b =int(random(88));
    int temp = cardN[a];
    cardN[a] = cardN[b];
    cardN[b] = temp;
    temp = cardC[a];
    cardC[a] = cardC[b];
    cardC[b] = temp;  
  }
}
//int [][] card = new int[8][11]; //卡片數量
int [] cardN = new int[88]; // card number
int [] cardC = new int[88]; // card color
color [] C = {#FF5555, #FFAA00, #55AA55, #5555FF}; //陣列準備四個顏色 void draw(){
  background(255);
  if(mousePressed && mouseButton==RIGHT){ // cheat key, peek all
    for(int i=0; i<8; i++){
      for(int j=0; j<11; j++){//drawCard(j*32, i*50, C[i%4], j);
        drawCard(j*32, i*50, cardC[i*11+j], cardN[i*11+j], 32); 
      }
    } 
  }else drawCard(50, 50, #000000, 99, 128); // get card here
  
  for(int i=0; i<myCard; i++){
    if(i%4==0)drawCard(430 +40*i/4, 50, cardC[i], cardN[i], 128);
    if(i%4==1)drawCard(630 +40*i/4, 350, cardC[i], cardN[i], 128);
    if(i%4==2)drawCard(430 +40*i/4, 650, cardC[i], cardN[i], 128);
    if(i%4==3)drawCard(230 +40*i/4, 350, cardC[i], cardN[i], 128);

  }
}
int myCard = 0;
void mousePressed(){
  if(mouseButton==LEFT) myCard++;
}
void drawCard(int x, int y, color c, int n, int w){
  float s = w/32.0; //Scale size 128/32
  stroke(128); //gray stroke 灰邊框
  fill(255); //白背景
  rect(x, y, 32*s, 50*s, 7*s);
  noStroke();
  fill(c);
  rect(x+2.5*s, y+2.5*s, 32*s-5*s, 50*s-5*s, 4*s);
  
  pushMatrix();
  fill(255);
  translate(x+16*s, y+25*s);
  rotate(radians(45)); //轉橢圓的角度
  ellipse(0, 0, 20*s, 30*s);
  popMatrix();
  
  textAlign(CENTER,CENTER);
  textSize(9*s);
  text(""+n, x+7*s, y+6*s); // n 根據j改變卡片號碼
  
  textSize(20*s);
  fill(c);
  text(""+n, x+16*s, y+22*s);
}


 





沒有留言:

張貼留言