互動程式 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);
}
```
.png)
.png)
.png)
.png)
.png)
.png)
沒有留言:
張貼留言