- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 2P Connect 4 游戏,但我似乎无法让圆形区域均匀地放置标记。
下面是初始化每个圆圈位置的代码:
POINT tilePos;
for (int i = 0; i < Board::Dims::MAXX; ++i)
{
tileXY.push_back (std::vector<POINT> (Board::Dims::MAXY)); //add column
for (int j = 0; j < Board::Dims::MAXY; ++j)
{
tilePos.x = boardPixelDims.left + (i + 1./2) * (boardPixelDims.width / Board::Dims::MAXX);
tilePos.y = boardPixelDims.top + (j + 1./2) * (boardPixelDims.height / Board::Dims::MAXY);
tileXY.at (i).push_back (tilePos); //add circle in column
}
}
我使用 POINT
的二维 vector tileXY
来存储位置。回想一下,棋盘是 7 圈宽乘以 6 圈高。
我的逻辑是第一个圆圈(对于 X)开始于:
left + width / #circles * 0 + width / #circles / 2
并且每次增加 width/#circles
,这对于较小数量的圆很容易描绘。
后来,我画了这样的圆圈:
for (const std::vector<POINT> &col : _tileXY)
{
for (const POINT pos : col)
{
if (g.FillEllipse (&red, (int)(pos.x - CIRCLE_RADIUS), pos.y - CIRCLE_RADIUS, CIRCLE_RADIUS, CIRCLE_RADIUS) != Gdiplus::Status::Ok)
MessageBox (_windows.gameWindow, "FillEllipse failed.", 0, MB_SYSTEMMODAL);
}
}
这些循环遍历 vector 的每个元素并用红色绘制每个圆圈(此时突出显示)。 int 转换是为了消除函数调用的歧义。画笔后的前两个参数为左上角,CIRCLE_RADIUS
为50。
问题是我的板看起来像这样(抱歉,如果它有点伤害你的眼睛):
如您所见,圆圈太靠左了。它们也太小了,但很容易固定。我尝试将一些整数更改为 double ,但最终以这是我最接近真实模式的方式结束。位置的扩展公式(扩展 (i + 1./2))看起来也一样。
我是不是漏掉了一个小细节,还是我的整个逻辑都错了?
编辑:根据要求,类型:
tilePos.x
: POINT (windows API one, type used is LONG)boardPixelDims.*
: 双Board::Dims::MAXX/MAXY
:枚举值(整数,分别包含 7 和 6)
最佳答案
根据 CIRCLE_SIZE 是作为半径还是直径,您的两个参数在 FillEllipse 调用中似乎是错误的。如果是直径,则应将位置设置为 pos.x - CIRCLE_SIZE/2
和 pos.y - CIRCLE_SIZE/2
。如果是半径,则高度和宽度参数应分别为 2*CIRCLE_SIZE 而不是 CIRCLE_SIZE。
更新 - 由于您将变量名称更改为 CIRCLE_RADIUS,后一种解决方案现在显然是正确的。
关于c++ - Connect 4 板中的不均匀圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405890/
我需要在半径R的圆内生成一个均匀随机点。 我意识到,通过在区间 [0 ... 2π) 中选择均匀随机的角度,并在区间 (0 ... R) 中选择均匀随机的半径,我最终会得到更多的点朝向中心,因为对于两
我想在一个正方形内生成 N 个点(均匀地)。我怎样才能做到这一点? 最佳答案 非常酷的问题,比我想象的要困难得多,但这就是想法。有关于 n 边形的论文,但我只会做正方形。因此,圆的均匀分布是一个常见问
考虑以下示例: import itertools import numpy as np a = np.arange(0,5) b = np.arange(0,3) c = np.arange(0,7)
SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。 表仅包含 2 列 rid 和 count。 create table t1(rid int, count in
我有以下简单的 HTML。 A B C 和 CSS: ul { width: 100%; display: flex; flex-direction:
我是一名优秀的程序员,十分优秀!