发牌程序的代码:
Imports System.Drawing Public Class Form1 Structure Poker Dim ID As Integer Dim Name As String End Structure Dim prePoker As List(Of Poker) Dim disorderPoker As List(Of Poker) Dim personPoker() As List(Of Poker) Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load prePoker = New List(Of Poker) ComboBox1.Text = "3" End Sub Private Sub initPoker(ByVal intPokerCount As Integer) Dim pokerColor As String Dim pokerName As String Dim poker_id As Integer Dim poker_name As String Dim poker As New Poker For i As Integer = 0 To intPokerCount poker_id = i Dim intPokerName As Integer = i \ 4 Select Case intPokerName Case 0 pokerName = "A" Case 1 To 8 pokerName = intPokerName.ToString Case 9 pokerName = "X" Case 10 pokerName = "J" Case 11 pokerName = "Q" Case 12 pokerName = "K" Case Else pokerName = "Joker" End Select Dim intPokerColor As Integer = i Mod 4 Select Case intPokerColor Case 0 pokerColor = "S" '-Spade Case 1 pokerColor = "H" '-Heart Case 2 pokerColor = "C" '-Club Case Else pokerColor = "D" '-Diamond End Select If pokerName = "Joker" Then If intPokerColor = 0 Then pokerColor = "B" '-Big Else pokerColor = "L" '-Little End If End If poker_name = pokerColor & " " & pokerName poker.ID = poker_id poker.Name = poker_name prePoker.Add(poker) Next End Sub Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click Dim intPokerCount As Integer Dim intPersonCount As Integer Select Case ComboBox1.Text Case "3" intPokerCount = 53 intPersonCount = 3 Case Else intPokerCount = 51 intPersonCount = 4 End Select Call initPoker(intPokerCount) disorderPoker = New List(Of Poker) Call distributePoker() ReDim personPoker(intPersonCount) For i As Integer = 0 To intPersonCount - 1 personPoker(i) = New List(Of Poker) Next Dim orderId As Integer For i As Integer = 0 To disorderPoker.Count - 1 orderId = i Mod intPersonCount personPoker(orderId).Add(disorderPoker.Item(i)) Next Call drawPoker() End Sub Private Sub distributePoker() Dim intPokerCount As Integer intPokerCount = prePoker.Count - 1 Dim rand_PokerIndex As Integer Dim randSeed As New Random(Now.Millisecond) For i As Integer = intPokerCount To 0 Step -1 rand_PokerIndex = randSeed.Next(i + 1) disorderPoker.Add(prePoker.Item(rand_PokerIndex)) prePoker.RemoveAt(rand_PokerIndex) Next End Sub Private Sub drawPoker() Dim imgPath As String = "" Dim imgFolder As String = Application.StartupPath & "\poker\" Dim g As Graphics = PictureBox1.CreateGraphics g.Clear(PictureBox1.BackColor) Dim intPersonCount As Integer = personPoker.GetUpperBound(0) Dim leftMargin As Integer = 10 Dim topMargin As Integer = 10 For i As Integer = 0 To intPersonCount - 1 For j As Integer = 0 To personPoker(i).Count - 1 imgPath = imgFolder & personPoker(i)(j).ID & ".jpg" Dim bmp As New Bitmap(imgPath) g.DrawImage(bmp,New Point(leftMargin + j * 30,topMargin + i * 60)) bmp.Dispose() Next Next g.Dispose() End Sub End Class
运行时:
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看@H_404_32@vb.net 教程 目录