1、
(1)滑鼠點擊洗牌
將上週最後一個程式貼上,
加上滑鼠點擊就可洗牌的程式碼
程式碼:
void setup(){
size(500,500);
PFont font = createFont("微軟正黑體",40);
textFont(font);
myShuffle();///洗牌
}
void myShuffle(){
String[] flower ={"黑桃","紅心","方塊","梅花"};///要在軟體中讓字出現:偏好設定/程式編輯及主控台
face1=flower[int(random(4))]+int(random(13)+1);
face2=flower[int(random(4))]+int(random(13)+1);
face3=flower[int(random(4))]+int(random(13)+1);
face4=flower[int(random(4))]+int(random(13)+1);
}
void mousePressed(){///滑鼠點擊洗牌
myShuffle();
}
String face1,face2,face3,face4;
void draw(){
drawPokerCard(100,100,face1);
drawPokerCard(130,130,face2);
drawPokerCard(160,160,face3);
drawPokerCard(190,190,face4);
}
void drawPokerCard(int x,int y,String face){
int W=20;
fill(255);
rect(x-W/2,y-W/2,180+W,280+W,20);
fill(#BA90FF);
rect(x,y,180,280,20);
///fill(0);
if(face.indexOf("黑桃")==-1 && face.indexOf("梅花")==-1)fill(#FF0000);
else fill(0);
textSize(30);
text(face,x+10,y+30);
}
加上滑鼠點擊就可洗牌的程式碼
程式碼:
void setup(){
size(500,500);
PFont font = createFont("微軟正黑體",40);
textFont(font);
myShuffle();///洗牌
}
void myShuffle(){
String[] flower ={"黑桃","紅心","方塊","梅花"};///要在軟體中讓字出現:偏好設定/程式編輯及主控台
face1=flower[int(random(4))]+int(random(13)+1);
face2=flower[int(random(4))]+int(random(13)+1);
face3=flower[int(random(4))]+int(random(13)+1);
face4=flower[int(random(4))]+int(random(13)+1);
}
void mousePressed(){///滑鼠點擊洗牌
myShuffle();
}
String face1,face2,face3,face4;
void draw(){
drawPokerCard(100,100,face1);
drawPokerCard(130,130,face2);
drawPokerCard(160,160,face3);
drawPokerCard(190,190,face4);
}
void drawPokerCard(int x,int y,String face){
int W=20;
fill(255);
rect(x-W/2,y-W/2,180+W,280+W,20);
fill(#BA90FF);
rect(x,y,180,280,20);
///fill(0);
if(face.indexOf("黑桃")==-1 && face.indexOf("梅花")==-1)fill(#FF0000);
else fill(0);
textSize(30);
text(face,x+10,y+30);
}
(2)顯示所有撲克牌
因上面的程式碼洗牌時會有重複的牌,所以要改程式碼,
畫出撲克牌的52張牌
程式碼:
void setup(){
size(700,700);
}
void draw(){
background(#E9CBFF);
for(int i=0;i<52;i++){
int x = (i%10)*60;
int y = int(i/10)*120;
rect(x,y,60,120);
}
}
將空牌的牌面加上字
程式碼:
void setup(){
size(700,700);
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(#E9CBFF);
for(int i=0;i<52;i++){
int x = (i%10)*60;
int y = int(i/10)*120;
fill(255);rect(x,y,60,120);
fill(0); text(faces[i],x+25,y+80);
}
}
將所有撲克牌的花色及號碼打上,及更改顏色
程式碼:
void setup(){
size(700,700);
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(#E9CBFF);
for(int i=0;i<52;i++){
int x = (i%13)*60;
int y = int(i/13)*120;
fill(255);rect(x,y,60,120);
if(faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1)fill(0);///讀取,若字不是紅心或方塊的話,字為黑色
else fill(255,0,0);///其他為紅色
text(faces[i],x+10,y+60);
}
}
按下滑鼠後,將牌隨機排序
程式碼:
void setup(){
size(700,700);
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(#E9CBFF);
for(int i=0;i<52;i++){
int x = (i%13)*60;
int y = int(i/13)*120;
fill(255);rect(x,y,60,120);
if(faces[i].indexOf("紅心")==-1 && faces[i].indexOf("方塊")==-1)fill(0);
else fill(255,0,0);
text(faces[i],x+10,y+60);
}
}
void mousePressed(){
int a =int(random(52));///選一張隨機的a牌
int b =int(random(52));///選一張隨機的b牌
String temp=faces[a];
faces[a]=faces[b];
faces[b]=temp;///將a,b兩張牌交換
}
(3)成果
最後把新程式跟舊程式融合成可以洗牌的小遊戲
(綠色為舊程式,黃色為新程式)
程式碼:
void setup(){
size(500,500);
PFont font = createFont("微軟正黑體",40);
textFont(font);
myShuffle();
}
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 myShuffle(){
for(int k=0;k<10000;k++){
int a =int(random(52));
int b =int(random(52));
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();
}
String face1,face2,face3,face4;
void draw(){
drawPokerCard(100,100,face1);
drawPokerCard(130,130,face2);
drawPokerCard(160,160,face3);
drawPokerCard(190,190,face4);
}
void drawPokerCard(int x,int y,String face){
int W=20;
fill(255);
rect(x-W/2,y-W/2,180+W,280+W,20);
fill(#BA90FF);
rect(x,y,180,280,20);
if(face.indexOf("黑桃")==-1 && face.indexOf("梅花")==-1)fill(#FF0000);
else fill(0);
textSize(30);
text(face,x+10,y+30);
}
怎麼做出一個小遊戲,用互動程式設計的方式?






沒有留言:
張貼留言