我的c#课程设计报告书(2)
2.4. 实现效果
//实现了按钮的可用于不可用
//下面的这张图实现了在发牌过程中进行判断是否超过21点的效果,超过了 就显示结果,结束游戏而也只有Again这个键可用,其他的不可用了。
三、<点数计算及显示>功能的设计与实现
3.1. 功能设计
电脑和玩家的点数的设计用于显示在linklabel1和linklabel2中,我们的牌是放在了imagelist中的。点数的根本计算的思路是根据数组的下标的数,然后通过下标与13的余数再加上一九可以算出某张牌的对应的点数,而且J、Q、K的点数大小都按照大小为10来计算的。当每出一张牌的时候就要把牌的相应的点数相加起来,然后显示在对应的linklabel中。
3.2. 代码实现
double sum1 = 0, sum2 = 0;//sum1代表庄家,sum2代表玩家。
private void button4_Click_1(object sender, EventArgs e)//说明了sum2在整个代码中的联系 {
sum2 = a+b;
linkLabel2.Text = sum2.ToString(); }
private void button5_Click_1(object sender, EventArgs e) {
sum2 +=c;
linkLabel2.Text = sum2.ToString(); }
c = RandKey7 % 13 + 1 ; //计算点数 while(c > 10)
c = 10; //J、Q、K按照点数为10来计算 sum2 +=c; //把每出一张牌的点数相加起来 linkLabel2.Text = sum2.ToString(); //把点数显示在linklabel上
3.3. 技术细节
对于各个变量的声明要放在整个类的上面,而不单单是放在某一个方法中,如果就是放在了某个方法中,虽然说我们可以每次都在方法中声明一下,但是有的变量是要在整个类及每个方法中都是有联系的使用的,比如说sum1和sum2,它们在button4中得到了结果,而这个结果也要用在button5中的及还有更多方法中。
3.4. 实现效果
//实现了把点数显示在linklabel上
//下面的图实现了J Q K都是代表10点
四、<结果的判断及其他按钮>功能的设计与实现
4.1. 功能设计
用了一个textbox来显示最后胜负的结果的,这个主要是根据各自的点数来判断结果的。从Go以后,玩家出牌的话就要计算玩家是否有可能总的点数大于21点,就要在textbox上面显示“玩家爆了,电脑赢了”的结果,然后游戏就可以结束了。而如果玩家在不要牌之前的牌的点数总和就大于21点,textbox上就不显示任何结果。在电脑出牌的时候同样也要判断电脑方的总店书是否大于
21点,大于的话就显示“电脑爆了,玩家赢了”,否则两方就进行比较,在显示相应的结果即可。除了这几个主要的按钮,我还设计了供游戏者参考的游戏规则,这个游戏规则按钮的作用就在这里了。
4.2. 代码实现
if (sum2 > 21)//玩家发牌的时候进行的比较,看其是否大于21点 {
textBox3.Text = "玩家你爆了,电脑赢了,你要加油啦!"; button4.Enabled = false; button5.Enabled = false; button6.Enabled = false; button7.Enabled = true; button10.Enabled = false; }
if(sum1>21)
textBox3.Text = "电脑爆了,玩家你赢了!"; else
{
if (sum1 > sum2)
textBox3.Text = "电脑赢了,你要加油哦!"; else if (sum1 ==sum2)
textBox3.Text = "平局"; else
textBox3.Text = "玩家你赢了哦,继续加油!"; }
4.3. 技术细节
双方发两张牌的时候不用比较因为两张牌的最大点数也不回超过20点的,但是到发第三张的时候就一定要进行比较,此时就有能有21点的可能性,只要有了大于21点的情况,就会结束游戏,如果不判断就会使游戏失去其21点的真正的目的。
4.4. 实现效果
五、遇到的问题和解决方法
A)一开始是按钮的问题,当玩家发牌的时候,我只能发一张牌出去,然后再想发牌的时候,按钮就不好用了;我的解决方法是用了两个重复的按钮,一个用的时候另一个是不可用的,这样两个按钮就交互使用而不会出现同时出现的状况。B)无法计算点数,每次计算出来都只能得出此时单张牌的面值而不是同时也能把前面出过的牌的点数也加上去;解决这个问题的方法是要把计算总数的这个变量放在整个类的上面而不是单单是放在某个方法里面,这样过后每次sum1和sum2都可以连续再用了。C)还有就是把获得的点数放到linklabel中时出现错误,我是直接就用linklabel.text=”sum1”这个代码的;而最终的解决方法是linklabel.text=sum1.tostring();以至于这个问题就可以解决了。D)把牌放在imagelist是没按照一定的顺序,以致我在随机发牌的时候,虽然有能计算点数的代码,但是随机出现的牌根本就不能和点数相对应;最后的解决办法是把牌按相同的花色从A-K都一次向下排列就可以了
六、总结
对于做这个游戏程序,我有几点感受。首先,是自己能充分发现自己的问题,我在做这个游戏时就发现了许多我自己无法解决的问题,但针对这些问题,我又必须要寻找解决的办法解决。能解决一点就能收获一点,或者是通过同学的指教,或者是自己去查找一些资料都能让我有意外的收获。在做这个小游戏的整个过程中,可以说花了我很长时间,也许对于别人来说着知识一个简单的小任务,但对于我来说,我对编程的基础还不算怎么好,可我能一步一步的做完,还在最后做成功了,使我深深的感受到了一种喜悦的感觉。
第二就是很能体会到一种合作的精神,做这个游戏的我们几个女生都在开始的一个阶段陷入了困境,因为我们也好像找不到什么平时讲过的东西可以参考,而且我们对编程这个东西也不是怎么的了解,然后就相互的交流着,只要有一个人能发现点什么就会在一起讨论,最后是我们就通过这样的一步一步的发现与解决而解决了最终的问题。
最后的一点就是发现了学习还是要与实践结合才有用,我们平时学的都是理论,虽说也有上机课,但是老师都会把那些程序代码给我们,而我们就只照上面写,那时候我们根本就不想思考,以致我感觉我现在什么都不会似的。所以平时学的东西要自己主动的去操作,而不总要等老师布置,也许老师就不会布置,那我们要想学好,还是离不开主动的。
附录:参考文献
1.c#.NET程序设计项目教程 2.c#程序设计-基础教程与实验指导
…… 此处隐藏:1221字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




