C++猜测随机存放物品的位置坐标
需求分析
用户猜测藏物位置:计算机在10行10列(行号为0到9,列号为0到9)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);用户通过输入行列号来“寻找”该物件;若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。
思考:若没猜对时也可增加告诉用户藏物的方向信息;另外在猜对结束时,还可告诉用户共猜了几次。
要画出一个坐标,利用随机产生函数产生物品的真实坐标,然后用户猜测物品的坐标,如果猜对给出提示信息,如果猜错告诉用户具体方位.
5.2概要设计
利用坐标图函数画出作标图,而后通过随机函数产生物品坐标,通过用户猜测给出提示信息.
5.3详细设计与编码
代码见上传实验
流程图如下
主函数流程图
猜测的流程图
作标图流程图
5.4调试分析
运行程序,会弹出一个坐标图和提示文字,提示用户输入坐标,
输入坐标5,5,会发现系统的提示,根据提示在输入坐标,直到最后找到物品的真实坐标为止.
5.5用户使用说明
运行程序,用户根据提示猜测物品所在地,然后在根据提示继续猜测直到找到真实坐标即可
5.6设计心得.
本实验关键是要解决真实坐标和猜测坐标的相对位置的计算问题,其中用到了一些函数,一定要细心应用.
#include <iostream>
#include <time.h>
#include <cmath>
using namespace std;
int posX,posY; //棋盘中所藏物品的真实位置
//声明各种函数
void wupin(int& x,int& y); //随机产生所藏物品的位置
void locate(int x,int y); //猜测物品位置
void zuoBiaoTu(); //打印坐标图
int main() //主函数
{
int qiPan[10][10]; //10行10列的“棋盘”
int count=0; //记录猜测次数
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
qiPan[i][j]=-1;
zuoBiaoTu(); //打印坐标图
wupin(posX,posY);
cout <<"10行10列的棋盘中的某一位置已经藏放了一个物件,请猜测它的位置(X坐标0~9,Y坐标0~9)"<<endl;
int x,y;
while(true)
{
cout <<"请输入坐标(X和Y): ";
cin >>x>>y;
count++; //猜测次数加1
if(x==posX && y==posY)
{
cout <<"恭喜您猜对了!"<<endl;
break;
}
else
{
locate(x,y); //给出对于藏放物品的相对位置
}
}
cout <<"您一共猜了 "<<count<<" 次."<<endl;
return 0;
}
void wupin(int& x,int& y) //产生两个一位的随机数的函数
{
time_t t;
srand((unsigned)time(&t));
x=rand()%10;
y=rand()%10;
}
void locate(int x,int y) //给出x和y对于物品藏放位置的相对位置
{
int xlength=x-posX,ylength=y-posY;
int length;
if(xlength>0)
cout <<"左";
if(xlength<0)
cout <<"右";
if(ylength>0)
cout <<"上";
if(ylength<0)
cout <<"下";
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com }
void zuoBiaoTu() //打印出坐标图
{
for(int i=0;i<22;i++)
cout <<"-";
cout <<"> X"<<endl<<"|";
for(int j=0;j<10;j++)
cout <<j<<" ";
cout <<endl;
for(int k=1;k<10;k++)
cout <<"|"<<k<<endl;
cout <<"\\/"<<endl<<"Y"; cout <<endl;}1819