week12期末作業
原本想要做踩地雷或貪食蛇遊戲,但班上已經有人選了這些主題就放棄了,但想了很久但都想不到要做什麼遊戲,最後小葉老師說直覺想到的第一個最對了,而當時我腦中只浮現了接龍遊戲,就這樣決定了我的作業主題是接龍,希望自己做的出來。
畫牌
參考week04教UNO時的程式,先畫出放52張撲克牌的格子
void setup(){ size(1500,900); } int [][] card = new int[4][13]; color [] C = {#000000,#FF0000,#000000,#FF0000}; void draw(){ background(255); for(int i=0;i<4;i++){ for(int j=0;j<13;j++){ drawCard(j*83, i*109 , C[i%4]); } } } void drawCard(int x,int y,color c){ stroke(128);//gray stroke fill(255); rect(x,y,83,109,10); } 先簡單加上數字及分辨顏色void setup(){ size(1500,900); } int [][] card = new int[4][13]; color [] C = {#000000,#FF0000,#FF0000,#000000}; void draw(){ background(255); for(int i=0;i<4;i++){ for(int j=0;j<13;j++){ drawCard(j*83, i*109 , C[i%4],j); } } } void drawCard(int x,int y,color c,int n){ stroke(128);//gray stroke fill(255); rect(x,y,83,109,10); textSize(20); fill(c); text(n+1,x+10,y+20); } 1、11、12、13換成A、J、Q、Kvoid setup(){ size(1500,900); } int [][] card = new int[4][13]; color [] C = {#000000,#FF0000,#00FF00,#0000FF};//為方便觀看換成四種顏色 void draw(){ background(255); for(int i=0;i<4;i++){ for(int j=1;j<=13;j++){ drawCard(j*83, i*109 , C[i%4],j); } } } void drawCard(int x,int y,color c,int n){ stroke(128);//gray stroke fill(255); rect(x,y,83,109,10); textSize(20); fill(c); String rank = getRank(n); text(rank,x+8,y+20); } String getRank(int n){ if(n == 1){ return "A";} else if(n == 11){return "J";} else if(n == 12){return "Q";} else if(n == 13){return "K";} else{return Integer.toString(n); } } 牌的右下角畫出上下顛倒的數字/字母void setup(){ size(1500,900); } int [][] card = new int[4][13]; color [] C = {#000000,#FF0000,#00FF00,#0000FF}; void draw(){ background(255); for(int i=0;i<4;i++){ for(int j=1;j<=13;j++){ drawCard(j*83, i*109 , C[i%4],j); } } } void drawCard(int x,int y,color c,int n){ stroke(128);//gray stroke fill(255); rect(x,y,83,109,10); textSize(20); fill(c); String rank = getRank(n); text(rank,x+8,y+20); pushMatrix(); // 保存當前的變換矩陣 translate(x+75, y+90); // 將座標系移動到撲克牌的右下角 rotate(radians(180)); // 逆時針旋轉180度 text(rank,0,0); // 繪製下顛倒的字母或數字 popMatrix(); // 恢復原來的變換矩陣 } String getRank(int n){ if(n == 1){ return "A";} else if(n == 11){return "J";} else if(n == 12){return "Q";} else if(n == 13){return "K";} else{return Integer.toString(n);} }參考week04的UNO洗牌程式
void setup(){ size(1500,900); myshuffle(); } void myshuffle(){ for(int i=0;i<4;i++){ for(int j=1;j<=13;j++){ cardN[i*13+j] = j; cardC[i*13+j] = C[i%4]; } } for(int i=0;i<100;i++){ //洗牌100次 int a = int(random(1,53)), b = int(random(1,53)); int temp = cardN[a]; //交換card cardN[a] = cardN[b]; cardN[b] = temp; temp = cardC[a]; cardC[a] = cardC[b]; cardC[b] = temp; } } //int [][] card = new int[4][13]; int [] cardN = new int[53]; //card number int [] cardC = new int[53];//card color color [] C = {#000000,#FF0000,#00FF00,#0000FF}; void draw(){ background(255); for(int i=0;i<4;i++){ for(int j=1;j<=13;j++){//牌從1開始 //drawCard(j*83, i*109 , cardC[i%4], j); drawCard(j*83,i*109,cardC[i*13+j],cardN[i*13+j]); } } } void drawCard(int x,int y,color c,int n){ stroke(128);//gray stroke fill(255); rect(x,y,83,109,10); textSize(20); fill(c); String rank = getRank(n); text(rank,x+8,y+20); pushMatrix(); // 保存當前的變換矩陣 translate(x+75, y+90); // 將座標系移動到撲克牌的右下角 rotate(radians(180)); // 逆時針旋轉180度 text(rank,0,0); // 繪製下顛倒的字母或數字 popMatrix(); // 恢復原來的變換矩陣 } String getRank(int n){ if(n == 1){ return "A";} else if(n == 11){return "J";} else if(n == 12){return "Q";} else if(n == 13){return "K";} else{return Integer.toString(n);} } 增加放牌的格子、修改背景顏色void setup(){ size(1000,800); } void draw(){ background(#FCF2EA); drawCardContainer(250 , 100);//翻出來的牌 for(int i=0; i<4; i++){ drawCardContainer(520 + 90*i, 100);//放牌的地方 } } void drawCardContainer(int x, int y){ //放牌的地方 stroke(0); fill(255); rect(x, y, 83, 109, 7); } 洗完牌後將排成由1遞增到7的牌堆void setup(){ size(1000,800); myshuffle(); } void myshuffle(){ for(int i=0;i<4;i++){ for(int j=0;j<13;j++){ cardN[i*13+j] = j+1; cardC[i*13+j] = C[i%4]; } } for(int i=0;i<100;i++){ //洗牌100次 int a = int(random(52)), b = int(random(52)); int temp = cardN[a]; //交換card cardN[a] = cardN[b]; cardN[b] = temp; temp = cardC[a]; cardC[a] = cardC[b]; cardC[b] = temp; } } //int [][] card = new int[4][13]; int [] cardN = new int[100]; //card number int [] cardC = new int[100];//card color color [] C = {#000000,#FF0000,#00FF00,#0000FF}; void draw(){ background(#FCF2EA); drawCardContainer(160 , 50);//翻出來的牌 for(int i=0; i<4; i++){ drawCardContainer(430+ 90*i, 50);//放牌的地方 } /*for(int i=0;i<4;i++){ for(int j=0;j<13;j++){ //drawCard(j*83, i*109 , cardC[i%4], j); drawCard(j*83,i*109,cardC[i*13+j],cardN[i*13+j]); } }*/ int startX = 160;//x起始位置 int startY = 180;//y起始位置 for (int i=0, index = 0; i<7; i++) {//index陣列索引值 for (int j=0; j<7-i; j++, index++) { int x = startX + (j * 90) + (i * 90); int y = startY + (i * 50); drawCard(x, y, cardC[index], cardN[index]); //drawCard(x, y ,cardC[i*13+j],cardN[i*13+j]); } } } void drawCard(int x,int y,color c,int n){ stroke(128);//gray stroke fill(255); rect(x,y,83,109,10); textSize(20); fill(c); String rank = getRank(n); text(rank,x+8,y+20); pushMatrix(); // 保存當前的變換矩陣 translate(x+75, y+90); // 將座標系移動到撲克牌的右下角 rotate(radians(180)); // 逆時針旋轉180度 text(rank,0,0); // 繪製下顛倒的字母或數字 popMatrix(); // 恢復原來的變換矩陣*/ } String getRank(int n){ if(n == 1){ return "A";} else if(n == 11){return "J";} else if(n == 12){return "Q";} else if(n == 13){return "K";} else{return Integer.toString(n);} } void drawCardContainer(int x, int y){ //放牌的地方 stroke(0); fill(255); rect(x, y, 83, 109, 7); }







沒有留言:
張貼留言