|
请编程实现一个简易的屏幕窗口模拟,具体要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
编写 CPoint 类,描述二维平面内的一个坐标点,包含 x,y 两个坐标,重载 >> 运算符以实现输出形如 (x,y) 的信息。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
编写 CWindow 类,描述平面上的一个窗口,包含如下信息:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
int id ,窗口唯一标识,为了保证唯一性,可以使用 (int)time(NULL) 返回的时间戳赋值。
char title[255] ,窗口标题
CPoint topleft,bottomright ,左上角和右下角的坐标
两种形态的构造函数:
* 提供标题和两点坐标的:CWindow(const char* title,CPoint topleft,CPoint bottomright)
* 提供标题和左上角坐标以及窗口高宽的:CWindow(const char* title,CPoint topleft,int width,int height)
一个静态成员 CWindow* topmost ,指向当前活动窗口,可以初始化为 nullptr
一个 Activate() 方法,将当前窗口置为活动窗口
重载 >> 运算符输出形如 title (x,y)-(x,y) 的窗口信息,参见测试用例输出结果
其它成员如果需要请自行编写,例如 CPoint 可以设计 getX 和 getY 接口便于 CWindow 根据高宽计算右下角坐标。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
主程序生成了三个窗口并随机激活了一个,然后输出了激活后窗口的信息,请参考测试用例的输出进行编程。
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
using namespace std;
/*
请编程实现一个简易的屏幕窗口模拟,具体要求如下:
* 编写 CPoint 类,描述二维平面内的一个坐标点,包含 x,y 两个坐标,重载 >> 运算符以实现输出形如 (x,y) 的信息。
* 编写 CWindow 类,描述平面上的一个窗口,包含如下信息:
int id ,窗口唯一标识,为了保证唯一性,可以使用 (int)time(NULL) 返回的时间戳赋值。
char title[255] ,窗口标题
CPoint topleft,bottomright ,左上角和右下角的坐标
两种形态的构造函数:
提供标题和两点坐标的:CWindow(const char* title,CPoint topleft,CPoint bottomright)
提供标题和左上角坐标以及窗口高宽的:CWindow(const char* title,CPoint topleft,int width,int height)
一个静态成员 CWindow* topmost ,指向当前活动窗口,可以初始化为 nullptr
一个 Activate() 方法,将当前窗口置为活动窗口
重载 >> 运算符输出窗口信息,形如 title (x,y)-(x,y) ,参见测试用例输出结果
* 其它成员如果需要请自行编写,例如 CPoint 可以设计 getX 和 getY 接口便于 CWindow 根据高宽计算右下角坐标
主程序生成了三个窗口并随机激活了一个,然后输出了激活后窗口的信息,请参考测试用例的输出进行编程。
*/
//主程序
int main()
{
//主程序代码仅为测试类的设计而编写
//伪随机化,真随机请使用 srand(time(NULL));
//srand(2022);
//最大窗口数量
const int MAX = 3;
/*
注意屏幕的坐标系为:
y |
|
|
|____________
0,0 x
*/
//生成 MAX 个窗口对象存储在数组中
CWindow windows[MAX] {{"notepad",CPoint(10,20),CPoint(20,5)}, //提供两点坐标初始化
{"mspaint",CPoint(10,20),5,6}, //提供一点坐标加高宽初始化
{"code",CPoint(2,20),CPoint(30,1)} //提供两点坐标初始化
};
//随机选择一个窗口激活到前台
windows[rand()%MAX].Activate();
//输出这个前台窗口信息
cout << *CWindow::topmost << endl;
return 0; |
上一篇: 这是类型转换的问题吗?下一篇: 请问为什么这两种写法的结果不同,应该如何改正?
|