2022年9月19日 星期一

Week3_栗子的程式日記_好多好多地震

 Week 3

1.1先拿上週的程式碼,再來加上洗牌的程式!
程式碼:
void setup(){
 size(500,500); 
 PFont font = createFont("標楷體",40);
 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);
 //取整數0..12,所以再加1
}
void mousePressed(){
  myShuffle();
}
String face1,face2,face3,face4;
void draw(){
 drawPokerCard(100,100,face1); ///使用函式
 drawPokerCard(130,150,face2);
 drawPokerCard(160,200,face3);
 drawPokerCard(190,250,face4);
}///牌面:黑桃Spade Heart,Dimaind,Club
void drawPokerCard(int x, int y,String face){
  int W=25;
  fill(255);
  rect(x-W/2,y-W/2,150+W,250+W, 20);
  fill(#D064FF);
  rect(x,y,150,250,20); //弧度
  //fill(0);
  if(face.indexOf("黑桃") == -1 && face.indexOf("梅花") == -1 )fill(#FF0000);
  else fill(0);
  textSize(40);
  text(face,x,y+40);
}

1.2 做出格子
程式碼:
void setup(){
 size(600,600); 
}
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.1 在空牌的格子裡加入字
程式碼:
void setup(){
 size(600,600); 
 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);
 }
}

2.2 因為撲克牌不只有黑色,所以換成紅色
程式碼:
void setup(){
 size(600,600); 
 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);
   if(faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1) fill(0);   
            //如果讀的不是紅心跟方塊,填滿黑色
   else fill(255,0,0);
   text(faces[i],x+25,y+80);
 }
}

3.1 把一開始學的洗牌,加入新學的程式,按一下即可洗牌
程式碼:
void setup(){
 size(600,600); 
 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);
   if(faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1) fill(0);
   else fill(255,0,0);
   text(faces[i],x+25,y+80);
 }
}
void mousePressed(){
 int a=int(random(52));
 int b=int(random(52));
 String temp =faces[a];
 faces[a] = faces[b];
 faces[b]=temp;
}
3.2 因為一張一張換太慢了,直接拖曳洗牌!!
程式碼:
void setup(){
 size(600,600); 
 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);
   if(faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1) fill(0);
   else fill(255,0,0);
   text(faces[i],x+25,y+80);
 }
}
void mouseDragged(){
 int a=int(random(52));
 int b=int(random(52));
 String temp =faces[a];
 faces[a] = faces[b];
 faces[b]=temp;
}


3.3把今天新學的程式結合上禮拜學的,雖然看起來一樣,但是不同方式
程式碼:
void setup(){
 size(500,500); 
 PFont font = createFont("標楷體",40);
 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));
   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;
void draw(){
 drawPokerCard(100,100,face1); ///使用函式
 drawPokerCard(130,150,face2);
 drawPokerCard(160,200,face3);
 drawPokerCard(190,250,face4);
}///牌面:黑桃Spade Heart,Dimaind,Club
void drawPokerCard(int x, int y,String face){
  int W=25;
  fill(255);
  rect(x-W/2,y-W/2,150+W,250+W, 20);
  fill(#D064FF);
  rect(x,y,150,250,20); //弧度
  //fill(0);
  if(face.indexOf("黑桃") == -1 && face.indexOf("梅花") == -1 )fill(#FF0000);
  else fill(0);
  textSize(40);
  text(face,x,y+40);
}




沒有留言:

張貼留言