henrybobo

Lv.1 初心者
管理成員
管理員
註冊
2022-08-27
文章
298
評分
72
聲望
0
  1. 推筒子取自麻將中的「筒子」及「白板」組成的玩法,玩家只需要合計手牌上的點數,如果大於10則取其個位數,故最大為9點,最小為0點,如果玩家拿到10點則以0點計算。
  2. 拿到兩張點數相同的牌型則稱為「對子」,勝任何點數。
  3. 系統在發第一張牌到玩家手中,顯示出來後系統會繼續發第二張牌,此時玩家只要比手牌中的點數大小。如果玩家手中的點數與其他玩家點數相同視為「平手」。
  4. 玩家和莊家各拿到兩張牌,兩張牌的總和比大小,如果大於10則取其個位數。
  5. 玩家可以下注,下注金額可以選擇最小下注、兩倍最小下注或五倍最小下注。如果下注金額超過玩家現有的楓幣,則不能下注。
設定變數
JavaScript:
var status = -1; var minBet = 1; // 最小下注 var maxBet = 1000; // 最大下注 var betRate = 1; // 下注倍率
開始對話框
JavaScript:
function start() {
    status = -1;
    cm.sendSimple("歡迎來到推筒子賭場!你想做什麼?\r\n#b#L0#開始遊戲#l\r\n#L1#了解遊戲規則#l");
}
腳本運行起始點
JavaScript:
function action(mode, type, selection) {
    if (mode == 0) { // 按返回鍵
        cm.dispose();
        return;
    } else if (mode == 1) { // 按確認鍵
        status++;
    } else { // mode = -1
        cm.dispose();
        return;
    }
    if (status == 0) {
        cm.sendSimple("請選擇下注金額:\r\n#b#L0#" + minBet + " 楓幣#l\r\n#L1#" + (minBet * 2) + " 楓幣#l\r\n#L2#" + (minBet * 5) + " 楓幣#l");
當玩家選擇下注時,腳本會執行以下程式碼:
JavaScript:
} else if (status == 1) {
        var betAmount = minBet;
        if (selection == 0) {
            betAmount = minBet;
            betRate = 1;
        } else if (selection == 1) {
            betAmount = minBet * 2;
            betRate = 2;
        }

接下來,腳本會檢查玩家的楓幣是否足夠進行下注:
JavaScript:
        if (cm.getPlayer().getMeso() < betAmount) {
            cm.sendOk("你的楓幣不夠,無法下注!");
            cm.dispose();
            return;
        }
如果玩家楓幣不足,則會彈出提示訊息,並結束腳本執行。

如果玩家楓幣足夠進行下注,則會從玩家的楓幣中扣除下注金額:
JavaScript:
        cm.getPlayer().gainMeso(-betAmount, true);

接著,腳本會分別從牌堆中抽取兩張牌作為玩家和莊家的手牌:
JavaScript:
        var playerHand = [drawCard(), drawCard()];
        var dealerHand = [drawCard(), drawCard()];
之後會分別計算玩家和莊家手牌的點數,以便進行比較:
JavaScript:
        var playerHandValue = getHandValue(playerHand);
        var dealerHandValue = getHandValue(dealerHand);
接著,腳本會顯示玩家和莊家的手牌:
JavaScript:
        var playerHandDisplay = playerHand[0] + "、" + playerHand[1];
        var dealerHandDisplay = dealerHand[0] + "、" + dealerHand[1];
        var msg = "";
        msg += "你的手牌是:" + playerHandDisplay + "(" + playerHandValue + "),莊家的手牌是:" + dealerHandDisplay + "(" + dealerHandValue + ")";

最後,腳本會進行比較,並根據比較結果判斷勝負,並結算賭局:
JavaScript:
        if (playerHandValue > dealerHandValue) {
            var winnings = betAmount * betRate;
            cm.getPlayer().gainMeso(winnings, true);
            msg += "你贏了!獲得了 " + winnings + " 楓幣。";
        } else if (playerHandValue < dealerHandValue) {
            msg += "你輸了!";
        } else {
            msg += "平局!";
        }
        cm.sendOk(msg);
        status = -1;
    }
}

抽麻將
JavaScript:
function drawCard() {
    var suits = ['筒', '筒', '筒', '筒', '筒', '筒', '筒', '筒', '筒', '白皮'];
    var values = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
    var suitIndex = Math.floor(Math.random() * suits.length);
    var valueIndex = Math.floor(Math.random() * values.length);
    var card = suits[suitIndex] + values[valueIndex];
    return card;
}

