本期题目比较简单: 三个玩家斗地主,每人17张牌,留3张底。 试设置一个按钮,每点击一次,在A2:C18(甲乙丙),D2:D4(底)随机生成一副斗地主牌局,如上图所示。 要求一定是花色和点数准确,随机排列。(花色符号可在字体 Arial Unicode MS中寻找) 1. 完成以上功能得2分 2 如果能动态演示发牌过程(间隔0.2秒),加1分 3 优秀代码还可获1分奖励 附: 符号字体 Arial Unicode MS UNICODE 编码: 王的符号: 265B 黑桃: 2660 红桃: 2665 草花: 2663 方块: 2666 总结: 本期题目确实比较简单。 动态发牌过程,统计了一下,大致有WAIT方法,API SLEEP方法,API SETTIMER,KILLTIMER方法,TIMER方法。WAIT方法精度不够。 花色设置有的网友先予存后复制的方法,这不是题目的初衷,怪我没说清楚。 最近比较忙,今天才总结评分,请大家谅解。 附我的代码: Sub doudizhu() Dim i As Byte, N As Byte, K As Byte, CARD As New Collection, t As Single [A2:D18].Clear [A2:D18].Font.Name = "Arial Unicode MS" [A2:D18].Font.Size = 16 CARD.Add "3[&王" CARD.Add "0U&王" For i = 0 To 51 CARD.Add 3 * (i \ 26) & Mid("`cef", i \ 13 + 1, 1) & "&" & Replace(Mid("0A23456789JQK", 1 + i Mod 13, 1), "0", "10") Next Randomize For i = 0 To 50 t = Timer Do While Timer - t < 0.2 Loop K = Int(CARD.Count * Rnd) + 1 [a2].Offset(i \ 3, i Mod 3) = StrConv(Mid(CARD(K), 2, 2), vbFromUnicode) & Mid(CARD(K), 4) [a2].Offset(i \ 3, i Mod 3).Font.ColorIndex = Left(CARD(K), 1) CARD.Remove K Next For i = 1 To 3 [D1].Offset(i, 0) = StrConv(Mid(CARD(i), 2, 2), vbFromUnicode) & Mid(CARD(i), 4) [D1].Offset(i, 0).Font.ColorIndex = Left(CARD(i), 1) Next End Sub
[此贴子已经被作者于2006-10-11 14:44:02编辑过] |