系統開發-02發牌給玩家

更新 發佈閱讀 8 分鐘
raw-image


這一篇來解決上一篇的問題,使用Session來存取資料。

以下修改一下程式碼,[**新增 **]是新增的程式碼,舊的且不需要的程式碼會被註解掉

public partial class _Default : System.Web.UI.Page
{
Deck deck; //排堆
Player dealer; //莊家
Player player; //玩家

protected void Page_Load(object sender, EventArgs e)
{
//**新增**
//避免網頁載入後,每按一次按鈕都會更新(POST)
//改為網頁載入更新就好
if (IsPostBack == false)
{
ResetGame();
}

//ResetGame();
UpdateUI();
}

protected void ResetGame() { //初始化遊戲參數與動作(初始發牌)
//deck = new Deck();
//dealer = new Player();
//player = new Player();

//**新增***
//將資料存到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 = "";
}

protected void UpdateUI()
{
deck = (Deck)Session["Deck"];
lab_deck.Text = deck.ShowCards();

//**新增***
//Label顯示前先清空內容
lab_player.Text = "";
lab_dealer.Text = "";

//**新增***
player = (Player)Session["Player"];

//顯示玩家手牌
for (int i = 0; i < player.cards.Count; i++)
{
lab_player.Text += $"<img src='./images/{player.cards[i].Rank}-{player.cards[i].Suit}.png'>";
}

//**新增***
dealer = (Player)Session["Dealer"];

//顯示莊家手牌
for (int i = 0; i < dealer.cards.Count; i++)
{
lab_dealer.Text += $"<img src='./images/{dealer.cards[i].Rank}-{dealer.cards[i].Suit}.png'>";
}
}

//發牌給莊家
protected void DrawForDealer() {
//**新增***
deck = (Deck)Session["Deck"];
dealer = (Player)Session["Dealer"];

Card c = deck.DrawCard();
dealer.AddCard(c); //加到手牌

//**新增***
Session["Dealer"] = dealer;
Session["Deck"] = deck;
}

//發牌給玩家
protected void DrawForPlayer() {
//**新增***
deck = (Deck)Session["Deck"];
player = (Player)Session["Player"];

Card c = deck.DrawCard();
player.AddCard(c); //加到手牌

//**新增***
Session["Player"] = player;
Session["Deck"] = deck;
}

//按鈕OnClick後觸發
//玩家要牌,呼叫DrawForPlayer()
protected void btn_hit_Click(object sender, EventArgs e)
{
DrawForPlayer();

//**新增***
UpdateUI();
}

//玩家停牌,換莊家要牌DrawForDealer(),直到計分比較輸贏
protected void btn_stand_Click(object sender, EventArgs e)
{
DrawForDealer();

//**新增***
UpdateUI();
}

//新牌局(下一回合),呼叫NextRound()
protected void btn_newgame_Click(object sender, EventArgs e)
{
ResetGame();
}

protected void NextRound() { } //下一回合,呼叫ResetGame()
}

程式執行結果:

raw-image

用Session存取資料後,排堆(Deck)裡面發出來的牌,會和按下發牌(Hit)後的牌相同,不會再因為網頁被更新而無法保留資料。

下一篇來加上玩家的分數計算與超過21點(爆牌)的判斷。


Ps.此程式沒有限制只能發52張牌,所以一直按下發牌(Hit)是會一直發牌的,但超過52張會發生錯誤;沒有限制的原因是21點遊戲只有兩個人玩不會發到52張,且後面會有計算點數的控制來結束牌局。


