C++Builder编写的配对记忆游戏论文.docx
- 文档编号:3254608
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:572.07KB
C++Builder编写的配对记忆游戏论文.docx
《C++Builder编写的配对记忆游戏论文.docx》由会员分享,可在线阅读,更多相关《C++Builder编写的配对记忆游戏论文.docx(13页珍藏版)》请在冰豆网上搜索。
C++Builder编写的配对记忆游戏论文
《程序设计基础》课程设计登记表
组长
周明(20093006)
组号
二十一
组员
宋雪翔(20093011);田汉(20093051);
题目
配对记忆游戏
题目描述及要求
记忆游戏主要是考验游戏这的记忆能力,而配对记忆游戏则可以测试游戏者是否能记住所有的两两配对图形的位置。
通过用户登录进入游戏界面,开始游戏,还可以进行用户注册以及修改密码
一、需求分析1
1.基本功能描述1
二、概要设计1
1.设计步骤1
三、界面设计2
1.用户登录界面2
2.用户注册界面2
3.修改密码界面2
4.游戏开始界面2
四、部分游戏主要代码3
五、程序运行后的各个界面12
总结16
参考文献17
一、需求分析
休闲之时大家最喜欢玩一些小游戏,而记忆游戏不仅可以休闲娱乐,而且可以锻炼记忆能力。
记忆游戏主要是考验游戏这的记忆能力,而配对记忆游戏则可以测试游戏者是否能记住所有的两两配对图形的位置。
1.基本功能描述
本课程的游戏规则是每次程序会产生6个题目,首先登陆用户,就可以进入游戏界面。
游戏中每个题目中会随即出现6对共12张图片,开始游戏时,图片会逐一显示后覆盖,操作者必须记住每一张图形的位置,所有图片显示一次之后,可以开始作答。
操作者移动鼠标指针单击图片,就可以翻开图片,当然,操作者必须连续翻开两张相同的图片,否则两张图片会再覆盖起来,当操作者将所有图片翻开,就表示已经完成这一题的操作,接着单击start按钮会显示新的题目,每个题目都会显示已经按键的次数,按键次数越少,代表记忆能力越强。
此外,还可以进行用户注册以及修改密码。
二、概要设计
1.设计步骤
(1).首先设计窗体,一共四个窗体:
用户登陆界面、用户注册界面、修改密码界面、游戏开始界面,在每个窗体上添加相应控件,在游戏开始窗体添加:
两个TImage控件,三个TLabel控件等等。
(2).然后选择Events标签,在OnActivate属性值栏中双击,淡出Unit1.cpp窗口后,输入相关代码,然后重复第1步第2步,设置Image2控件的事件程序,输入相关子程序代码,再打开Unit1.h窗口,在Private区输入事件程序名称程序代码。
(3).最后运行测试程序
三、界面设计
本课程一共四个窗体界面
1.用户登录界面
用户登录界面需要添加两个TLabel控件,两个TEdit控件,四个TButton控件以及一个SQL控件,主要实现用户登录进入游戏界面,进入用户注册界面以及修改密码界面的功能
2.用户注册界面
需要三个TLabel控件,三个DBEdit控件,相应的ADO组件以及一个SQL控件
由于本游戏需要注册才能进入游戏界面开始游戏,所以该界面主要实现用户注册功能
3.修改密码界面
需要三个TLabel控件,三个DBEdit控件,相应的ADO组件以及一个SQL控件
主要实现密码修改功能
4.游戏开始界面
主要需要三个TLabel控件,两个TImage控件,实现开始游戏的功能
四、部分游戏主要代码
#include
#include
#include
#include
TImage*piclist[23];
TImage*img[12];
TImage*cmd[2];
TLabel*feedback;
intitemlist[12],itemflag[12],p_no[2];
inttt=22;
intgame_status;
intp_times,p_clicks;
voidloadpictures();
voidgene_items();
voidget_item();
voidwaiting(int);
void__fastcallTForm1:
:
FormActivate(TObject*Sender)
{
inti;
loadpictures();
for(i=0;i<12;i++)
{
img[i]=newTImage(this);
img[i]->Parent=this;
img[i]->Visible=true;
img[i]->AutoSize=true;
img[i]->Tag=i;
img[i]->Left=37+(i%4)*100;
img[i]->Top=65+(int)(i/4)*100;
img[i]->Picture=piclist[0]->Picture;
img[i]->OnClick=imgClick;
};
cmd[0]=newTImage(this);
cmd[0]->Picture->LoadFromFile("图片\\start.jpg");
cmd[1]=newTImage(this);
cmd[1]->Picture->LoadFromFile("图片\\stop.jpg");
randomize();
feedback=Label3;
feedback->Visible=false;
game_status=0;
}
//---------------------------------------------------------------------------
void__fastcallTForm1:
:
Image2Click(TObject*Sender)
{
switch(game_status)
{
case0:
feedback->Visible=false;
p_times=0;
p_clicks=0;
Label2->Caption=p_clicks;
get_item();
game_status=1;
Image2->Picture=cmd[1]->Picture;
break;
case1:
Image2->Picture=cmd[0]->Picture;
feedback->Caption="Stop!
";
feedback->Visible=true;
game_status=0;
break;
}
}
//加载图形文件数据
voidloadpictures()
{
char*picname[]={"card","p01","p02","p03","p04","p05","p06","p07","p08","p09","p10","p11","p12","p13","p14","p15","p16","p17","p18","p19","p20","p21","p22"};
Stringstr1,str2;
inti;
str1="图片\\";
for(i=0;i<23;i++)
{
str2=str1;
str2=str2+picname[i];
str2=str2+".jpg";
piclist[i]=newTImage(Form1);
piclist[i]->Picture->LoadFromFile(str2);
}
}
//随即排列串行数据
voidrandom_list(int*xlist,intsize)
{
inti,j,x;
for(inti=0;i { j=random(size); x=xlist[i]; xlist[i]=xlist[j]; xlist[j]=x; } } //逐一翻开卡片后,再将卡片盖起来 voidopen_close() { inti; for(inti=0;i<12;i++) {img[i]->Picture=piclist[itemlist[i]]->Picture; Form1->Update(); waiting (1); } for(inti=0;i<12;i++) { img[i]->Picture=piclist[0]->Picture; } game_status=1; } //显示新的题目 voidget_item() { inti,j,x; intdlist[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22}; game_status=0; //随机排列dlist for(i=0;i { j=random(tt-1); x=dlist[i]; dlist[i]=dlist[j]; dlist[j]=x; } //取得dlist for(i=0;i<6;i++){ itemlist[i*2]=dlist[i]; itemlist[i*2+1]=dlist[i]; } //随机排列itemlist random_list(itemlist,12); //将卡片盖起来 for(i=0;i<12;i++){ img[i]->Picture=piclist[0]->Picture; itemflag[i]=0; } open_close(); } //等待事件的子程序 voidwaiting(intsec) { intx,y; structtimet; gettime(&t); x=t.ti_sec; y=x; while(abs(y-x)<=sec) { gettime(&t); y=t.ti_sec; } } //按下卡片的事件程序 void__fastcallTForm1: : imgClick(TObject*Sender) { TImage*obj=(TImage*)Sender; boolflag; intindex,i; index=obj->Tag; if(game_status==1&&itemflag[index]==0&&p_times<2) { p_clicks=p_clicks+1; Label2->Caption=p_clicks+1; itemflag[index]=1; //翻开卡片 img[index]->Picture=piclist[itemlist[index]]->Picture; Form1->Update(); p_no[p_times]=index; p_times=p_times+1; //判断是否已经连续翻开两张卡片 if(p_times==2) { if(itemlist[p_no[0]]! =itemlist[p_no[1]]) { waiting (1); img[p_no[0]]->Picture=piclist[0]->Picture; itemflag[p_no[0]]=0; img[p_no[1]]->Picture=piclist[0]->Picture; itemflag[p_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Builder 编写 配对 记忆 游戏 论文