先複製上週的程式碼,
上週最後成品為開始執行程式時可以換一組牌組
這週改成滑鼠按一下洗一次牌,換一個牌組
但這個程式碼有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++將所有黑桃字樣換成紅心
選取文字中"黑桃"的字樣,按搜尋中的取代
取代文字打紅心,再按取代全部
就可以換掉了喔~








沒有留言:
張貼留言