編碼也快樂活動:撲克牌排序(JavaScript)
其中寫了兩個可以實現紙牌排序的函式。第一個是計算紙牌位置然後放入陣列中(後來想了想可能也觸犯規則了,而且這種方法不夠靈活,如果將程式拿來用做多個人輪流摸牌然後排序的話就不能用了),第二個是用了JavaScript中的sort()方法實現順序,不過受花色困擾要分別給按照顏色劃分的四個陣列分別排序後再組合。如果不考慮摸牌的情況,可以嘗試直接對放滿紙牌物件的cardCase陣列分別根據其中元素的color和number屬性來排序,不過這個方法怎麼實現我還沒想到。如果有知道的還望不吝賜教。
$(function() {
var cardCase = new Array();
var handsCadr =new Array();
var cardColor = new Array("黑桃","紅心","梅花","方塊");
var cardValue = new Array("A","2","3","4","5","6","7","8","9","10","J","Q","K");
var spade = new Array();
var heart = new Array();
var club = new Array();
var diamond = new Array();
//洗牌,根據花色和牌值生成紙牌,再打亂順序
function shuffle(cardColor,cardValue) {
for(var i = 0; i < cardColor.length; i++){
var number = 0;
for (var x = 0; x < cardValue.length; x++) {
number += 1;
cardCase[i*cardValue.length + x] = {"color": cardColor[i],
"value": cardValue[x],
"number": number};
}
};
cardCase = cardCase.sort(function() {
return Math.random()>0.5?-1:1;
});
return cardCase;
};
//第一種排序方式:根據花色和牌面值直接將牌放入對應位置
function drawCard1(cardCase) {
for (var y = 0; y < cardCase.length; y++) {
switch (cardCase[y].color)
{
case "黑桃":
handsCadr[cardCase[y].number-1] = cardCase[y];
break;
case "紅心":
handsCadr[cardCase[y].number + 12] = cardCase[y];
break;
case "梅花":
handsCadr[cardCase[y].number + 25] = cardCase[y];
break;
case "方塊":
handsCadr[cardCase[y].number + 38] = cardCase[y];
break;
}
}
};
//排序函式
function cardSort(cardNumber){
return function(object1, object2){
var value1 = object1[cardNumber];
var value2 = object2[cardNumber];
if (value1 < value2)
{
return -1;
} else if (value1 > value2)
{
return 1;
} else {
return 0;
}
}
}
//第二種排序方式,將紙牌按照花色放入對應的陣列中,再分別給每個陣列排序,然後組合這些陣列
function drawCard2(cardCase) {
for (var y = 0; y < cardCase.length; y++) {
switch (cardCase[y].color)
{
case "黑桃":
spade.push(cardCase[y]);
break
case "紅心":
heart.push(cardCase[y]);
break
case "梅花":
club.push(cardCase[y]);
break
case "方塊":
diamond.push(cardCase[y]);
break
}
}
spade.sort(cardSort("number"));
heart.sort(cardSort("number"));
club.sort(cardSort("number"));
diamond.sort(cardSort("number"));
handsCadr = spade.concat(heart,club,diamond);
};
//列印,在頁面中輸入排列好的順序
function print() {
for (var z = 0; z < 52; z++) {
document.write(handsCadr[z].color + handsCadr[z].value + "<br/>");
}
};
$(".shuffle1").click(function() {
shuffle(cardColor,cardValue);
drawCard1(cardCase);
print();
});
$(".shuffle2").click(function() {
shuffle(cardColor,cardValue);
drawCard2(cardCase);
print();
});
});
相關文章
- 編碼也快樂活動:撲克牌排序排序
- 編碼也快樂!撲克牌排序JAVA排序Java
- 編碼也快樂:撲克牌排序 - Python排序Python
- 撲克牌排序(JS版) 編碼也快樂!排序JS
- 用SQL實現撲克牌排序SQL排序
- 用C實現撲克牌排序排序
- 用Java實現撲克牌排序Java排序
- 用C#實現撲克牌排序C#排序
- 撲克牌排序:基於基數排序的方法排序
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 用cpp0.5實現撲克牌排序排序
- 撲克牌排序-Scala之畫蛇添足版排序
- java程式:簡易撲克牌遊戲Java遊戲
- 簡易撲克牌遊戲JAVA原始碼_新手上路遊戲Java原始碼
- 使用Java語言寫的一個簡單的撲克牌發牌程式碼Java
- Java 簡單實現撲克牌抽象類Java抽象
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 編碼也快樂:兩隻水壺F#程式
- 編碼也快樂:兩隻水壺Scheme程式Scheme
- 編碼也快樂:兩隻水壺C#程式C#
- Java第三季—簡易撲克牌遊戲Java遊戲
- 純CSS實現撲克牌效果,太牛了吧CSS
- 編碼也快樂:取得3升水C#版C#
- 編碼也快樂:兩水壺的故事之JS程式JS
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- Java入門第三季撲克牌小遊戲Java遊戲
- Java學習--撲克牌比大小的小遊戲Java遊戲
- 自己寫的一個洗撲克牌的java程式Java
- Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝Java排序
- 編碼也快樂活動歡樂第二季 - 火熱滾燙的HTML5和CSS3大餐...HTMLCSSS3
- [每日一題] 第十二題:撲克牌中的順子每日一題
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- 【YOLOv5】實現撲克牌的點數識別YOLO
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- JAVA入門第三季——最後練習題撲克牌Java
- java入門最後一章 簡易撲克牌比較大小Java
- 拓撲排序核心程式碼排序