21点游戏设计报告
学院 机械学院 班级 机设C097 学号 095596 姓名 王志光 成绩
一、设计思路
1.要达到的目的
①完成程序的基本要求
②对循环和选择结构有更深的理解
③对控件的属性及使用有了更广泛的了解
④提高了自己综合利用VB语言进行程序设计的能力 2.关键问题的解决
①对赋值条件语句的编写 ②判断结果的分支结构的编写 ③基本控件及控件数组的使用 ④扑克牌花色的显示 ⑤编写控制游戏的菜单 ⑥后期调试
二、模块之间的调用关系,或程序流程图
菜单 重新开始 开始 退出 初始化 随机发牌 记录比赛数据 计算结果 胜 负 平
21点游戏课程设计报告(VB) 编号:36
三、部分程序关键源代码及注释
If cardnum(0) < 5 Then '向玩家一发牌数小于5 rndcard (0) '随机发牌 End If
If cardnum(0) = 5 And cardnum(1) = 5 Then '玩家一和玩家二发牌数都到5 a = checkwin() '开始计算点数 End If
Function change(cards As Integer) As Single cards = cards Mod 13 cards = cards + 1 If cards < 11 Then change = cards 点数算法 Else change = 0.5 End If End Function Dim m As Integer, n As Integer times = times + 1 For m = 0 To 1 For n = 0 To cardnum(m) - 1 carddian(m) = carddian(m) + change(card(m, n)) 判断胜负的方法 Next n Next m Label15.Caption = name1 + \" \" + CStr(carddian(0)) + \"点\" Label16.Caption = name2 + \" \" + CStr(carddian(1)) + \"点\" If carddian(0) > 21 And carddian(1) > 21 Then
21点游戏课程设计报告(VB) 编号:36
Label17.Caption = \"本局双方同时输\" ElseIf carddian(0) > 21 Then
Label17.Caption = \"本局\" + name2 + \"获胜\" win2 = win2 + 1 ElseIf carddian(1) > 21 Then
Label17.Caption = \"本局\" + name1 + \"获胜\" win1 = win1 + 1
ElseIf carddian(0) = carddian(1) Then Label17.Caption = \"本局 平局\" ElseIf carddian(0) > carddian(1) Then
Label17.Caption = \"本局\" + name1 + \"获胜\" win1 = win1 + 1 Else
Label17.Caption = \"本局\" + name2 + \"获胜\" win2 = win2 + 1 End If
Frame3.Visible = True If times > jushu Then If win1 > win2 Then
Label18.Caption = \"本次游戏\" + name1 + \"获胜\" ElseIf win1 < win2 Then
Label18.Caption = \"本次游戏\" + name2 + \"获胜\" Else
Label18.Caption = \"本次游戏平局\" End If
Frame4.Visible = True End If
Function rndcard(i As Integer) As Integer '随机产生牌 Randomize
rndnum = Int(Rnd() * 52)
21点游戏课程设计报告(VB) 编号:36
Do While (cardval(rndnum) = 0) rndnum = Int(Rnd() * 52) Loop
cardval(rndnum) = 0 If i = 0 Then
card(i, cardnum(i)) = rndnum
Form1.Picture4(cardnum(i)).Picture = Form1.Picture1(rndnum) 将玩家1牌通过picture控件数组 ElseIf i = 1 Then
card(i, cardnum(i)) = rndnum
Form1.Picture5(cardnum(i)).Picture = Form1.Picture1(rndnum) End If
cardnum(i) = cardnum(i) + 1 End Function
四、设计方案的完善及目前存在的问题
1.设计方案要完善的地方
没有比赛规则说明,应该做的更完美 2. 目前存在的问题
程序中可能有冗余的地方,声明变量的范围可能还略有不足
五、本次设计的收获及心得体会
对控件的属性及使用有了更广泛的了解,提高了自己综合利用VB语言进行程序设计的能力, 增加了调试的经验,对VB有了更深刻的认识,同时也对它产生了浓厚的兴趣。
六、对该题目和VB设计的意见和建议
1. 对该题目的意见和建议
对比赛规则的陈述不是非常明确,希望对比赛规则的描述能够更加详细些。这将会更方便同学的理解。
2.对本次设计的意见和建议
本次设计,增强了对控件数组的使用,可是书上对控件数组介绍甚少,所以还未能熟练掌握。通过这次设计,发现了自身的许多不足之处,并且加以弥补。希望增加一些额外加分点,例如使用picturebox控件等等,这样既不会增加题目本身的难度,同时还可以给同学以更大的发挥空间。
因篇幅问题不能全部显示,请点此查看更多更全内容