撲克牌、圍棋、象棋
52 Cards
利用for迴圈
以x軸每隔60單位、y軸每隔120單位畫一個60*120的長方形
```
void setup(){ size(600,720);}void draw(){ background(#FFFFF2); for(int i=0; i<52; i++){ int x= (i%10)*60; int y= int(i/10)*120; fill(#FFFFFF); rect(x, y, 60, 120); }
在每個矩形的左上角標上花色
**利用text()時要先創建字型**
```
void setup(){ size(600,720); 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; int y= int(i/10)*120; fill(#FFFFFF); rect(x, y, 60, 120);//白色卡片 fill(#000000); text(faces[i], x+2, y+10);//黑色文字 }}
```
for回圈內可以改寫為13*4
```
for(int i=0; i<52; i++){ int x= (i%13)*60; int y= int(i/13)*120; }
```
利用indexOf()改寫"紅心"與"方塊"的字體顏色
```
void setup(){ size(780,500); 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%13)*60; int y= int(i/13)*120; fill(#FFFFFF); rect(x, y, 60, 120);//白色卡片 if(faces[i].indexOf("黑桃")==-1 && faces[i].indexOf("梅花")==-1) fill(#FF0000); else fill(#000000); text(faces[i], x+2, y+10);//黑色文字 }}```
Shuffle 2.0
利用random()亂數選取兩張牌並交換
```
void setup(){ size(780,500); 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%13)*60; int y= int(i/13)*120; fill(#FFFFFF); rect(x, y, 60, 120);//白色卡片 if(faces[i].indexOf("黑桃")==-1 && faces[i].indexOf("梅花")==-1) fill(#FF0000); else fill(#000000); text(faces[i], x+2, y+10);//黑色文字 }}void mousePressed(){ ///滑鼠點擊事件 int a = int(random(52)); int b = int(random(52)); ///faces[a] 和 fases[b]交換 String temp = faces[a]; faces[a]=faces[b]; faces[b]=temp;}```
滑鼠拖曳事件mouseDragged()
將void mousePressed()改為mousDragged()
執行後拖曳滑鼠即可快速洗牌
void mouseDragged(){ ///滑鼠拖曳事件 int a = int(random(52)); int b = int(random(52)); ///faces[a] 和 fases[b]交換 String temp = faces[a]; faces[a]=faces[b]; faces[b]=temp;}
將新的洗牌程式改寫至上周的程式碼
```
void setup(){ size(500, 500); PFont font = createFont("微軟正黑體", 20); textFont(font); 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" };void Shuffle(){ for(int k=0; k<10000; k++){ //洗牌10000次 int a = int(random(52)); int b = int(random(52)); ///faces[a] 和 fases[b]交換 String temp = faces[a]; faces[a]=faces[b]; faces[b]=temp; } num1 = faces[0]; num2 = faces[1]; num3 = faces[2]; num4 = faces[3];}void mousePressed(){ Shuffle();}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); }
```
**需要宣告新的函式
直接將程式碼寫進滑鼠事件中
會因為宣告num(花色)時出現參數錯誤**
void setup(){
size(600,720);
}
void draw(){
background(#FFFFF2);
for(int i=0; i<52; i++){
int x= (i%10)*60;
int y= int(i/10)*120;
fill(#FFFFFF);
rect(x, y, 60, 120);
}
在每個矩形的左上角標上花色
**利用text()時要先創建字型**
```
void setup(){
size(600,720);
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;
int y= int(i/10)*120;
fill(#FFFFFF);
rect(x, y, 60, 120);//白色卡片
fill(#000000);
text(faces[i], x+2, y+10);//黑色文字
}
}
```
for回圈內可以改寫為13*4
```
```
for回圈內可以改寫為13*4
```
for(int i=0; i<52; i++){
int x= (i%13)*60;
int y= int(i/13)*120;
}
```
利用indexOf()改寫"紅心"與"方塊"的字體顏色
```
```
利用indexOf()改寫"紅心"與"方塊"的字體顏色
```
void setup(){
size(780,500);
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%13)*60;
int y= int(i/13)*120;
fill(#FFFFFF);
rect(x, y, 60, 120);//白色卡片
if(faces[i].indexOf("黑桃")==-1 && faces[i].indexOf("梅花")==-1) fill(#FF0000);
else fill(#000000);
text(faces[i], x+2, y+10);//黑色文字
}
}
```Shuffle 2.0
利用random()亂數選取兩張牌並交換
```
利用random()亂數選取兩張牌並交換
```
void setup(){
size(780,500);
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%13)*60;
int y= int(i/13)*120;
fill(#FFFFFF);
rect(x, y, 60, 120);//白色卡片
if(faces[i].indexOf("黑桃")==-1 && faces[i].indexOf("梅花")==-1) fill(#FF0000);
else fill(#000000);
text(faces[i], x+2, y+10);//黑色文字
}
}
void mousePressed(){ ///滑鼠點擊事件
int a = int(random(52));
int b = int(random(52));
///faces[a] 和 fases[b]交換
String temp = faces[a];
faces[a]=faces[b];
faces[b]=temp;
}
```滑鼠拖曳事件mouseDragged()
將void mousePressed()改為mousDragged()
執行後拖曳滑鼠即可快速洗牌
將void mousePressed()改為mousDragged()
執行後拖曳滑鼠即可快速洗牌
void mouseDragged(){ ///滑鼠拖曳事件
int a = int(random(52));
int b = int(random(52));
///faces[a] 和 fases[b]交換
String temp = faces[a];
faces[a]=faces[b];
faces[b]=temp;
}
將新的洗牌程式改寫至上周的程式碼
將新的洗牌程式改寫至上周的程式碼
```
void setup(){
void setup(){
size(500, 500);
PFont font = createFont("微軟正黑體", 20);
textFont(font);
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"
};
void Shuffle(){
for(int k=0; k<10000; k++){ //洗牌10000次
int a = int(random(52));
int b = int(random(52));
///faces[a] 和 fases[b]交換
String temp = faces[a];
faces[a]=faces[b];
faces[b]=temp;
}
num1 = faces[0];
num2 = faces[1];
num3 = faces[2];
num4 = faces[3];
}
void mousePressed(){
Shuffle();
}
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);
}
```
```
**需要宣告新的函式
直接將程式碼寫進滑鼠事件中
會因為宣告num(花色)時出現參數錯誤**
直接將程式碼寫進滑鼠事件中
會因為宣告num(花色)時出現參數錯誤**
沒有留言:
張貼留言