院系:计算机学院.DOC
院 系:计 算 机 学 院
实验课程:操作系统
实验项目:天才Go Go Go 游戏制作
指导老师:尹传勇
开课时间: 2006 ~ 2007 年度第 1 学期
专 业:软件工程
班 级:2004级
陈华葵(20042104038)
华南师范大学教务处
一. 实验名称
天才Go Go Go 游戏制作
二. 实验目的
1、通过对Windows内核的相关实验,进一步深入了解Windows的原理和运行机制,为日后更加熟练地使用Windows和利用Windows进行项目开发打下坚实基础。
2、了解并掌握Windows系统的程序运行机制以及程序开发手段,熟悉Windows应用程序特有的设计模式,并能进行简单的Windows应有程序的开发。
3、熟悉Windows应用程序的事件驱动机制,并能在程序设计中有所运用,达到学以致用的目的。
4、了解动态链接库(DLL)的概念和原理,理解DLL在Windows应用程序中所发挥的作用,并掌握使用DLL技术来进行Windows应用程序开发的方法。
5、能清楚分析出主应用程序和动态链接库(DLL)之间的关系,能合理的分配主程序和DLL各自实现的功能
6、.制作紧张和刺激的游戏,体验游戏的美感。
三. 实验内容与设计思路
1、基于MFC下的对话框程序,利用Visual C++6.0来作为Window应用程序的开发工具,实现Window的窗口式的应用程序架构。
2、利用VC++ 6.0来进行动态链接库的开发,可以用Win32 Dynamic Link Library来创建一个DLL工程。DLL其实就是一个可执行程序模块,模块中包含了可以被其它应用程序或其它DLL共享的程序代码和资源。本次实验将通过动态链接实现背景音乐的播放。
3、在显示对话框的同时,随机抽取的一组数组(密码),按倒序的形式动态输出,伴随着的有背景音乐。对话框的入口是WM_Instance(),对话框显示时,主程序调用该函数对系统的变量进行初始化。同时在函数WM_ONCREATE(),设置了系统的计时器,用SetTime()函数来启动计时器,实现了数组元素的动态输出。
在对话框的初始函数中,调用了VC++6.0的函数PlaySound(),来播放音乐。音乐的播放,运用了动态链接DLL:创建一个Win32 Dynamic Link Library工程后,就为工程可以添加头文件和源文件了。头文件必须显式地显示的声明DLL的导出函数。
4、密码输出完毕一段时间,密码被屏蔽,允许用户输入。输入的值与密码比较,如果符合,则进入下一关,否则,再次出现密码,如此循环,直到游戏结束(在这个过程中,有一定的时间限制,操作必须在规定的时间内,如果时间到,则游戏停止)。
四、程序流程图
五、源代码主要分析
1、设置系统的计算器,循环调用默认函数
int SecDialog::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
SetTimer(1,1000,NULL);//设置系统计算器,
return 0;
}
2、启动系统的计算器,定时响应,以带动动态输出的效果
void SecDialog::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnTimer(nIDEvent);
char str2[15];
if(LeftTime>=0)//还剩下时间
{
if(length>0)
{
itoa(key[i][length-1],mystr,10);
strcat(str,mystr);
m_key.SetWindowText(CString(str));//显示内容
length--;
}
else
{
、、、、、、//屏蔽密码的实现
}
itoa(LeftTime,str2,10);
m_time.SetWindowText(CString(str2));//动态输出时间
LeftTime--;
}
else
{
、、、、、、、//时间到的提示 的实现
}
}
3、对话框初始化设计
BOOL SecDialog::OnInitDialog()
{
CDialog::OnInitDialog();
srand((unsigned)time(NULL));