瞬间记忆力大考验Word格式文档下载.docx
- 文档编号:17292558
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:28
- 大小:85.55KB
瞬间记忆力大考验Word格式文档下载.docx
《瞬间记忆力大考验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《瞬间记忆力大考验Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
time.h>
#defineTRUE1
#defineFALSE0
格式化时间函数
YYYY.MM.DDhh:
mm:
ss
*/
char__format_time__[40];
char*getFormatTime(longt)
{
strftime(__format_time__,sizeof(__format_time__)/sizeof(char),"
%Y.%m.%d%H:
%M:
%S"
gmtime(&
t));
return__format_time__;
}
//字符最多分类种数
#defineCHAR_MAX_TYPES4
/*
判断字符分类函数
数字、大写字母、小写字母和其它符号为四类不同的字符。
intgetCharType(charch)
if(ch>
='
0'
&
&
ch<
9'
)
{
return0;
}
elseif(ch>
a'
z'
return1;
}
A'
Z'
return2;
else
return3;
//密码分类等级名称
charPASSWORD_SECURITY_QUOTIETY_NAME[][10]={"
不安全"
"
中度安全"
安全"
};
intgetPasswordSecurityQuotiety(charpass[])
//密码中字符种类
intcharTypeNum=0,isCharTypeExisted[CHAR_MAX_TYPES]={0};
inti;
if(strlen(pass)<
6)
else
//初始化
for(i=0;
i<
CHAR_MAX_TYPES;
i++)
{
isCharTypeExisted[i]=FALSE;
}
//统计字符种类
strlen(pass);
if(isCharTypeExisted[getCharType(pass[i])]==FALSE)
{
isCharTypeExisted[getCharType(pass[i])]=TRUE;
charTypeNum++;
}
//返回密码强度
if(charTypeNum==1)
return0;
elseif(charTypeNum==2)
return1;
elseif(charTypeNum>
=3)
return2;
}
//输入密码是特别的回显字符
#definePASSWORD_SPECIAL_CHAR'
*'
//输入密码函数,关闭回显
voidinputPassword(charstr[])
charch;
inti=0;
fflush(stdin);
while((ch=getch())!
\r'
//退格键
if(ch==8&
i>
0)
printf("
\b\b"
);
i--;
continue;
}
str[i++]=ch;
printf("
*"
printf("
\n"
str[i++]='
\0'
;
//二维坐标
structPoint
intx,y;
/*****************************************************************************
****记忆图形结构体
*****************************************************************************/
//二维字符数组的最大尺寸
#defineCHAR_ARRAY_MAX_SIZE6
//二维字符数组中一组字符的大小
#defineCHAR_ARRAY_MAX_GROUP_SIZE3
//可以存放到二维数组中的符号
charCHAR_ARRAY_AVAILABLE_SHOW_CHAR[]=
'
'
1'
2'
3'
4'
5'
6'
7'
8'
b'
c'
d'
e'
f'
g'
h'
i'
j'
k'
l'
m'
n'
o'
p'
q'
r'
s'
t'
u'
v'
w'
x'
y'
B'
C'
D'
E'
F'
G'
H'
I'
J'
K'
L'
M'
N'
O'
P'
Q'
R'
S'
T'
U'
V'
W'
X'
Y'
!
'
#'
$'
%'
^'
('
)'
-'
_'
+'
['
]'
{'
}'
<
>
//用来遮掩二维数组中的符号的特定符号
#defineCHAR_ARRAY_SPECIAL_SHIELD_CHAR'
//用来表示二维数组中特定位置没有符号的特定符号
#defineCHAR_ARRAY_SPECIAL_EMPTY_CHAR'
//要记忆的二维字符数组
structCharArray
//要记忆的二维字符数组
chararray[CHAR_ARRAY_MAX_SIZE][CHAR_ARRAY_MAX_SIZE];
//图形是否被关闭标记
intisShield[CHAR_ARRAY_MAX_SIZE][CHAR_ARRAY_MAX_SIZE];
//要记忆的二维字符数组的高
intheight;
//要记忆的二维字符数组的宽
intwidth;
//要记忆的二维字符数组的每组字符数
intgroupSize;
//初始化
voidinitCharArray(structCharArray*charArray,inth,intw,ints);
//打开全部图形
voidsetCharArrayAllShow(structCharArray*charArray);
//关闭全部图形
voidsetCharArrayAllShield(structCharArray*charArray);
//指定位置的图形的状态
voidsetCharArrayState(structCharArray*charArray,intstate,structPointpoints[],intn);
//判断二维数组中是不是全部图形都可见
intisCharArrayAllShow(structCharArray*charArray);
//判断指定的一组位置上的图形是否相同
intisCharArraySameCharAtPoints(structCharArray*charArray,structPointpoints[],intn);
//在屏幕显示二维字符数组
voidshowCharArray(structCharArray*charArray,intshowTime);
voidinitCharArray(structCharArray*charArray,inth,intw,ints)
inti,j,k;
intisFind;
charArray->
height=h;
width=w;
groupSize=s;
srand(time(NULL));
memset(charArray->
array,CHAR_ARRAY_SPECIAL_EMPTY_CHAR,sizeof(charArray->
array));
for(k=0;
k<
charArray->
height*charArray->
width/charArray->
groupSize;
k++)
//随机产生一个字符
do
ch=CHAR_ARRAY_AVAILABLE_SHOW_CHAR[rand()%sizeof(CHAR_ARRAY_AVAILABLE_SHOW_CHAR)];
isFind=FALSE;
for(i=0;
height&
isFind;
for(j=0;
j<
width&
j++)
{
if(charArray->
array[i][j]==ch)
{
isFind=TRUE;
}
}
}
}while(isFind==TRUE);
//随机产生一个坐标
do
x=rand()%charArray->
width;
y=rand()%charArray->
height;
}while(charArray->
array[y][x]!
=CHAR_ARRAY_SPECIAL_EMPTY_CHAR);
//填入字符
charArray->
array[y][x]=ch;
//关闭全部图形
setCharArrayAllShield(charArray);
voidsetCharArrayAllShow(structCharArray*charArray)
inti,j;
for(i=0;
for(j=0;
isShield[i][j]=FALSE;
}
voidsetCharArrayAllShield(structCharArray*charArray)
isShield[i][j]=TRUE;
intisCharArraySameCharAtPoints(structCharArray*charArray,structPointpoints[],intn)
charch=charArray->
array[points[0].y][points[0].x];
//判读点是否重合
n;
for(j=i+1;
if(points[i].x==points[j].x&
points[i].y==points[j].y)
returnFALSE;
}
//判读点所在图形是否相同
for(i=1;
if(charArray->
array[points[i].y][points[i].x]!
=ch)
returnFALSE;
returnTRUE;
intisCharArrayAllShow(structCharArray*charArray)
if(charArray->
isShield[i][j]==TRUE)
voidshowCharArray(structCharArray*charArray,intshowTime)
time_tstartTime,currentTime,tempTime;
//清屏
system("
cls"
*******************************************\n"
****记忆图形\n"
isShield[i][j])
printf("
%c"
CHAR_ARRAY_SPECIAL_SHIELD_CHAR);
else
charArray->
array[i][j]);
}
startTime=time(NULL);
tempTime=startTime;
currentTime=startTime;
while(currentTime-startTime<
showTime)
//每隔一秒更新一下提示
if(tempTime==currentTime)
if(tempTime==startTime)
{
开始记忆...剩余%2d秒"
showTime-(currentTime-startTime));
\b\b\b\b%2d秒"
tempTime++;
currentTime=time(NULL);
//全局变量:
游戏玩家链表
structPlayer*_players=NULL;
当前登陆的游戏玩家
structPlayer_loginPlayer;
//开始一轮游戏
voidstartGame(structGame*game)
//二维数组图形瞬间停留(显示)
setCharArrayAllShow(&
game->
charArray);
showCharArray(&
charArray,GAME_MAX_CHAR_ARRAY_FIRST_SHOW_TIME);
//遮蔽二维数组图形
setCharArrayAllShield(&
charArray,0);
//没有达到猜的次数的上限,继续
while(game->
guessPointsTime<
GAME_MAX_GUESS_TIME)
//让玩家指定相同字符所在的坐标
charArray.groupSize;
//输入行坐标y
****输入相同图形所在的第%d个行坐标,范围[1,%d]:
"
i+1,game->
charArray.height);
scanf("
%d"
&
guessPoints[game->
guessPointsTime][i].y);
//用户输入的坐标是从1开始的,程序中的坐标是从0开始的,要修正
game->
guessPointsTime][i].y--;
}while(game->
guessPointsTime][i].y<
0||game->
guessPointsTime][i].y>
=game->
//输入列坐标x
****输入相同图形所在的第%d个列坐标,范围[1,%d]:
charArray.width);
guessPointsTime][i].x);
guessPointsTime][i].x--;
//显示玩家指定位置的二维数组图形
setCharArrayState(&
charArray,FALSE,game->
guessPointsTime],game->
charArray.groupSize);
showCharArray(&
//判断指定位置的图形是否相同
if(isCharArraySameCharAtPoints(&
charArray,game->
charArray.groupSize))
//记录玩家本次猜字符成功
game->
guessPointsResult[game->
guessPointsTime]=TRUE;
else
{
//记录玩家本次猜字符失败
guessPointsTime]=FALSE;
//显示一会玩家【指定错误】的字符组
showCharArray(&
charArray,GAME_MAX_CHAR_ARRAY_SHOW_TIME);
//重新遮盖字符玩家【指定错误】的字符组
setCharArrayState(&
charArray,TRUE,game->
charArray.groupS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 瞬间 记忆力 考验