上次的计算器,使大家过了一把开发的干瘾吧,今天教大家开发一个好玩的猜数游戏
在做之前让大家先睹为快
游戏界面 出题
猜数:
首先是老规矩,打开VC6.0--->创建Win32 DialogBased Application工程--->工程名为:猜数
将程序的名字改为猜数
在图形界面上放几个控件,摆成如下所示的界面,在使用控件时候,会用到一个新的控件“静态文本”
摆成如下所示的界面
修改控件的名字和ID;请参考上一篇《自己动手写计算器》
控件名 | 控件的ID |
猜数(1~~100)之间的整数 | IDC_STATIC |
编辑框 | IDC_EDIT1 |
出题 | IDC_BUTTON1 |
确认 | IDC_OK |
退出 | IDC_EXIT |
函数:
函数名: rand()
函数功能:产生随机数
应用:产生十个100以内的随机数
#include <stdio.h>
#include <stdlib.h>
int main()
{
for(int i=0;i<10;i++)
{
printf("%d\n",rand()%100);
}
return 0;
}
执行结果:
函数名: srand((unsigned)time(&a));
函数功能:随机数种子(产生随时间变化的随机数)
应用:利用随机数种子产生十个100以内的随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
time_t a;//时间
//随机数种子
srand((unsigned)time(&a));
for(int i=0;i<10;i++)
{
printf("%d\n",rand()%100);
}
return 0;
}
执行结果:
函数名:Static_SetText
函数功能:在静态文本中显示数据
函数原型:
int Static_SetText(
HWND hwndCtl,
LPTSTR lpsz
);
参数:
第一个参数:控件的句柄
第二个参数:在控件中显示的字符串
参考文章:Static_SetText
程序代码:
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <time.h>
#include "resource.h"
#include "MainDlg.h"
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}
int i1 = 0;
int i2 = 0;
//产生随机数
void GetRand(HWND hwnd)
{
time_t a;//时间
//随机种子
srand((unsigned)time(&a));
i1 = rand () % 100;
MessageBox(hwnd,TEXT("游戏中已产生了一个数字,请猜"),TEXT("提示"),MB_OK);
}
void Result(HWND hwnd)
{
TCHAR str[256];/*储存你猜的数*/
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));/*获取玩家输入的数字*/
HWND hwndStatic = GetDlgItem(hwnd,IDC_STATIC1);/*得到静态文本框的句柄*/
i2 = atoi(str);/*将玩家输入的数字转换为整数*/
if(i2 > i1)
{
Static_SetText(hwndStatic,TEXT("猜大了,请再猜!"));
}
else if(i2 < i1)
{
Static_SetText(hwndStatic,TEXT("猜小了,请再猜!"));
}
else
{
Static_SetText(hwndStatic,TEXT("猜中了,你非常幸运!"));
}
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
//出题
case IDC_BUTTON1:
{
GetRand(hwnd);
}
break;
/*确定*/
case IDC_OK:
{
Result(hwnd);
}
break;
/*退出游戏*/
case IDC_EXIT:
{
int ret = MessageBox(hwnd,TEXT("游戏正在进行中,是否退出?"),"",MB_YESNO | MB_ICONQUESTION);
if(IDYES == ret)
{
exit(-1);/*退出游戏*/
}
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
猜数游戏下载