系統開發-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
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
帝國手遊代儲網的簡介 帝國手遊代儲網是專業的遊戲代儲平台,提供各種手遊代儲服務,其中包括交友軟體代儲服務。 對於初學者來說,了解如何使用帝國手遊代儲網進行交友軟體代儲是非常重要的。 初學者指南                                                    
Thumbnail
帝國手遊代儲網的簡介 帝國手遊代儲網是專業的遊戲代儲平台,提供各種手遊代儲服務,其中包括交友軟體代儲服務。 對於初學者來說,了解如何使用帝國手遊代儲網進行交友軟體代儲是非常重要的。 初學者指南                                                    
Thumbnail
前言:遊戲代儲的崛起 在現今的遊戲產業中,遊戲代儲已成為一個不可忽視的重要環節。遊戲代儲為玩家提供了一種便捷的方式來快速提升遊戲中的等級、技能和資源,使他們能夠更快地享受遊戲樂趣。在眾多的遊戲代儲平台中,帝國手遊代儲網因其優質的服務和卓越的表現而脫穎而出。本文將深入探討遊戲代儲產業的發展趨勢,以及
Thumbnail
前言:遊戲代儲的崛起 在現今的遊戲產業中,遊戲代儲已成為一個不可忽視的重要環節。遊戲代儲為玩家提供了一種便捷的方式來快速提升遊戲中的等級、技能和資源,使他們能夠更快地享受遊戲樂趣。在眾多的遊戲代儲平台中,帝國手遊代儲網因其優質的服務和卓越的表現而脫穎而出。本文將深入探討遊戲代儲產業的發展趨勢,以及
Thumbnail
石頭手遊代儲網的專業服務 專業遊戲代儲團隊 石頭手遊代儲網擁有一支專業的遊戲代儲團隊,這些成員都是經驗豐富、技術優秀的遊戲玩家。 他們對各種遊戲的玩法和充值機制非常了解,能夠提供專業的遊戲代儲建議和服務。 安全可靠的交易保障 在石頭手遊代儲網,交易安全始終是首要考慮的問題。 平台採用了先進的
Thumbnail
石頭手遊代儲網的專業服務 專業遊戲代儲團隊 石頭手遊代儲網擁有一支專業的遊戲代儲團隊,這些成員都是經驗豐富、技術優秀的遊戲玩家。 他們對各種遊戲的玩法和充值機制非常了解,能夠提供專業的遊戲代儲建議和服務。 安全可靠的交易保障 在石頭手遊代儲網,交易安全始終是首要考慮的問題。 平台採用了先進的
Thumbnail
帝國手遊代儲網 — 解鎖遊戲新境界的關鍵! 在遊戲的世界中,想要快速打破瓶頸,提升實力嗎?帝國手遊代儲網(https://diguogames88.com/)是您的專業代儲夥伴,透過本文,我們將一同探討如何打破遊戲的瓶頸,讓專業代儲引領您向前! 什麼是帝國手遊代儲網? 帝國手遊代儲網是一個致力
Thumbnail
帝國手遊代儲網 — 解鎖遊戲新境界的關鍵! 在遊戲的世界中,想要快速打破瓶頸,提升實力嗎?帝國手遊代儲網(https://diguogames88.com/)是您的專業代儲夥伴,透過本文,我們將一同探討如何打破遊戲的瓶頸,讓專業代儲引領您向前! 什麼是帝國手遊代儲網? 帝國手遊代儲網是一個致力
Thumbnail
石頭手遊代儲網的背景介紹 石頭手遊代儲網是一家知名的遊戲代儲服務平台,致力於為玩家提供專業、快速、安全的代儲服務。 作為遊戲代儲市場的領導者之一,石頭手遊代儲網憑藉其創新的服務模式和卓越的服務品質,贏得了眾多玩家的信賴和支持。 什麼是代儲值? 代儲值是指玩家透過支付一定的費用,讓專業的代儲團隊
Thumbnail
石頭手遊代儲網的背景介紹 石頭手遊代儲網是一家知名的遊戲代儲服務平台,致力於為玩家提供專業、快速、安全的代儲服務。 作為遊戲代儲市場的領導者之一,石頭手遊代儲網憑藉其創新的服務模式和卓越的服務品質,贏得了眾多玩家的信賴和支持。 什麼是代儲值? 代儲值是指玩家透過支付一定的費用,讓專業的代儲團隊
Thumbnail
這篇文章分享了一個線上桌遊的新創意,結合了線上課程與遊戲的元素,以促進學習與擴大人脈。作者希望透過遊戲的體驗來教導漏斗、直效行銷的知識,並提供了免費試玩的名額,期待收集更多的回饋意見。
Thumbnail
這篇文章分享了一個線上桌遊的新創意,結合了線上課程與遊戲的元素,以促進學習與擴大人脈。作者希望透過遊戲的體驗來教導漏斗、直效行銷的知識,並提供了免費試玩的名額,期待收集更多的回饋意見。
Thumbnail
隨著數位遊戲市場的蓬勃發展,台灣的遊戲代儲服務平台也呈現出蓬勃的態勢。 在眾多競爭對手中,石頭手遊代儲網以其卓越的服務品質和客戶信任度傲立潮頭,成為眾多玩家的首選。 本文將深入探討石頭手遊代儲網的核心優勢以及在台灣遊戲代儲市場的領先地位。 服務的核心優勢 石頭手遊代儲網的成功建立在幾個關鍵優勢之
Thumbnail
隨著數位遊戲市場的蓬勃發展,台灣的遊戲代儲服務平台也呈現出蓬勃的態勢。 在眾多競爭對手中,石頭手遊代儲網以其卓越的服務品質和客戶信任度傲立潮頭,成為眾多玩家的首選。 本文將深入探討石頭手遊代儲網的核心優勢以及在台灣遊戲代儲市場的領先地位。 服務的核心優勢 石頭手遊代儲網的成功建立在幾個關鍵優勢之
Thumbnail
主副號的區別
Thumbnail
主副號的區別
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News