留言
avatar-img
Phyxsius
0會員
19內容數
FIRE
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
帝國手遊代儲網的簡介 帝國手遊代儲網是專業的遊戲代儲平台,提供各種手遊代儲服務,其中包括交友軟體代儲服務。 對於初學者來說,了解如何使用帝國手遊代儲網進行交友軟體代儲是非常重要的。 初學者指南                                                    
Thumbnail
帝國手遊代儲網的簡介 帝國手遊代儲網是專業的遊戲代儲平台,提供各種手遊代儲服務,其中包括交友軟體代儲服務。 對於初學者來說,了解如何使用帝國手遊代儲網進行交友軟體代儲是非常重要的。 初學者指南                                                    
Thumbnail
前言:遊戲代儲的崛起 在現今的遊戲產業中,遊戲代儲已成為一個不可忽視的重要環節。遊戲代儲為玩家提供了一種便捷的方式來快速提升遊戲中的等級、技能和資源,使他們能夠更快地享受遊戲樂趣。在眾多的遊戲代儲平台中,帝國手遊代儲網因其優質的服務和卓越的表現而脫穎而出。本文將深入探討遊戲代儲產業的發展趨勢,以及
Thumbnail
前言:遊戲代儲的崛起 在現今的遊戲產業中,遊戲代儲已成為一個不可忽視的重要環節。遊戲代儲為玩家提供了一種便捷的方式來快速提升遊戲中的等級、技能和資源,使他們能夠更快地享受遊戲樂趣。在眾多的遊戲代儲平台中,帝國手遊代儲網因其優質的服務和卓越的表現而脫穎而出。本文將深入探討遊戲代儲產業的發展趨勢,以及
Thumbnail
石頭手遊代儲網的專業服務 專業遊戲代儲團隊 石頭手遊代儲網擁有一支專業的遊戲代儲團隊,這些成員都是經驗豐富、技術優秀的遊戲玩家。 他們對各種遊戲的玩法和充值機制非常了解,能夠提供專業的遊戲代儲建議和服務。 安全可靠的交易保障 在石頭手遊代儲網,交易安全始終是首要考慮的問題。 平台採用了先進的
Thumbnail
石頭手遊代儲網的專業服務 專業遊戲代儲團隊 石頭手遊代儲網擁有一支專業的遊戲代儲團隊,這些成員都是經驗豐富、技術優秀的遊戲玩家。 他們對各種遊戲的玩法和充值機制非常了解,能夠提供專業的遊戲代儲建議和服務。 安全可靠的交易保障 在石頭手遊代儲網,交易安全始終是首要考慮的問題。 平台採用了先進的
Thumbnail
帝國手遊代儲網 — 解鎖遊戲新境界的關鍵! 在遊戲的世界中,想要快速打破瓶頸,提升實力嗎?帝國手遊代儲網(https://diguogames88.com/)是您的專業代儲夥伴,透過本文,我們將一同探討如何打破遊戲的瓶頸,讓專業代儲引領您向前! 什麼是帝國手遊代儲網? 帝國手遊代儲網是一個致力
Thumbnail
帝國手遊代儲網 — 解鎖遊戲新境界的關鍵! 在遊戲的世界中,想要快速打破瓶頸,提升實力嗎?帝國手遊代儲網(https://diguogames88.com/)是您的專業代儲夥伴,透過本文,我們將一同探討如何打破遊戲的瓶頸,讓專業代儲引領您向前! 什麼是帝國手遊代儲網? 帝國手遊代儲網是一個致力
Thumbnail
石頭手遊代儲網的背景介紹 石頭手遊代儲網是一家知名的遊戲代儲服務平台,致力於為玩家提供專業、快速、安全的代儲服務。 作為遊戲代儲市場的領導者之一,石頭手遊代儲網憑藉其創新的服務模式和卓越的服務品質,贏得了眾多玩家的信賴和支持。 什麼是代儲值? 代儲值是指玩家透過支付一定的費用,讓專業的代儲團隊
Thumbnail
石頭手遊代儲網的背景介紹 石頭手遊代儲網是一家知名的遊戲代儲服務平台,致力於為玩家提供專業、快速、安全的代儲服務。 作為遊戲代儲市場的領導者之一,石頭手遊代儲網憑藉其創新的服務模式和卓越的服務品質,贏得了眾多玩家的信賴和支持。 什麼是代儲值? 代儲值是指玩家透過支付一定的費用,讓專業的代儲團隊
Thumbnail
這篇文章分享了一個線上桌遊的新創意,結合了線上課程與遊戲的元素,以促進學習與擴大人脈。作者希望透過遊戲的體驗來教導漏斗、直效行銷的知識,並提供了免費試玩的名額,期待收集更多的回饋意見。
Thumbnail
這篇文章分享了一個線上桌遊的新創意,結合了線上課程與遊戲的元素,以促進學習與擴大人脈。作者希望透過遊戲的體驗來教導漏斗、直效行銷的知識,並提供了免費試玩的名額,期待收集更多的回饋意見。
Thumbnail
隨著數位遊戲市場的蓬勃發展,台灣的遊戲代儲服務平台也呈現出蓬勃的態勢。 在眾多競爭對手中,石頭手遊代儲網以其卓越的服務品質和客戶信任度傲立潮頭,成為眾多玩家的首選。 本文將深入探討石頭手遊代儲網的核心優勢以及在台灣遊戲代儲市場的領先地位。 服務的核心優勢 石頭手遊代儲網的成功建立在幾個關鍵優勢之
Thumbnail
隨著數位遊戲市場的蓬勃發展,台灣的遊戲代儲服務平台也呈現出蓬勃的態勢。 在眾多競爭對手中,石頭手遊代儲網以其卓越的服務品質和客戶信任度傲立潮頭,成為眾多玩家的首選。 本文將深入探討石頭手遊代儲網的核心優勢以及在台灣遊戲代儲市場的領先地位。 服務的核心優勢 石頭手遊代儲網的成功建立在幾個關鍵優勢之
Thumbnail
主副號的區別
Thumbnail
主副號的區別
Thumbnail
【#万博体育】体育电竞 首存彩金添好运👉WK89.FUN 💥达首存金额等级 送最高10588首存彩金
Thumbnail
【#万博体育】体育电竞 首存彩金添好运👉WK89.FUN 💥达首存金额等级 送最高10588首存彩金
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News