2022年9月19日 星期一

YJ week03

 先複製上週的程式碼,

上週最後成品為開始執行程式時可以換一組牌組

這週改成滑鼠按一下洗一次牌,換一個牌組


但這個程式碼有bug,就是會有重複的牌

所以先做另外一個程式碼

畫格子


格子上面顯示出牌的字樣


將黑桃、紅心、方塊、梅花的字樣放上去,並將紅心和方塊的字改成紅色


按下滑鼠右鍵可隨機對換牌的位置



將以上的程式碼帶入到第一個的程式碼中,就可以得到不會重複的隨機牌組了~



void setup(){
  size(500,500); 
  PFont font = createFont("標楷體",40);
  textFont(font);
  myShuffle();
}//洗牌英文 Shuffle
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"
};
String face1,face2,face3,face4;
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();
}
void draw(){
  drawPokerCard(100,100,face1);//使用函式
  drawPokerCard(130,150,face2);
  drawPokerCard(160,200,face3);
  drawPokerCard(190,250,face4);
}
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(#9ACBEA);
  rect(x,y,150,250,20);//弧度
  if(face.indexOf ("黑桃")==-1 && face.indexOf("梅花")==-1)fill(#FF0000);
  else fill(0);
  textSize(40);
  text(face,x,y+40);
}



* 小工具

使用Notepad++將所有黑桃字樣換成紅心
選取文字中"黑桃"的字樣,按搜尋中的取代


取代文字打紅心,再按取代全部

就可以換掉了喔~















沒有留言:

張貼留言