ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:85.55KB ,
资源ID:4367173      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4367173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(瞬间记忆力大考验.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

瞬间记忆力大考验.docx

1、瞬间记忆力大考验瞬间记忆力大考验一、课题内容和要求课题内容:根据游戏难度,随机产生一个4*4或4*5或6*6的二维数组,填入不同的符号,测试者通过输入坐标,指定记忆中相同的两个(或三个)符号的位置。正确,则显示符号对应图形,不正确则显示图形后随机关闭(显示时间为1秒)。记录完成猜测的时间并保留成绩,设置排行榜。要求:1.图形组合的瞬间停留,利用菜单提供初级(4*4)、中级(4*5)、高级(6*6)的测试项目。高级中图形为每组3个,共12组图案。2. 定义用户的结构体,用于记录不同用户的密码、测试成绩,并进行排名。3提供相应用户密码的安全测试。1)如果密码长度小于 6 位,则不安全 2)如果组成

2、密码的字符只有一类,则不安全 3)如果组成密码的字符有两类,则为中度安全 4)如果组成密码的字符有三类或以上,则为安全 5)通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。4用户游戏信息以文件形式保存。二、需求分析【1】可操作的主菜单:输出主菜单,用于显示以选择游戏中不同的功能选项。根据玩家输入的选项来运行不同的功能,运行不同的函数。【2】查看游戏排行榜【3】清空游戏排行榜【4】注册游戏账号【5】用游戏账号登陆进行游戏【6】4*4,4*5,6*6的记忆游戏。可方便的升级到任意大小的记忆游戏。【7】查看自己所有的游戏记录(按时间顺序)【8】游戏中有倒计时功能【9】提示用户密码强

3、度功能【10】输入密码是关闭回显 【11】保存所有信息到文件。程序关闭后,重新打开,信息不会丢失。三、概要设计本程序包含一个主体模块,另包括三个子模块,密码强度检验模块、游戏难度选择模块和菜单模块。游戏开始后,游戏者需先通过以上两个子模块分别设置密码和选择游戏难度,之后根据游戏者的选择进行不同难度游戏。游戏随机产生一个4*4或4*5或6*6的二维数组,相应地填入8对或10对或12对不同的符号,测试者通过输入坐标,指定记忆中相同的两个符号的位置。正确,则显示符号对应图形,不正确则显示图形后随机关闭(显示时间为1秒)。最后记录完成猜测的时间,并保留成绩到指定文件夹。密码强度检验模块游戏难度选择模块

4、四、源程序代码(部分)#include #include #include #include #define TRUE 1#define FALSE 0 格式化时间函数 YYYY.MM.DD hh:mm:ss */char _format_time_40; char* getFormatTime(long t) strftime(_format_time_,sizeof(_format_time_)/sizeof(char),%Y.%m.%d %H:%M:%S,gmtime(&t); return _format_time_; / 字符最多分类种数 #define CHAR_MAX_TYPES

5、 4/*判断字符分类函数 数字、大写字母、小写字母和其它符号为四类不同的字符。*/int getCharType(char ch) if(ch=0 & ch=a & ch=A & ch=Z) return 2; else return 3; / 密码分类等级名称 char PASSWORD_SECURITY_QUOTIETY_NAME10=不安全,中度安全,安全;int getPasswordSecurityQuotiety(char pass) / 密码中字符种类 int charTypeNum = 0,isCharTypeExistedCHAR_MAX_TYPES=0; int i; if

6、(strlen(pass)6) return 0; else / 初始化 for(i=0;iCHAR_MAX_TYPES;i+) isCharTypeExistedi = FALSE; / 统计字符种类 for(i=0;i= 3) return 2; / 输入密码是特别的回显字符 #define PASSWORD_SPECIAL_CHAR * / 输入密码函数,关闭回显 void inputPassword(char str) char ch; int i=0; fflush(stdin); while(ch=getch()!=r) / 退格键 if(ch=8 & i0) printf(b b

7、); i-; continue; stri+ = ch; printf(*); printf(n); stri+=0;/ 二维坐标 struct Point int x,y; /*记忆图形结构体 */ 二维字符数组的最大尺寸 #define CHAR_ARRAY_MAX_SIZE 6/ 二维字符数组中一组字符的大小#define CHAR_ARRAY_MAX_GROUP_SIZE 3/ 可以存放到二维数组中的符号 char CHAR_ARRAY_AVAILABLE_SHOW_CHAR = 0,1,2,3,4,5,6,7,8,9, a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,

8、q,r,s,t,u,v,w,x,y,z, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z, !,#,$,%,&,(,),-,_,+,=, ;/ 用来遮掩二维数组中的符号的特定符号 #define CHAR_ARRAY_SPECIAL_SHIELD_CHAR */ 用来表示二维数组中特定位置没有符号的特定符号 #define CHAR_ARRAY_SPECIAL_EMPTY_CHAR 0 / 要记忆的二维字符数组 struct CharArray / 要记忆的二维字符数组 char arrayCHAR_ARRAY_MAX_SIZECHAR_

9、ARRAY_MAX_SIZE; / 图形是否被关闭标记 int isShieldCHAR_ARRAY_MAX_SIZECHAR_ARRAY_MAX_SIZE; / 要记忆的二维字符数组的高 int height; / 要记忆的二维字符数组的宽 int width; / 要记忆的二维字符数组的每组字符数 int groupSize;/ 初始化 void initCharArray(struct CharArray* charArray,int h,int w,int s);/ 打开全部图形void setCharArrayAllShow(struct CharArray* charArray);

