C语言猜拳游戏代码及分析
1.编写目的
小时候,我们喜欢以猜拳来赢得奖励。
现在,我们希望能开发一个猜拳的游戏。
2.定义
需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。而且其很强的交互性及简单易行性,可以让人在很短时间内熟悉它的操作方法,不论用户文化水平如何,都会很轻松的学会使用它。
2.任务概述
1.目标
2.用户的特点
由于本程序简单易操作,交互性好,对用户没什么特别要求。一般用户经过几分钟练系都可以熟悉本系统的规则。
3.系统功能示例
3.需求细则
1. 对功能的规定
1.1 界面友好
属性:必选
描述:用户的一些操作前后做出一些必要的提示或确认。所有完成的功能都需要友好,例如:
● 增加失败提示;
● 删除失败和成功提示、删除前的确认;
● 修改失败和成功提示、修改前/后的确认;
● 查找失败提示、查找成功的确认;
● 退出系统时,要提示是否退出;
● 其它方面的界面问题;
1.2 用户注册
属性:必选
描述:登录界面可以用户注册,注册信息包含用户名和密码,例如:
● 不能使用已经存在的用户名
● 密码不能少于6个字符
1.3 用户登录
属性:必选
描述:用户通过登录界面进行登录,必须输入正确的用户名和密码方可进入系统,例如:
● 提示输入用户名
● 提示输入密码
● 用户名和密码验证,都符合则进入系统,不然回到第一步,超过三次登录,则提示登录次数超过三次,退出系统
1.4 开始游戏
属性:必选
描述:金额大于1的用户可以开始游戏
● 下注:提示用户下注的金额数
● 猜拳:(必须先下注,如果用户下注金额小于等于0,不能进行游戏)与电脑进行猜拳游戏,如果猜输了,扣除你的金额(由下注决定),胜利将随机获得1~5倍的下注金额奖励
n提示:电脑随机出拳,胜利奖励也是随机的,例如:
n随机获得1~5数字代码:
nsrand((unsigned)time(NULL));
nint radio = rand() % 5 + 1;//radio 为随机 1~5的整数
● 如果金额少于下注数,将不能进行猜拳,給出充值提示
1.5 充值
属性:必选
描述:用户可以进行充值
● 充值金额
● 充值的时候,必须输入充值密码(由5个字符组成,随机包括数字0~9和所有小写字母)
● 如果充值密码正确,充值成功,不然充值失败
1.6 修改用户信息
属性:必选
描述:用户可以注销(删除)自己的账户、或者修改个人信息
● 修改个人信息
n 修改用户密码
● 注销用户(本人)
n 删除用户所有信息(删除完毕将返回登录界面,用户账号已经不存在)
1.7 查看用户信息
属性:必选
描述:用户登录成功后,可以选择查看用户自己信息或者所有用户信息
● 查看用户自己信息:(本人)用户名 密码 金额 胜率
● 查看所有用户信息:所有用户名 金额 胜率
1.8 排序
属性:必选
描述:用户可以对所有用户信息进行排序操作,便于查看
● 金额排序
● 胜率排序
对性能的规定
本系统在设计方面本着方便、实用的宗旨,性能方面应遵循如下原则:
● 执行效率(时间): 软件运行应该尽量高效;避免没有必要的循环处理、重复处理;
● 资源损耗(空间):设计尽量节约资源(内存、数组、链表等);不用的资源要及时释放;
● 初始化: 变量、数组、内存块;
● 健壮性:不能出现野指针、内存泄露、数组越界访问等等:
◎ 声明指针后,立即将指针设置为NULL,防止产生“野指针”;
◎ 函数的入参必须进行有效性判断;用户输入、函数返回值(如果用到的话)都要判断;
◎ switch-case一定要有default;if-else if等后要有else,除非if满足后返回或退出;
◎ 不允许出现goto语句;
◎ 数组的下标不要溢出。
3. 对排版的规定
● 缩进要对齐;
● 长行拆分;
● 二元操作符的前后应当加空格,包括如下操作符:
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+="">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<","^" 等;
● 空行:
◎ 声明之后、每个函数定义结束之后都要加1行空行;
◎ 逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔;
◎ 一行代码只做一件事情;
◎ "if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }";
4. 对可维护性的规定
对可维护性的最终要求:别人能够轻松上手你的代码。
● 结构清晰:
◎ 模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.c文件,用makefile;
◎ 封装:一个函数只做一件事
C语言猜拳游戏代码及分 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)