更新於 2024/11/11閱讀時間約 6 分鐘

系統開發-04玩家停牌

    繼續開發玩家停牌(Stand),停牌後輪到莊家(電腦)要牌,並判斷莊家是否爆牌與玩家比較點數大小。

    raw-image

    新增btn_stand_Click()中莊家要牌與爆牌和點數的比較判斷,且牌局結束(比較點數後)要牌和停牌按鈕無法按下

    //玩家停牌,換莊家要牌DrawForDealer(),直到計分比較輸贏
    protected void btn_stand_Click(object sender, EventArgs e)
    {
    //**新增***
    player = (Player)Session["Player"];
    dealer = (Player)Session["Dealer"];

    //小於18點持續要牌
    while (dealer.CalculatePoints() < 18)
    {
    DrawForDealer();
    }

    //如果莊家沒有爆牌,比較莊家和玩家的點數
    int playerScore = player.CalculatePoints();
    int dealerScore = dealer.CalculatePoints();

    if (dealer.IsBusted() || playerScore > dealerScore)
    {
    //玩家贏
    if (dealer.IsBusted())
    {
    lab_msg.Text = $"莊家 {dealer.CalculatePoints()}點,玩家 {player.CalculatePoints()}點! 莊家爆掉了! 玩家贏!";
    }
    else
    {
    lab_msg.Text = $"莊家 {dealer.CalculatePoints()}點,玩家 {player.CalculatePoints()}點! 玩家贏!";
    }
    }
    else if (playerScore < dealerScore)
    {
    //莊家贏
    lab_msg.Text = $"莊家 {dealer.CalculatePoints()}點,玩家 {player.CalculatePoints()}點! 莊家贏!";
    }
    else
    {
    //平手
    lab_msg.Text = $"莊家 {dealer.CalculatePoints()}點,玩家 {player.CalculatePoints()}點! 雙方平手!";
    }

    btn_hit.Enabled = false;
    btn_stand.Enabled = false;
    btn_newgame.Enabled = true;

    UpdateUI();
    }

    再來調整按鈕的狀態,牌局開始無法按下新牌局按鈕,以下是調整ResetGame()後的內容

    protected void ResetGame() {        //初始化遊戲參數與動作(初始發牌)
    //將資料存到Session
    Session["Deck"] = new Deck();
    Session["Dealer"] = new Player();
    Session["Player"] = new Player();

    //初始發牌
    DrawForPlayer();
    DrawForDealer();
    DrawForPlayer();
    DrawForDealer();

    //清空label內容
    lab_deck.Text = "";
    lab_dealer.Text = "";
    lab_player.Text = "";

    //**新增***
    lab_msg.Text = "";
    btn_hit.Enabled = true;
    btn_stand.Enabled = true;
    btn_newgame.Enabled = false;
    }

    新牌局按鈕調整,按下後讓畫面更新,顯示新的牌局內容

    protected void btn_newgame_Click(object sender, EventArgs e)
    {
    ResetGame();
    UpdateUI();
    }

    按下停牌按鈕後執行結果


    按下新牌局按鈕後的執行結果


    21點遊戲基本功能已經完成,可以開始遊玩,但可以再加一些資訊讓玩的人更清楚現在的狀況,例如:牌堆要隱藏(避免作弊);莊家的牌要隱藏一張(避免作弊);現在是第幾局、已經贏過幾次...等等,下幾篇再來調整。

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.