[問題] 想請問一個迴圈問題

看板C_Sharp作者 (tsutsu)時間10年前 (2013/10/14 13:32), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
小妹是剛學兩個禮拜的C#新手 經理給了一個作業 說要做簡易的大老二 我目前只寫到發牌 可是發出來的排有點怪異 希望各位版友可以不吝指教 namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //定義52張撲克牌 int[] poker = new int[53]; // poker[0]是臨時變量(交換的手)所以要設到53 private void btnStart_Click(object sender, EventArgs e) { for (int i = 1; i <= 52; i++) // poker[0]是臨時變量所以不寫進去 poker[i] = i; //一開始編號第n張牌就是對應照順序的第n張牌 Random rnd = new Random((int)DateTime.Now.Ticks); int j = 0; for (int i = 1; i < 53; i++) //用交換的概念來洗牌(三個交換) { j = rnd.Next(1, 53); poker[0] = poker[53 - i]; poker[53 - i] = poker[j]; poker[j] = poker[0]; } int[,] player = new int[4, 13]; //有四個玩家,各有十三張牌(發十三 輪) for (int i = 0; i < 52; i++) { int x = i % 4; // 表示第幾個玩家;取餘 int y = i / 4; // 表示發第幾張牌(輪);取商 player[x, y] = poker[i + 1]; //第x位玩家的第y張牌是poker[i+1] 對應的牌 int f = player[x, y] % 4;//判定花色 string F = ""; switch (f) { case 0: F = "C"; //梅花 break; case 1: F = "H"; //紅心 break; case 2: F = "D"; //方塊 break; case 3: F = "S"; //黑桃 break; } if (x == 0) { label1.Text = F + Convert.ToString(player[x, 0]); label2.Text = F + Convert.ToString(player[x, 1]); label3.Text = F + Convert.ToString(player[x, 2]); label4.Text = F + Convert.ToString(player[x, 3]); label5.Text = F + Convert.ToString(player[x, 4]); label6.Text = F + Convert.ToString(player[x, 5]); label7.Text = F + Convert.ToString(player[x, 6]); label8.Text = F + Convert.ToString(player[x, 7]); label9.Text = F + Convert.ToString(player[x, 8]); label10.Text = F + Convert.ToString(player[x, 9]); label11.Text = F + Convert.ToString(player[x, 10]); label12.Text = F + Convert.ToString(player[x, 11]); label13.Text = F + Convert.ToString(player[x, 12]); } 省略x==1至x==3 btnStart.Enabled = false; } 發出來的排變成這樣 http://ppt.cc/OFv1 前面的英文字代表的是花色 可是我不懂為什麼這樣子他們的花色通通變成一樣的'~' 拜託各位版友指教 謝謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.193.222

10/14 14:00, , 1F
我還在找為什麼 不過 我建議 你把撲克牌用class寫
10/14 14:00, 1F

10/14 14:01, , 2F
宣告一個class 裡面存 一張紙牌的資料(花色跟點數)
10/14 14:01, 2F

10/14 14:03, , 3F
再利用這class 宣告出一個52大小的陣列 後面好做很多
10/14 14:03, 3F

10/14 14:03, , 4F
如果有不懂的問題 站內信吧
10/14 14:03, 4F

10/14 16:41, , 5F
改label寫在for裡,每發一張牌就會以該張花色蓋掉全部Label
10/14 16:41, 5F

10/14 23:17, , 6F
因為你在迴圈內填LABEL,所以F會是迴圈內最後一個
10/14 23:17, 6F
文章代碼(AID): #1IMu7YHQ (C_Sharp)