- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
综合实例——猜纸牌游戏
问题描述:
该游戏使用52张扑克牌,黑桃、红桃、方片和梅花各13张(A、2,3,4,…,10,J,Q,K)。游戏规则为:计算机随机抽取8张纸牌,以背面显示在屏幕上。使用者可使用鼠标左键单击翻看某张纸牌(最多翻看8张次,看下张牌时以前翻开的牌会自动翻回去)。从翻开第一张牌时开始计时,10秒钟后自动弹出一个对话框,其中显示下列问题之一,并可接受使用者的回答:
这八张牌中有几张是红桃(黑桃,方块,梅花)?
这八张牌中红桃(黑桃,方块,梅花)的点数(A=1,J=Q=K=0)之和是多少?
这八张牌中红桃(黑桃,方块,梅花)的大牌(J,Q,K,A)共几张?
这八张牌中共有几张大牌(J,Q,K,A)?
如果回答正确,则在总分上加10分;否则扣10分。此时游戏会将所有纸牌翻到正面,供使用者复查。
再单击鼠标左键则重新发牌开始新的一局。
编程要求:
(1)扑克牌显示正确,比例恰当。所有牌的背面应有统一的花纹,牌面可使用简化方法显示,即在牌中央显示一个表示花色的图案(黑桃、红桃、梅花和方片,应使用位图资源),牌面左上角显示点数(2~10,J,Q,K,A)。黑桃和梅花用黑色,红桃和方片用红色。在屏幕上分两行共显示8张纸牌,每行4张。
(2)在适当位置显示提示信息,包括已进行的局数、当前得分、当前剩余时间和已翻开的纸牌张数。
(3)用鼠标左键单击某张纸牌可将其翻转(正面变反面或反面变正面)。在一局中最多可翻开8张牌。
(4)第一次单击鼠标左键时开始计时,10秒钟后自动弹出一对话框用于提问和接受使用者的回答。要求对话框设计美观大方,尺寸合理。对话框下方有一个编辑控件(设置为数值属性),用于输入用户的回答。
(5)对话框上能正确显示问题,而具体显示哪个题目,题目中是什么花色或什么大牌均应随机确定。
(6)用户回答问题后将所有纸牌翻为正面,用户再次单击鼠标左键后开始新的一局。
要点分析:
本题主要涉及到的知识点有:鼠标消息、对话框、定时器消息、位图显示、随机函数的使用,同时还有数值和字符串之间的转换,位图显示位置的计算以及较多的逻辑判断工作,涉及的内容较多,难度较大。
该题的难点在于纸牌的显示、纸牌产生的随机性以及提问问题的产生和判断等。
纸牌的背面可以用一个位图显示,而显示正面较为复杂,因为有52张不同的牌,如果使用52个不同的位图表示,工作量就太大了。这里把显示纸牌的正面分成两个部分,首先用四个位图表示四种不同花色的纸牌,然后用A、2~10、J、Q、K在位图的左上角显示表示不同的点,从而显示出一个完整的纸牌正面。
这里给出的随机产生纸牌的算法非常简单,即用0~51这52个整数来表示纸牌,也就是说,0~12表示梅花A~K、13~25表示方块A~K,26~38表示红桃A~K,39~51表示黑桃A~K。这样,表示纸牌的整数对13取模就得到纸牌的花色(0~3分别表示梅花、方块、红桃和黑桃),除以13得到的余数就是纸牌的点数。
问题和答案通过一个对话框表示出来,而相关的操作则都在定时器消息处理函数中进行。问题的产生涉及到两个随机数,一个产生问题的类型,一个产生问题中纸牌的花色,而相关问题的正确答案在纸牌产生时就已经计算出来,就等着根据不同的问题和答题分蘖节 的答案进行判断了。
?
解题步骤:
(1)首先用AppWizard生成一个名为PuzzleCard的SD1程序框架,各选项均可用缺省设置。
(2)使用Developer Studio菜单的Insert / Resource…选项调出Insert Source对话框,为项目添加5个位图资源,分别表示纸牌的背面和四种花色纸牌的正面。相应位图的资源ID分别为IDB_BACK、IDB_CLUB、IDB_DIAMOND、IDB_HEART和IDB_SPADE。
(3)使用Developer Studio菜单的Insert / Resource…选项调出Insert Source对话框,为项目添加一个对话框模板资源。
(4)修改对话框模板的标识符ID为IDD-QUESTION,适当调整其大小,并在其上添加两个静态文本控件,其中表示问题的文本近代件ID改为IDC_Question, Caption改为空;另一个静态文本控件的Caption改“答案”。添加一个编辑控件,ID改为IDC_Answer。
(5)利用ClassWizard自动建立对话框类。用Ctrl+W键可直接调出ClassWizard,也可以通过Developer Studio菜单的View/ClassWizard…选项调出。进入ClassWizard后,它会发现已建立的对话框模板资源,并弹出一个对话框询问是否要为该对话框模板建立类。按下“OK”按钮,会弹出New Class对话框,在Name栏填写对话框类的名称CQuestion后按“O
文档评论(0)