2022年9月19日 星期一

互動week03

0. Shuffle亂數洗牌(牌會出現一樣)複習

void setup(){
  size(500,500);
  PFont font = createFont("標楷體", 35);
  textFont(font);
  myShuffle();
}
void myShuffle(){
  String [] flower = {"黑桃","紅心","方塊","梅花"};//陣列
  face1 = flower[int(random(4))] + int(random(13)+1);
  face2 = flower[int(random(4))] + int(random(13)+1);
  face3 = flower[int(random(4))] + int(random(13)+1);
  face4 = flower[int(random(4))] + int(random(13)+1);
}
void mousePressed(){
  myShuffle();
}
String face1, face2, face3, face4;
int W=25;
void draw(){
  drawPokerCard(100,100, face1);//使用函式
  drawPokerCard(130,150, face2);//使用函式
  drawPokerCard(160,210, face3);//使用函式
  drawPokerCard(190,260, face4);//使用函式
}/////牌面:Spade, Heart, Dimand, Club

void drawPokerCard(int x, int y, String face){
  fill(255);
  rect(x-W/2,y-W/2, 150+W, 250+W, 20);//弧度
  fill(#EFFA5B);
  rect(x,y, 150, 250, 20);//弧度
  fill(0);//黑色的字
  if( face.indexOf("黑桃") == -1 && face.indexOf("梅花") == -1 ) fill(#FF0000);
  textSize(35);
  text(face, x, y+35);
}

滑鼠點擊換牌(出現一樣)


1. 52張牌

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

void draw(){
  background(#FFFFF2);
  for(int i=0; i<52; i++){ //迴圈
    int x = (i%10)*60; //除法10餘數, 個位數
    int y = int(i/10)*120; //十位數
    rect( x, y, 60,120 );
  }
}



2. 牌面出現中文

void setup(){
  size(700,700);
  PFont font = createFont("標楷體", 10);
  textFont(font);
}
String [] faces = {
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K",
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K",
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K",
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K" };

void draw(){
  background(#FFFFF2);
  for(int i=0; i<52; i++){ //迴圈
    int x = (i%10)*60; //除法10餘數, 個位數
    int y = int(i/10)*120; //十位數
    fill(255); rect( x, y, 60,120 );
    fill(0); text( faces[i], x+25, y+80);//text("ID:"+i, x+25, y+80);
  }
}  

3. 優化卡面

void setup(){
  size(800,600);
  PFont font = createFont("標楷體", 16);
  textFont(font);
}
String [] faces = {
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K",
  "紅心A","紅心2","紅心3","紅心4","紅心5","紅心6","紅心7","紅心8","紅心9","紅心10","紅心J","紅心Q","紅心K",
  "方塊A","方塊2","方塊3","方塊4","方塊5","方塊6","方塊7","方塊8","方塊9","方塊10","方塊J","方塊Q","方塊K",
  "梅花A","梅花2","梅花3","梅花4","梅花5","梅花6","梅花7","梅花8","梅花9","梅花10","梅花J","梅花Q","梅花K" };

void draw(){
  background(#FFFFF2);
  for(int i=0; i<52; i++){ //迴圈
    int x = (i%13)*60; //除法10餘數, 個位數
    int y = int(i/13)*120; //十位數
    fill(255); rect( x, y, 60,120 );
    if( faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1) fill(0);
    else fill(255,0,0);
    text( faces[i], x+10, y+60);//text("ID:"+i, x+25, y+80);
  }
}  


4. 52張牌中點擊2張牌隨機換位

void setup(){
  size(800,600);
  PFont font = createFont("標楷體", 16);
  textFont(font);
}
String [] faces = {
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K",
  "紅心A","紅心2","紅心3","紅心4","紅心5","紅心6","紅心7","紅心8","紅心9","紅心10","紅心J","紅心Q","紅心K",
  "方塊A","方塊2","方塊3","方塊4","方塊5","方塊6","方塊7","方塊8","方塊9","方塊10","方塊J","方塊Q","方塊K",
  "梅花A","梅花2","梅花3","梅花4","梅花5","梅花6","梅花7","梅花8","梅花9","梅花10","梅花J","梅花Q","梅花K" };

void draw(){
  background(#FFFFF2);
  for(int i=0; i<52; i++){ //迴圈
    int x = (i%13)*60; //除法10餘數, 個位數
    int y = int(i/13)*120; //十位數
    fill(255); rect( x, y, 60,120 );
    if( faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1) fill(0);
    else fill(255,0,0);
    text( faces[i], x+10, y+60);//text("ID:"+i, x+25, y+80);
  }
}  
void mousePressed(){
  int a = int(random(52));
  int b = int(random(52));
  //目標: faces[a] vs. faces[b] 交換
  String temp = faces[a];
  faces[a] = faces[b];
  faces[b] = temp;
}  

5. 洗牌且4張牌不會一樣(0+4結合)

void setup(){
  size(500,500);
  PFont font = createFont("標楷體", 35);
  textFont(font);
  myShuffle();
}
String [] faces = {
  "黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K",
  "紅心A","紅心2","紅心3","紅心4","紅心5","紅心6","紅心7","紅心8","紅心9","紅心10","紅心J","紅心Q","紅心K",
  "方塊A","方塊2","方塊3","方塊4","方塊5","方塊6","方塊7","方塊8","方塊9","方塊10","方塊J","方塊Q","方塊K",
  "梅花A","梅花2","梅花3","梅花4","梅花5","梅花6","梅花7","梅花8","梅花9","梅花10","梅花J","梅花Q","梅花K" };
void myShuffle(){
 for(int k=0; k<10000; k++){
   int a = int(random(52));
    int b = int(random(52));
    //目標: faces[a] vs. faces[b] 交換
    String temp = faces[a];
    faces[a] = faces[b];
    faces[b] = temp;
  }
  face1 = faces[0];
  face2 = faces[1];
  face3 = faces[2];
  face4 = faces[3];
}
void mousePressed(){
  myShuffle();
}
String face1, face2, face3, face4;
int W=25;
void draw(){
  drawPokerCard(100,100, face1);//使用函式
  drawPokerCard(130,150, face2);//使用函式
  drawPokerCard(160,210, face3);//使用函式
  drawPokerCard(190,260, face4);//使用函式
}/////牌面:Spade, Heart, Dimand, Club

void drawPokerCard(int x, int y, String face){
  fill(255);
  rect(x-W/2,y-W/2, 150+W, 250+W, 20);//弧度
  fill(#EFFA5B);
  rect(x,y, 150, 250, 20);//弧度
  fill(0);//黑色的字
  if( face.indexOf("黑桃") == -1 && face.indexOf("梅花") == -1 ) fill(#FF0000);
  textSize(35);
  text(face, x, y+35);

}
















沒有留言:

張貼留言