10、/ 关闭全部图形void setCharArrayAllShield(struct CharArray* charArray);/ 指定位置的图形的状态 void setCharArrayState(struct CharArray* charArray,int state,struct Point points,int n);/ 判断二维数组中是不是全部图形都可见 int isCharArrayAllShow(struct CharArray* charArray);/ 判断指定的一组位置上的图形是否相同 int isCharArraySameCharAtPoints(struct Char

11、Array* charArray,struct Point points,int n);/ 在屏幕显示二维字符数组void showCharArray(struct CharArray* charArray,int showTime); / 初始化 void initCharArray(struct CharArray* charArray,int h,int w,int s) int i,j,k; int isFind; char ch; int x,y; charArray-height = h; charArray-width = w; charArray-groupSize = s;

12、srand(time(NULL); memset(charArray-array,CHAR_ARRAY_SPECIAL_EMPTY_CHAR,sizeof(charArray-array); for(k=0;kheight*charArray-width/charArray-groupSize;k+) / 随机产生一个字符 do ch = CHAR_ARRAY_AVAILABLE_SHOW_CHARrand()%sizeof(CHAR_ARRAY_AVAILABLE_SHOW_CHAR); isFind = FALSE; for(i=0;iheight&!isFind;i+) for(j=0;

13、jwidth&!isFind;j+) if(charArray-arrayij = ch) isFind = TRUE; while(isFind = TRUE); for(i=0;igroupSize;i+) / 随机产生一个坐标 do x = rand()%charArray-width; y = rand()%charArray-height; while(charArray-arrayyx != CHAR_ARRAY_SPECIAL_EMPTY_CHAR); / 填入字符 charArray-arrayyx=ch; / 关闭全部图形 setCharArrayAllShield(char

14、Array);/ 打开全部图形void setCharArrayAllShow(struct CharArray* charArray) int i,j; for(i=0;iheight;i+) for(j=0;jwidth;j+) charArray-isShieldij = FALSE; / 关闭全部图形void setCharArrayAllShield(struct CharArray* charArray) int i,j; for(i=0;iheight;i+) for(j=0;jwidth;j+) charArray-isShieldij = TRUE; / 判断指定的一组位置上

15、的图形是否相同 int isCharArraySameCharAtPoints(struct CharArray* charArray,struct Point points,int n) int i,j; char ch = charArray-arraypoints0.ypoints0.x; / 判读点是否重合 for(i=0;in;i+) for(j=i+1;jn;j+) if(pointsi.x = pointsj.x & pointsi.y = pointsj.y) return FALSE; / 判读点所在图形是否相同 for(i=1;iarraypointsi.ypointsi.

16、x != ch) return FALSE; return TRUE; / 判断二维数组中是不是全部图形都可见 int isCharArrayAllShow(struct CharArray* charArray) int i,j; for(i=0;iheight;i+) for(j=0;jwidth;j+) if(charArray-isShieldij = TRUE) return FALSE; return TRUE; / 在屏幕显示二维字符数组void showCharArray(struct CharArray* charArray,int showTime) int i,j; ti

17、me_t startTime , currentTime ,tempTime; / 清屏 system(cls); printf(*n); printf(*记忆图形n); printf(*n); for(i=0;iheight;i+) for(j=0;jwidth;j+) if(charArray-isShieldij) printf(%c ,CHAR_ARRAY_SPECIAL_SHIELD_CHAR); else printf(%c ,charArray-arrayij); printf(n); printf(*n); startTime = time(NULL); tempTime =

18、startTime; currentTime = startTime; while(currentTime - startTime charArray); showCharArray(&game-charArray,GAME_MAX_CHAR_ARRAY_FIRST_SHOW_TIME); / 遮蔽二维数组图形 setCharArrayAllShield(&game-charArray); showCharArray(&game-charArray,0); / 没有达到猜的次数的上限,继续 while(game-guessPointsTime GAME_MAX_GUESS_TIME) / 让玩

19、家指定相同字符所在的坐标 for(i=0;icharArray.groupSize;i+) / 输入行坐标 y do printf(*输入相同图形所在的第 %d 个行坐标,范围1,%d:,i+1,game-charArray.height); scanf(%d,&game-guessPointsgame-guessPointsTimei.y); / 用户输入的坐标是从 1 开始的,程序中的坐标是从 0 开始的,要修正 game-guessPointsgame-guessPointsTimei.y-; while(game-guessPointsgame-guessPointsTimei.y g

20、uessPointsgame-guessPointsTimei.y = game-charArray.height); / 输入列坐标 x do printf(*输入相同图形所在的第 %d 个列坐标,范围1,%d:,i+1,game-charArray.width); scanf(%d,&game-guessPointsgame-guessPointsTimei.x); / 用户输入的坐标是从 1 开始的,程序中的坐标是从 0 开始的,要修正 game-guessPointsgame-guessPointsTimei.x-; while(game-guessPointsgame-guessPo

21、intsTimei.y guessPointsgame-guessPointsTimei.y = game-charArray.width); printf(n); / 显示玩家指定位置的二维数组图形 setCharArrayState(&game-charArray,FALSE,game-guessPointsgame-guessPointsTime,game-charArray.groupSize); showCharArray(&game-charArray,0); / 判断指定位置的图形是否相同 if(isCharArraySameCharAtPoints(&game-charArra

22、y,game-guessPointsgame-guessPointsTime,game-charArray.groupSize) / 记录玩家本次猜字符成功 game-guessPointsResultgame-guessPointsTime = TRUE; else / 记录玩家本次猜字符失败 game-guessPointsResultgame-guessPointsTime = FALSE; / 显示一会玩家【指定错误】的字符组 showCharArray(&game-charArray,GAME_MAX_CHAR_ARRAY_SHOW_TIME); / 重新遮盖字符玩家【指定错误】的字符组 setCharArrayState(&game-charArray,TRUE,game-guessPointsgame-guessPointsTime,game-charArray.groupS

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1