手牌比較
JavaScript:
function compareHands(hand1, hand2) {
    var hand1Value = getHandValue(hand1);
    var hand2Value = getHandValue(hand2);
    if (hand1Value == hand2Value) {
        return 0;
    } else {
        return hand1Value > hand2Value ? 1 : -1;
    }
}

展示名稱
JavaScript:
function getCardDisplayName(card) {
    var suit = card.substring(0, 1);
    var value = card.substring(1);
    if (suit === '白') {
        return '白皮';
    } else {
        var suitMap = {
            '筒': '萬',
        };
        var displayName = suitMap[suit] + value;
        if (value === '0') {
            displayName = suitMap[suit] + '10';
        } else if (value === '1') {
            displayName = suitMap[suit] + 'A';
        }
        return displayName;
    }
}

計算手牌點數總和
JavaScript:
function getHandValue(hand) {
    // 計算手牌點數總和
    var total = 0;
    var hasWhite = false;
    for (var i = 0; i < hand.length; i++) {
        var card = hand[i];
        var number = card.substring(1);
        if (number === '0') {
            number = '10';
        }
        if (card.substring(0, 1) === '白') {
            hasWhite = true;
            total += 0.5;
        } else {
            total += parseInt(number);
        }
    }
    // 如果手牌有白皮,點數加0.5
    if (hasWhite) {
        total += 0.5;
    }
    // 取個位數,如果大於10則減10
    var remainder = total % 10;
    if (remainder == 0 && total > 0) {
        return 10;
    } else {
        return remainder;
    }
}

完整code如下:


1677141229516.png
1677141245462.png
 

幸運谷8+9

Lv.1 初心者
專屬會員
註冊
2022-09-10
文章
24
評分
0
聲望
0
  1. 推筒子取自麻將中的「筒子」及「白板」組成的玩法,玩家只需要合計手牌上的點數,如果大於10則取其個位數,故最大為9點,最小為0點,如果玩家拿到10點則以0點計算。
  2. 拿到兩張點數相同的牌型則稱為「對子」,勝任何點數。
  3. 系統在發第一張牌到玩家手中,顯示出來後系統會繼續發第二張牌,此時玩家只要比手牌中的點數大小。如果玩家手中的點數與其他玩家點數相同視為「平手」。
  4. 玩家和莊家各拿到兩張牌,兩張牌的總和比大小,如果大於10則取其個位數。
  5. 玩家可以下注,下注金額可以選擇最小下注、兩倍最小下注或五倍最小下注。如果下注金額超過玩家現有的楓幣,則不能下注。

JavaScript:
var status = -1; var minBet = 1; // 最小下注 var maxBet = 1000; // 最大下注 var betRate = 1; // 下注倍率

JavaScript:
function start() {
    status = -1;
    cm.sendSimple("歡迎來到推筒子賭場!你想做什麼?\r\n#b#L0#開始遊戲#l\r\n#L1#了解遊戲規則#l");
}

JavaScript:
function action(mode, type, selection) {
    if (mode == 0) { // 按返回鍵
        cm.dispose();
        return;
    } else if (mode == 1) { // 按確認鍵
        status++;
    } else { // mode = -1
        cm.dispose();
        return;
    }
    if (status == 0) {
        cm.sendSimple("請選擇下注金額:\r\n#b#L0#" + minBet + " 楓幣#l\r\n#L1#" + (minBet * 2) + " 楓幣#l\r\n#L2#" + (minBet * 5) + " 楓幣#l");

JavaScript:
} else if (status == 1) {
        var betAmount = minBet;
        if (selection == 0) {
            betAmount = minBet;
            betRate = 1;
        } else if (selection == 1) {
            betAmount = minBet * 2;
            betRate = 2;
        }


JavaScript:
        if (cm.getPlayer().getMeso() < betAmount) {
            cm.sendOk("你的楓幣不夠,無法下注!");
            cm.dispose();
            return;
        }



JavaScript:
        cm.getPlayer().gainMeso(-betAmount, true);


JavaScript:
        var playerHand = [drawCard(), drawCard()];
        var dealerHand = [drawCard(), drawCard()];

JavaScript:
        var playerHandValue = getHandValue(playerHand);
        var dealerHandValue = getHandValue(dealerHand);
接著,腳本會顯示玩家和莊家的手牌:
JavaScript:
        var playerHandDisplay = playerHand[0] + "、" + playerHand[1];
        var dealerHandDisplay = dealerHand[0] + "、" + dealerHand[1];
        var msg = "";
        msg += "你的手牌是:" + playerHandDisplay + "(" + playerHandValue + "),莊家的手牌是:" + dealerHandDisplay + "(" + dealerHandValue + ")";


JavaScript:
        if (playerHandValue > dealerHandValue) {
            var winnings = betAmount * betRate;
            cm.getPlayer().gainMeso(winnings, true);
            msg += "你贏了!獲得了 " + winnings + " 楓幣。";
        } else if (playerHandValue < dealerHandValue) {
            msg += "你輸了!";
        } else {
            msg += "平局!";
        }
        cm.sendOk(msg);
        status = -1;
    }
}


