系統開發-05介面調整

閱讀時間約 10 分鐘

先來修改莊家部分,發完牌後,莊家第一章牌應該是蓋起來的,所以我們來調整一下UpdateUI()即可

protected void UpdateUI()
{

//......以上省略....

dealer = (Player)Session["Dealer"];

//顯示莊家手牌
for (int i = 0; i < dealer.cards.Count; i++)
{
//**新增**
if (i == 0) //顯示的第一張牌改為蓋幾來的圖片
{
lab_dealer.Text += $"<img src='./images/BACK.png'>";
}
else
{
lab_dealer.Text += $"<img src='./images/{dealer.cards[i].Rank}-{dealer.cards[i].Suit}.png'>";
}
}
}

執行結果:

raw-image


但以上有個問題,就是牌局結束後,莊家的蓋牌並不會顯示,所以再來修改一下

新增遊戲狀態(status),分為遊戲中(status=0)和遊戲結束(status=1)兩個狀態,除了遊戲初始化設定(status=0)以外將所有的會結束牌局的地方(玩家爆牌與停牌)加入遊戲結束(status=1)

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

//**新增**
status = 0;
Session["Status"] = status;

//初始發牌
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 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"];
//**新增 **
status = (int)Session["Status"]; //取得status

//顯示莊家手牌
for (int i = 0; i < dealer.cards.Count; i++)
{
//**新增**
if (i == 0 && status == 0) //加入status判斷,遊戲結束(status=1)不顯示蓋牌
{
lab_dealer.Text += $"<img src='./images/BACK.png'>";
}
else
{
lab_dealer.Text += $"<img src='./images/{dealer.cards[i].Rank}-{dealer.cards[i].Suit}.png'>";
}
}
}

protected void btn_hit_Click(object sender, EventArgs e)
{
DrawForPlayer();

if (player.IsBusted())
{
lab_msg.Text = $"{player.CalculatePoints()}點,你爆掉了! 莊家贏!";

//**新增**
status = 1;
Session["Status"] = status;

//牌局結束,不能再按發牌和停牌
btn_hit.Enabled = false;
btn_stand.Enabled = false;
btn_newgame.Enabled = true;
}

UpdateUI();
}

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()}點! 雙方平手!";
}

//**新增**
status = 1;
Session["Status"] = status;

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

UpdateUI();
}

執行結果:

raw-image
raw-image

以上已調整好遊戲的介面,算是一個完整的遊戲了。

後續再新增一下遊戲的回和數,與玩家輸贏次數。

    avatar-img
    0會員
    19內容數
    FIRE
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    最近幫忙弄了貼圖, 寫個心得來小小紀念一下~ 不囉嗦,先上圖~
    Thumbnail
    今天的除權息特調總算是爭氣了XDDD 正式進入六月份,明細會重新開一張讓大家可以繼續看呦~
    Thumbnail
    進到管理介面更新就完成了……..沒甚麼可以多說的。
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    最近幫忙弄了貼圖, 寫個心得來小小紀念一下~ 不囉嗦,先上圖~
    Thumbnail
    今天的除權息特調總算是爭氣了XDDD 正式進入六月份,明細會重新開一張讓大家可以繼續看呦~
    Thumbnail
    進到管理介面更新就完成了……..沒甚麼可以多說的。