C++用户猜测藏物位置课程设计代码
需求分析:
计算机在10行10列(行号为0到9,列号为0到9)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);用户通过输入行列号来“寻找”该物件;若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。
程序执行的结果:
2.3概要设计:
本程设计思路: 随机产生一个x,y坐标在(1,10)范围内的值作为宝物的坐标,每次用户输入坐标与该坐标比较,根据x,y的差值来确定提示方位。
程序流程图(如左图)
2.3 详细设计与编码:
见上传程序。
2.4 调试分析:
随机产生坐标要防止随机数前后的关联性,使其更具随机性。
2.5 用户使用说明:
程序随机产生宝物坐标,用户输入自己猜测的坐标,程序会对此作出判断,并返回一些信息或提示
2.6 设计心得:
首先要理清程序的头绪方可编码,不要到快完成时发现有些东西没考虑到。
#include<iostream>
#include<time.h>
using namespace std;
class vector //2文向量,用以表示坐标
{
public:
vector():x(0),y(0) { }
bool operator==(const vector& other) const
{
return x==other.x && y==other.y;
}
int x;
int y;
~vector() { }
};
class chessboard
{
public:
chessborad(int x=10,int y=10)
{
row=y;
col=x;
}
void reset(); //重置宝物的坐标
int check(vector& vec) const; //检测是否是正确坐标
~chessboard() { }
private:
int row;
int col;
vector target;
};
void chessboard::reset()
{
srand(static_cast<unsigned int>(time(NULL)));
target.x=rand()%10;
if(!target.x) //保证x坐标不是0
target.x=1;
srand(static_cast<unsigned int>(time(NULL))+rand());
target.y=rand()%10;
if(!target.y) //保证y坐标不是0
target.y=1;
#ifdef _DEBUG
cout<<"reset ok"<<target.y<<" "<<target.x<<endl;
#endif
}
int chessboard::check(vector& vec) const
{
if(vec==target)
{
cout<<"恭喜你,答对了!"<<endl;
return 0;
}
int dx=target.y-vec.x;
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com cout<<"在你左上!"<<endl;
else if(dx<0 && dy<0)
cout<<"在你左下!"<<endl;
return 1;
}
void main()
{
chessboard board;
board.reset();
vector vec;
cout<<"现在开始,请依次输入行列号:"<<endl;
cin>>vec.y>>vec.x;
while(board.check(vec))
{
cin>>vec.y>>vec.x; }1812