猜数字游戏实现
来源:互联网 发布:python mud游戏 编辑:程序博客网 时间:2024/05/09 10:59
一、具体实现代码
头文件GuessNumber.h
#ifndef GUESSNUMBER_H_INCLUDED#define GUESSNUMBER_H_INCLUDED#include <cstdlib>#include <iostream>using namespace std;class GuessNumber{public:GuessNumber();virtual ~GuessNumber();void GameBegin();void Output();void Out();void Input();private:bool Init();int GetReplyManu(int *list);int GetReplyAuto(int *list);void Perm(int list[],int k,int m);inline void Swap(int &a , int &b);int nGnum;int nNum;int **pNum;int *nTag;int nTimes;int nTotal;};#endif // GUESSNUMBER_H_INCLUDED
源文件 GuessNumber.cpp
#include "GuessNumber.h" int nflag = 0; GuessNumber::GuessNumber() { nGnum = 0; nNum = 0; pNum = NULL; nTimes = 0; nTotal = 0; nTag = NULL; } GuessNumber::~GuessNumber() { int i; for(i = 0;i < nTotal;i++) delete [] pNum[i]; delete[] pNum; pNum = NULL; delete[] nTag; nTag = 0; } bool GuessNumber::Init() { nTotal = 1; int i = 0; for(i = nNum;i > 0;i--) nTotal *= i; pNum = new int*[nTotal]; for(i = 0;i < nTotal;i++) pNum[i] = new int[nNum]; int *list = new int[nNum]; for (i = 0;i < nNum;i++) list[i] = i + 1; Perm(list,0,nNum-1); delete[] list; return true; } void GuessNumber::Perm(int list[] ,int k,int m) {int i;if(k == m){for(i = 0;i <= m;i++) pNum[nflag][i] = list[i]; nflag++;}elsefor(i = k;i <= m;i++){Swap(list[k],list[i]);Perm(list,k + 1,m);Swap(list[k],list[i]);} } inline void GuessNumber::Swap(int& a,int& b) { int t = a; a = b; b = t; } int GuessNumber::GetReplyAuto(int *list) { int n = 0,i = 0; for(i = 0;i < nNum;i++) if(list[i] == nTag[i]) n++; return n; } int GuessNumber::GetReplyManu(int *list) { int i,n; cout<<"The number is: "; for(i = 0;i < nNum;i++) cout<<list[i]; cout<<" ?"<<endl; cin>>n; return n; } void GuessNumber::Output() { } void GuessNumber::Input() { bool *b; int i,t; cout<<"Please input the number of digit: "; cin>>nNum; nTag = new int[nNum]; b = new bool[nNum + 1]; for(i = 1;i <= nNum;i++) b[i] = false; while(true) { cout<<"Please input the number you need me to guess:"<<endl; cin>>nGnum; t = nGnum; for(i = 0;i < nNum;i++) { nTag[nNum-i-1] = t%10; if(b[t%10]) { cout<<"Duplicate digits exist."<<endl; break; } else b[t%10] = true; t /= 10; } if(i == nNum) break; for(i = 1;i <= nNum;i++) b[i] = false; } } void GuessNumber::Out() { int i = 0,j = 0; for(i = 0;i < nTotal ;i++) { for(j = 0;j < nNum ;j++) cout<<pNum[i][j]<<" "; cout<<endl; } cout<< nTotal<<endl; for(i = 0;i < nNum ;i++) cout<<nTag[i]<<" "; cout<<endl<<endl; } void GuessNumber::GameBegin() { Input(); Init(); //Out(); int *nTemp[20]; int i,j,k,t = 1,m; for(i = 0;i < 10;i++) nTemp[i] = new int[nNum + 1]; for(i = 0;i < nNum;i++) nTemp[0][i] = pNum[0][i]; char flag; do { cout<<"Do you want to play manually or automatically(m/a): "; cin>>flag; }while(flag != 'm' && flag != 'a'); if(flag == 'a') nTemp[0][nNum] = GetReplyAuto(pNum[0]); else nTemp[0][nNum] = GetReplyManu(pNum[0]); nTimes++; for(i = 1;i < nTotal;i++) { for(j = 0;j < t;j++) { m = 0; for(k = 0;k < nNum;k++) { if(pNum[i][k] == nTemp[j][k]) m++; } if(m != nTemp[j][nNum]) break; } if(j == t) { if(flag == 'a') m = GetReplyAuto(pNum[i]); else m = GetReplyManu(pNum[i]); nTimes++; if(m > nTemp[t-1][nNum]) { for(k = 0;k < nNum;k++) nTemp[t][k] = pNum[i][k]; nTemp[t][nNum] = m; t++; } if(m == nNum) break; } } cout<<"I asked you "<<nTimes<<" Times."<<endl; /*cout<<"The numbers which I asked you list by follow:"<<endl; for(i = 0;i < t ;i++) { for(j = 0;j < nNum ;j++) cout<<nTemp[i][j]; cout<<endl; }*/ cout<<"The tag number is: "; for(i = 0;i < nNum ;i++) cout<<nTemp[t-1][i]; cout<<endl; for(i = 0;i < 10;i++) { delete[] nTemp[i]; nTemp[i] = NULL; } }测试Main.cpp
#include "GuessNumber.h"int main(){ GuessNumber game; game.GameBegin();return 0;}
- 猜数字游戏实现
- 实现猜数字游戏
- 猜数字游戏的实现
- 猜数字游戏的实现
- struts2实现猜数字游戏
- 猜数字游戏的实现
- 随机数实现猜数字游戏
- python实现猜数字游戏
- Go实现猜数字游戏
- 文曲星中的猜数字游戏 python 实现
- 用java实现的猜数字游戏
- 实现控制台的猜数字游戏。
- 猜数字游戏(简单C#实现)
- UI, 猜数字游戏的实现
- 猜数字游戏(C实现)
- java代码实现猜数字游戏
- c语言实现一个猜数字游戏。
- C语言实现猜数字游戏
- C++中的临时对象(拷贝构造函数)(下)
- DB---数据库中Schema的理解
- iframe
- RCP开发,view之间的信息传递
- 你能做对下面这些JavaScript的题吗?
- 猜数字游戏实现
- 活动安排问题 贪心算法
- GET与POST区别
- 字节对齐
- Mysql原理,安装和基本使用
- POSIX互斥锁
- Java 理论与实践: 正确使用 Volatile 变量
- VC 链表做的学生管理系统
- 基于GridView的程序菜单