JavaScript:
function drawCard() {
    var suits = ['筒', '筒', '筒', '筒', '筒', '筒', '筒', '筒', '筒', '白皮'];
    var values = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
    var suitIndex = Math.floor(Math.random() * suits.length);
    var valueIndex = Math.floor(Math.random() * values.length);
    var card = suits[suitIndex] + values[valueIndex];
    return card;
}


JavaScript:
function compareHands(hand1, hand2) {
    var hand1Value = getHandValue(hand1);
    var hand2Value = getHandValue(hand2);
    if (hand1Value == hand2Value) {
        return 0;
    } else {
        return hand1Value > hand2Value ? 1 : -1;
    }
}


JavaScript:
function getCardDisplayName(card) {
    var suit = card.substring(0, 1);
    var value = card.substring(1);
    if (suit === '白') {
        return '白皮';
    } else {
        var suitMap = {
            '筒': '萬',
        };
        var displayName = suitMap[suit] + value;
        if (value === '0') {
            displayName = suitMap[suit] + '10';
        } else if (value === '1') {
            displayName = suitMap[suit] + 'A';
        }
        return displayName;
    }
}


JavaScript:
function getHandValue(hand) {
    // 計算手牌點數總和
    var total = 0;
    var hasWhite = false;
    for (var i = 0; i < hand.length; i++) {
        var card = hand[i];
        var number = card.substring(1);
        if (number === '0') {
            number = '10';
        }
        if (card.substring(0, 1) === '白') {
            hasWhite = true;
            total += 0.5;
        } else {
            total += parseInt(number);
        }
    }
    // 如果手牌有白皮,點數加0.5
    if (hasWhite) {
        total += 0.5;
    }
    // 取個位數,如果大於10則減10
    var remainder = total % 10;
    if (remainder == 0 && total > 0) {
        return 10;
    } else {
        return remainder;
    }
}

完整code如下:

*** 隱藏內容無法引用 ***

瀏覽附件297
瀏覽附件298
白板對 錢來
 

Vic

Lv.1 初心者
註冊
2022-09-04
文章
25
評分
1
聲望
0
雖然麻將看不懂 但還是收藏一下 哈哈
 

阿拉瓜

Lv.1 初心者
註冊
2023-04-10
文章
8
評分
0
聲望
0
  1. 推筒子取自麻將中的「筒子」及「白板」組成的玩法,玩家只需要合計手牌上的點數,如果大於10則取其個位數,故最大為9點,最小為0點,如果玩家拿到10點則以0點計算。
  2. 拿到兩張點數相同的牌型則稱為「對子」,勝任何點數。
  3. 系統在發第一張牌到玩家手中,顯示出來後系統會繼續發第二張牌,此時玩家只要比手牌中的點數大小。如果玩家手中的點數與其他玩家點數相同視為「平手」。
  4. 玩家和莊家各拿到兩張牌,兩張牌的總和比大小,如果大於10則取其個位數。
  5. 玩家可以下注,下注金額可以選擇最小下注、兩倍最小下注或五倍最小下注。如果下注金額超過玩家現有的楓幣,則不能下注。

JavaScript:
var status = -1; var minBet = 1; // 最小下注 var maxBet = 1000; // 最大下注 var betRate = 1; // 下注倍率

