[内附完整源码和文档] 基于mfc实现的21点小游戏

本文档详述了一个基于MFC的21点小游戏设计与实现过程,包括游戏规则、类设计、需求分析、数据设计、系统实现与调试。游戏规则简单,玩家与电脑对战,目标是使手牌点数接近但不超过21点。系统使用CDialog派生类实现,注重界面美观和用户体验,具备记录和保存功能。在开发过程中,解决了图片载入和皮肤设置等问题。

1.系统的介绍
1.1 设计的目的与意义
21点游戏是一款经典的扑克牌游戏,由古至今衍生的各种各样的规则和玩法,游戏的设计旨在为平淡的生活带来乐趣,以及最重要的,通过对游戏的设计来实现练习,实际操作,学习他人程序优点,通过研究,了解需求并设计程序,掌握设计课题的基本步骤和方法。

1.2 本设计的主要内容
程序使用较为简单的游戏规则:玩家与电脑对战,使用一副没有大小王的扑克,游戏开始后,起始发两张手牌,玩家可根据所持牌的点数选择继续要牌或开牌,使得自己牌的点数尽可能接近但不超过21点,玩家最多可要5张牌,开牌后最接近且不超过21点的一方为赢家,双方点数相同或双方点数均超过21点为平局。

要求实现游戏规则中的功能

要求基于对话框界面操作

界面美观,具有用户友好性

2.需求分析及设计
2.1 类的设计
根据游戏规则和MFC程序设计要求,程序的主要类为CDialog的派生类CMFC_GameDlg:

该类中主要的数据成员有以下几种:

玩家持牌信息user_card

电脑持牌信息com_card[]

玩家持牌的点数user_dot[]

电脑持牌点数com_dot[]

玩家持牌张数count

判断是否开牌的变量flag

该类中的主要成员函数有以下几种:

初始化函数Init(),用于给变量赋初值

电脑抽牌函数com_getcard(),利用srand生成随机函数种子,rand()函数根据种子生成随机数并对52取余,若得到余数不为了0且该牌编号未曾出现,则将这张牌的编号赋值给com_card[],表明电脑抽到一张牌

胜负判断函数Judge(),若双方点数一致或均超过21点,为平局,电脑点数较大且不超过21点,或电脑超过21点玩家超过21点则电脑胜,若非平局或电脑胜,则玩家胜

显示牌面函数show_card(),通过创建位图兼容设备,将电脑持牌信息com_card[]和玩家持牌信息user_card[]中对应编号与资源中ID一致的位图显示到屏幕上

显示点数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值