2022年9月12日 星期一

晚安

互動程式  Week02

卡牌遊戲

矩形弧度
```
size(500, 500);
rect(100,100,  150,250,  10);  //最後一個參數是弧度
```
添加外框

在矩形外邊加上框線,製作卡片
```
size(500, 500);
background(#9F9F9F);
int w=25;
rect(100-w/2, 100-w/2,  150+w, 250+w, 10);
fill(#659F7A);
rect(100,100,150,250,10);
```

互動程式
使程式可以一次在不同位置畫出多張卡片
```
void setup(){
  size(500, 500);
  }
int w=25;
void draw(){
  drawCard(100, 100);
  drawCard(130, 130);
  drawCard(160, 160);  //座標參數, 函式呼叫
}
void drawCard(int x, int y){  //宣告x, y變數取代座標
  fill(#FFFFFF);
  rect(x-w/2, y-w/2,  150+w, 250+w, 10);
  fill(#659F7A);
  rect(x,y,150,250,10); 
}
```





在左上角加上文字

在座標x+5, y+20位置加上文字(模仿撲克牌)
```
void setup(){
  size(500, 500);
  }
int w=25;
void draw(){
  drawCard(100, 100, "A1");
  drawCard(130, 150, "B2");
  drawCard(160, 180, "C3");
  drawCard(190, 210, "D4");
}
void drawCard(int x, int y, String num){ //宣告字串
  fill(#FFFFFF);
  rect(x-w/2, y-w/2,  150+w, 250+w, 10);
  fill(#659F7A);
  rect(x,y,150,250,10); 
  fill(#000000);  //文字顏色
  textSize(20);  //文字大小
  text(num, x+5, y+20);  //文字座標
}
```

















設定字形

```
void setup(){
  size(500, 500);
  PFont font = createFont("微軟正黑體", 20);  //宣告變數
  textFont(font);  //設定字形
  }
int w=25;
void draw(){
  drawCard(100, 120, "黑桃1");
  drawCard(130, 150, "紅心2");
  drawCard(160, 180, "方塊3");
  drawCard(190, 210, "梅花4");
}
void drawCard(int x, int y, String num){
  fill(#FFFFFF);
  rect(x-w/2, y-w/2,  150+w, 250+w, 10);
  fill(#659F7A);
  rect(x,y,150,250,10); 
  fill(#000000);
  textSize(20);
  text(num, x+5, y+20);  
}
```
















改變字體顏色

字串變數.indexOF():在字串中尋找
```
void setup(){
  size(500, 500);
  PFont font = createFont("微軟正黑體", 20);
  textFont(font);
  }
int w=25;
void draw(){
  drawCard(100, 120, "黑桃A");
  drawCard(130, 150, "紅心2");
  drawCard(160, 180, "方塊3");
  drawCard(190, 210, "梅花4");
}
void drawCard(int x, int y, String num){
  fill(#FFFFFF);
  rect(x-w/2, y-w/2,  150+w, 250+w, 10);
  fill(#659F7A);
  rect(x,y,150,250,10);
  if(num.indexOf("黑桃")==-1 && num.indexOf("梅花")==-1) fill(#FF0000); //找不到"黑桃","梅花"字串時,將字體設定為紅色  //-1錯誤,找不到
  else fill(#000000);  //否則設定為黑色
  textSize(20);
  text(num, x+5, y+20);  
}
```
















洗牌Shuffle
宣告字串陣列Stirng[]輸入花色
再用random()函式隨機選取花色和數字

```
void setup(){
  size(500, 500);
  PFont font = createFont("微軟正黑體", 20);
  textFont(font);
  String [] flower ={"黑桃", "紅心", "方塊", "梅花"};    //字串陣列
  num1 =flower[int(random(4))]+int(random(13)+1);  
  num2 =flower[int(random(4))]+int(random(13)+1);
  num3 =flower[int(random(4))]+int(random(13)+1);
  num4 =flower[int(random(4))]+int(random(13)+1);    //宣告變數,四張卡片隨機選擇花色與數字
 }
int w=25;
String num1, num2, num3, num4;
void draw(){
  drawCard(100, 120, num1);
  drawCard(130, 150, num2);
  drawCard(160, 180, num3);
  drawCard(190, 210, num4);    //參數改為宣告的變數
}
void drawCard(int x, int y, String num){
  fill(#FFFFFF);
  rect(x-w/2, y-w/2,  150+w, 250+w, 10);
  fill(#659F7A);
  rect(x,y,150,250,10);
  if(num.indexOf("黑桃")==-1 && num.indexOf("梅花")==-1) fill(#FF0000);
  else fill(#000000);
  textSize(20);
  text(num, x+5, y+20);  
}
```



點擊重新抽取
利用mousePressed()滑鼠事件重新亂數抽取花色與數字
```
void setup(){
  size(500, 500);
  PFont font = createFont("微軟正黑體", 20);
  textFont(font);
  String [] flower ={"黑桃", "紅心", "方塊", "梅花"};
  num1 =flower[int(random(4))]+int(random(13)+1);
  num2 =flower[int(random(4))]+int(random(13)+1);
  num3 =flower[int(random(4))]+int(random(13)+1);
  num4 =flower[int(random(4))]+int(random(13)+1);
 }
void mousePressed(){
  String [] flower ={"黑桃", "紅心", "方塊", "梅花"};
  num1 =flower[int(random(4))]+int(random(13)+1);
  num2 =flower[int(random(4))]+int(random(13)+1);
  num3 =flower[int(random(4))]+int(random(13)+1);
  num4 =flower[int(random(4))]+int(random(13)+1);
}
int w=25;
String num1, num2, num3, num4;
void draw(){
  drawCard(100, 120, num1);
  drawCard(130, 150, num2);
  drawCard(160, 180, num3);
  drawCard(190, 210, num4);
}
void drawCard(int x, int y, String num){
  fill(#FFFFFF);
  rect(x-w/2, y-w/2,  150+w, 250+w, 10);
  fill(#659F7A);
  rect(x,y,150,250,10);
  if(num.indexOf("黑桃")==-1 && num.indexOf("梅花")==-1) fill(#FF0000);
  else fill(#000000);
  textSize(20);
  text(num, x+5, y+20);  
}
```

沒有留言:

張貼留言