第1个回答 2007-08-14
以下是主要代码
这个程序是个Win32窗口程序,如果要完整工程源代码请给我你的电子邮箱地址
我的:runtime_class@163.com
// GuessNum.cpp
//
//GuessNum App
//SigmaTera
//2007-08-14
#include "stdafx.h"
#include "resource.h"
#include <ctime>
#include <cstdlib>
void GenerateNum(LPTSTR lpDights,int nLength);
void CheckInputNum(LPCTSTR lpDigits,LPCTSTR lpGenDigits,LPTSTR lpResult,int nLenDigits,int nLenResult);
bool CheckInput(LPCTSTR lpDigits);
BOOL WINAPI DlgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_DIALOG_MAIN),NULL,DlgProc,0);
return 0;
}
BOOL WINAPI DlgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
static TCHAR szDigit[5];
static TCHAR szResult[5];
static TCHAR szInputDigits[5];
static TCHAR szTips[16];
static int nTimes = 10;
if (uMsg == WM_INITDIALOG)
{
EnableWindow(GetDlgItem(hWnd,IDOK),FALSE);
SetWindowText(GetDlgItem(hWnd,IDC_TIPS),"祝您成功!");
}
else if (uMsg == WM_CLOSE)
{
EndDialog(hWnd,0);
}
else if (uMsg == WM_COMMAND)
{
switch(LOWORD(wParam))
{
case IDGEN:
GenerateNum(szDigit,4);
EnableWindow(GetDlgItem(hWnd,IDOK),TRUE);
nTimes = 10;
break;
case IDOK:
GetWindowText(GetDlgItem(hWnd,IDC_EDIT_INP),szInputDigits,5);
if (lstrlen(szInputDigits) < 4 || CheckInput(szInputDigits) == false)
{
MessageBox(0,"输入非法","提示",MB_OK);
SetWindowText(GetDlgItem(hWnd,IDC_EDIT_INP),"");
break;
}
CheckInputNum(szDigit,szInputDigits,szResult,4,4);
SetWindowText(GetDlgItem(hWnd,IDC_SHOW_RESULT),szResult);
if (lstrcmp(szInputDigits,szDigit) == 0)
{
MessageBox(0,"恭喜您猜对了!","提示",0);
EnableWindow(GetDlgItem(hWnd,IDOK),FALSE);
}
nTimes--;
wsprintf(szTips,"您还有%d次机会",nTimes);
if (nTimes == 0)
{
SetWindowText(GetDlgItem(hWnd,IDC_TIPS),"失败了:(");
MessageBox(0,"抱歉,您在10次内没有答对","提示",0);
EnableWindow(GetDlgItem(hWnd,IDOK),FALSE);
break;
}
SetWindowText(GetDlgItem(hWnd,IDC_TIPS),szTips);
break;
case IDCANCEL:
EndDialog(hWnd,0);
break;
}
}
return FALSE;
}
void GenerateNum(LPTSTR lpDights,int nLength)
{
srand(time(0));
int i = 0;
int nGen = 0;
bool bGenerated = false;
while(i < nLength)
{
bGenerated = false;
nGen = rand() % 10 + 48;
for (int j = i;j >= 0;j--)
{
if (lpDights[j] == nGen)
{
bGenerated = true;
break;
}
}
if (bGenerated)
{
continue;
}
else
{
lpDights[i] = nGen;
i++;
}
}
}
void CheckInputNum(LPCTSTR lpDigits,LPCTSTR lpGenDigits,LPTSTR lpResult,int nLenDigits,int nLenResult)
{
int nPosID = 0;
int nSameLetterID = nLenDigits;
TCHAR szTemp[256];
for (int i = 0;i < nLenDigits;i++)
{
if (lpGenDigits[i] == lpDigits[i])
{
nPosID++;
}
for (int j = 0;j < nLenDigits;j++)
{
if (lpGenDigits[i] == lpDigits[j])
{
nSameLetterID--;
}
}
}
wsprintf(szTemp,"%dA%dB",nPosID,nSameLetterID);
lstrcpyn(lpResult,szTemp,nLenResult + 1);
}
bool CheckInput(LPCTSTR lpDigits)
{
bool bGenerated = false;
int i = 0;
while(lpDigits[i] != '\0')
{
bGenerated = false;
if (i == 0)
{
i++;
continue;
}
for (int j = i - 1;j >= 0;j--)
{
if (lpDigits[j] == lpDigits[i])
{
return false;
break;
}
}
i++;
}
return true;
}
第2个回答 2007-08-14
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
void Checkout(char [],char [],int &,int &);
void Swap(char &a,char &b);
void main()
{
bool right=false;
char goon;
int times=0,perfect,nearly,init;
char guess[5],in[255],orig[10]={'0','1','2','3','4','5','6','7','8','9'};
srand((unsigned)time(NULL));
while (1)
{
for(int i=0;i<4;i++)
{
init=rand()%10;
Swap(orig[i],orig[init]);
}
for(i=0;i<4;i++)
guess[i]=orig[i];
guess[5]='\0';
right=false;
for(times=0;times<10 && !right;times++)
{
perfect=0;nearly=0;
cin>>in;
Checkout(guess,in,perfect,nearly);
cout<<perfect<<"A"<<nearly<<"B"<<endl;
if(perfect==4)
right=true;
}
if (right)
cout<<"You Get It!\n";
else
{
cout<<"Try Harder Next Time!\nThe number is ";
for (i=0;i<4;i++)
cout<<guess[i];
cout<<endl;
}
cout<<"Continue? y for yes,n for no ";
cin>>goon;
if(goon!='y' &&goon!='Y')
break;
}
}
void Checkout(char gn[4],char ck[4],int &p,int &n)
{
for (int i=0;i<4;i++)
{
if(ck[i]==gn[i])
p++;
else
{
for (int j=0;j<4;j++)
{
if(ck[i]==gn[j])
n++;
}
}
}
}
void Swap(char &a,char &b)
{
char temp;
temp=a;
a=b;
b=temp;
}本回答被提问者采纳