JavaScript:
function start() {
    status = -1;
    cm.sendSimple("歡迎來到推筒子賭場!你想做什麼?\r\n#b#L0#開始遊戲#l\r\n#L1#了解遊戲規則#l");
}

JavaScript:
function action(mode, type, selection) {
    if (mode == 0) { // 按返回鍵
        cm.dispose();
        return;
    } else if (mode == 1) { // 按確認鍵
        status++;
    } else { // mode = -1
        cm.dispose();
        return;
    }
    if (status == 0) {
        cm.sendSimple("請選擇下注金額:\r\n#b#L0#" + minBet + " 楓幣#l\r\n#L1#" + (minBet * 2) + " 楓幣#l\r\n#L2#" + (minBet * 5) + " 楓幣#l");

JavaScript:
} else if (status == 1) {
        var betAmount = minBet;
        if (selection == 0) {
            betAmount = minBet;
            betRate = 1;
        } else if (selection == 1) {
            betAmount = minBet * 2;
            betRate = 2;
        }


JavaScript:
        if (cm.getPlayer().getMeso() < betAmount) {
            cm.sendOk("你的楓幣不夠,無法下注!");
            cm.dispose();
            return;
        }



JavaScript:
        cm.getPlayer().gainMeso(-betAmount, true);


JavaScript:
        var playerHand = [drawCard(), drawCard()];
        var dealerHand = [drawCard(), drawCard()];

JavaScript:
        var playerHandValue = getHandValue(playerHand);
        var dealerHandValue = getHandValue(dealerHand);
接著,腳本會顯示玩家和莊家的手牌:
JavaScript:
        var playerHandDisplay = playerHand[0] + "、" + playerHand[1];
        var dealerHandDisplay = dealerHand[0] + "、" + dealerHand[1];
        var msg = "";
        msg += "你的手牌是:" + playerHandDisplay + "(" + playerHandValue + "),莊家的手牌是:" + dealerHandDisplay + "(" + dealerHandValue + ")";


JavaScript:
        if (playerHandValue > dealerHandValue) {
            var winnings = betAmount * betRate;
            cm.getPlayer().gainMeso(winnings, true);
            msg += "你贏了!獲得了 " + winnings + " 楓幣。";
        } else if (playerHandValue < dealerHandValue) {
            msg += "你輸了!";
        } else {
            msg += "平局!";
        }
        cm.sendOk(msg);
        status = -1;
    }
}


JavaScript:
function drawCard() {
    var suits = ['筒', '筒', '筒', '筒', '筒', '筒', '筒', '筒', '筒', '白皮'];
    var values = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
    var suitIndex = Math.floor(Math.random() * suits.length);
    var valueIndex = Math.floor(Math.random() * values.length);
    var card = suits[suitIndex] + values[valueIndex];
    return card;
}


JavaScript:
function compareHands(hand1, hand2) {
    var hand1Value = getHandValue(hand1);
    var hand2Value = getHandValue(hand2);
    if (hand1Value == hand2Value) {
        return 0;
    } else {
        return hand1Value > hand2Value ? 1 : -1;
    }
}


JavaScript:
function getCardDisplayName(card) {
    var suit = card.substring(0, 1);
    var value = card.substring(1);
    if (suit === '白') {
        return '白皮';
    } else {
        var suitMap = {
            '筒': '萬',
        };
        var displayName = suitMap[suit] + value;
        if (value === '0') {
            displayName = suitMap[suit] + '10';
        } else if (value === '1') {
            displayName = suitMap[suit] + 'A';
        }
        return displayName;
    }
}


JavaScript:
function getHandValue(hand) {
    // 計算手牌點數總和
    var total = 0;
    var hasWhite = false;
    for (var i = 0; i < hand.length; i++) {
        var card = hand[i];
        var number = card.substring(1);
        if (number === '0') {
            number = '10';
        }
        if (card.substring(0, 1) === '白') {
            hasWhite = true;
            total += 0.5;
        } else {
            total += parseInt(number);
        }
    }
    // 如果手牌有白皮,點數加0.5
    if (hasWhite) {
        total += 0.5;
    }
    // 取個位數,如果大於10則減10
    var remainder = total % 10;
    if (remainder == 0 && total > 0) {
        return 10;
    } else {
        return remainder;
    }
}

完整code如下:

*** 隱藏內容無法引用 ***

瀏覽附件297
瀏覽附件298
來看看這個厲害的賭博寫出來會長什麼樣