gpt4 book ai didi

c++ - 在 Windows C++ 程序中绘制骰子?

转载 作者:行者123 更新时间:2023-11-28 03:38:33 24 4
gpt4 key购买 nike

我们刚刚开始学习使用 C++ 进行 Windows 编程。我们必须制作一个屏幕上有 4 个骰子的程序,当用户按下“空格键”时,骰子滚动或骰子上的点数随机变化。我们的教授还没有给我们很多信息,所以我只是在寻找一些方向。

现在,我在屏幕上绘制了 4 个正方形,它们是使用 Rectangle() 函数制作的。

Rectangle(hDC,30,100,130,200);
Rectangle(hDC,180,100,280,200);
Rectangle(hDC,330,100,430,200);
Rectangle(hDC,480,100,580,200);

我的问题是 1) 我将如何在这些“正方形”而不是“屏幕”上绘制点。因此,如果我向上移动骰子,点将与正方形一起移动,而不仅仅是停留在屏幕上绘制的位置。和 2.) 当按下空格键时,我将如何让这些点随机变化(模拟它们已被滚动)?只是在寻找一些方向,谢谢。

最佳答案

1)
您仍然需要在屏幕上绘制它们,但您可以构建程序以将这些点实现为正方形的一部分。

void moveSquare()
{
//change square position
//change dots positions the same as you changed the square
}

2)
您可以使用 WM_KEYDOWNWM_KEYUP 消息或 WM_CHAR 消息在窗口中捕获按键。只需开始一系列更改按下空格时应该出现在骰子上的点数(SetTimer 可能很方便),然后让 WM_PAINT 完成绘制的工作点(或调用一些东西来计算点的位置,并让 WM_PAINT 循环遍历它需要绘制的每个点。

void OnSpacePressed()
{
//start changing dots every so often, handled elsewhere
//maybe check if finished rolling before doing so
}

void calculateDotPositions()
{
switch (numberOfDots) {...} //hint: use the square as a reference point
}

void OnPaint()
{
//paint each sqaure
//paint each dot in the correct position, which should be updated with square
}

void OnChangeDots()
{
//change number of dots
//also start a new change to happen later if not done rolling
}

要绘制点,请使用 Warren P 的引用链接。

关于c++ - 在 Windows C++ 程序中绘制骰子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com