Articles of 六边形

如何在六角形网格系统中连接瓷砖

我一直在开发一个游戏,其中一些瓷砖可以拖入六角网格背景。 但有一些目的,我需要find相同的瓷砖的位置到一个数组,并把它们。 数据层 表示层 我需要find所有具有相同价值并相互连接的瓷砖的位置。 所以我需要一个基本的想法,我可以做到这一点,或者如果有任何algorithm存在 注意:As3相关的代码将有所帮助。

SDL_RenderDrawLines不绘制完整的几何graphics

所以我试图用[ SDL_RenderDrawLines ] []绘制六边形。 它看起来工作得很好,但是,它没有画出一些线。 因此,屏幕截图中的每个六边形都是一个hex对象。 它们每个都有一个中心x / y,以及hex六角的SDL_Points数组。 这是hex对象绘制调用。 SDL_RenderDrawLines( TheGame::Instance()->getRenderer(), corners, HEX_NUMBER_OF_CORNERS); 有一些重复发生的情况,导致垂直线不会被渲染,我似乎无法弄清楚为什么。 这两个显而易见的事情并不能解释为什么没有一条线。 对象的绘制顺序应该不重要,因为每个hex的所有边界都被绘制。 相邻的六角形中心之间的水平距离可以是+ -1,因为四舍五入将导致双重厚边界而不是缺失边界。 如果有人有任何见解,我欢迎提供意见。 编辑: 在这个问题之前,我已经提出了你提到的建议,将点数增加到7是正确的,我在用六角形尝试之前在三角形上testing了它。 当你不closures形状时,你通常会画出从画面边缘射出的线条。 三条线上的部分也是我在发现的时候发现的其他东西。 我包含了一些我的代码,以展示我提出的两种方法。 // render the hexagon to on screen void Hex::draw() {/* draw order of points rotate ccw 90 degrees for actual postion [2] ____ [3] / \ [1] / \ \ […]

细分二十面体hex/ Pent网格高效渲染?

如何在细分的二十面体上显示hex/五边形网格? 我有一个细分的二十面体星球作为战略游戏的“板子”。 根据用户input到地图生成器的大小,它通常具有几千到几十万个瓦片之间的任何地方。 基本上,我不能蛮力这样做,并做一个简单的边界和深度检查,因为瓷砖的数量。 为了简单起见,我将网格存储在二维数组中。 我明白,在2D地图上,只需执行如下操作即可绘制hex地图: for(int x = cameraX; x < viewportWidth; x++) { for(int y = cameraY; y < viewportHeight; y++) { if(x % 2 == 0) //For the 2D array to work properly we have to offset every other row by +1 world coordinate (assuming each tile is 1*1 world coordinates) grid[x][y].render(x+tile_width, […]

如何绘制不同长度的六边形瓷砖?

我正在尝试创建一个基本的六角形网格。 我发现了一些代码… s=h/Math.cos(30*Math.PI/180)/2; tile._x=x*s*1.5; tile._y=y*h+(x%2)*h/2; 这样做,但我认为这是设置为hex的长度相同的侧面。 但是我的六角有不同的长度。 它的宽度是140,高度是80.我将如何更改该代码来适应?

以电子方式实施现有(但绝版)游戏

我最喜欢的游戏之一是老Avalon山classPanzerBlitz 。 我想以电子方式实施它,并有几个相关的问题: 如果我这样做,我会遇到法律上的麻烦吗? (注 – 这不是出售或分销) 我将如何最有效地实施六角形网格和件数据库(每件都有各种“因素”(运动,可携带性,攻击,防御,单位types)? 游戏机制和机制已经在书面规则中有了明确的定义 – 所以我不是从头开始编写游戏 – 只是编写游戏来跟随棋盘游戏。

创建一个六角形环绕地图

我试图为六角形地图创建一个环绕地图,所以当你在大六边形地图的一边退出一个地砖时,你会在另一边input一个地砖。 来自这篇关于六角形地图环绕的文章。 在图像中,淡褐色的六角形块在中心是我们的地图。 它周围的绿色/红色块被移动相同的地图副本。 如果我们站在光标下面的蓝色瓷砖上,走出主地图到右边的绿色副本,就像把我们的地图包裹到另一边的对应点上一样:在这里,从蓝色瓷砖走右下角红色复制到中心地图的右下角。 我先用查找表的方法。 但是,一旦这些地图变得太大,查找表就会变得更大。 我正在寻找一个没有查找表的解决scheme。

如何在六角板上获得任意尺寸的圆锥形状

我正在为我的六边形棋盘游戏实现引擎工具,这个变得混乱。 我希望得到一个大小为N的圆锥体的所有位置的列表,给定“连铸机”原点X,Y和X0,Y0的原点,并考虑方向。 到目前为止,我已经能够使用“简单模式”方法获得一个大小的锥体,但是对于N大小的锥体来说,它不能很好地转换。 这是原来的锥体 和代码 public PositionArray getArcAdjacents(int originx, int originy, int targetx, int targety, int range) { final FloatPair direction = this.getDirectionVector(originx, originy, targetx, targety); final PositionArray highlights = new PositionArray(gameMap); highlights.add(new Pair(targetx, targety)); int offset = 0; if ((targetx % 2) == 0) { offset = 1; } if (direction.x > 0) { […]

把六边形放在一起

刚刚做了一些更多的调查得益于这个网站 ,但六边形有一点水平间距。 这里是代码: include('class/hexagon.php'); $hexagon = new hexagon(16); $png_image = imagecreate(500, 500); imagecolorallocate($png_image, 255, 255, 255); $black = imagecolorallocate($png_image, 0, 0, 0); for($i=1;$i<12;$i++) { for($j=1;$j<10;$j++) { $x = $i * $hexagon->ver; $y = $j * $hexagon->height + ( ($i%2) * ( $hexagon->height / 2 ) ); $points = $hexagon->drawHex($x,$y); $last_line = array($points[0][0],$points[0][1]); imagettftext ($png_image , […]

用于在触摸上指示六角网格上的玩家的移动select的首选选项

我正在构建一个原型回合制游戏,我正在考虑用户与游戏板交互的最佳方法。 这是一个六边形网格,用户可以select单位并移动到电路板上的其他单元格。 单次移动的步数可变,取决于单位。 我的目标是使用ontouch屏幕设备,所以这将排除基于hover的指标(在交互方面最有意义)。 那么,有了这个限制,有什么方法可以向用户指出他们可以移动的单元的数量呢? 到目前为止,我已经提出了这些选项: 允许用户轮stream,一步一步移动,每次突出显示最近的1个邻居单元。 突出显示所有可能的目标单元 突出最大距离的外环: 通过最外面的单元格绘制一条线来指示最大距离: 这些都有自己的缺点。 第一个,将dynamic完成,将需要创建标记(不是不可思议的),也会看起来有点奇怪,当有很多的select。 图像显示可以移动2个单元的单元,并且已经看起来过于拥挤。 第二个将解决太多细胞一次点亮的问题。 不幸的是,我担心用户不会理解他们可以移动到环内非突出的单元之一。 最后一个问题与第二个问题相同,我不确定他们会明白他们可以移动的位置。 这将减轻创建多个标记和临时存储的需要,因为我只需要存储不同大小的单个六边形。 那么,有什么想法? 我在想这个吗? 注:我已经从这个非常有用的网站上面的图像: http : //www.redblobgames.com/grids/hexagons/

将继续条件移入for循环产生了一些不符合逻辑的东西?

我正在建立一个六角形网格。 我使用的列/行系统将0,0作为左上角,增加的列(x)向右移动,但也垂直向上移动。 因此,列竖直向上和向下运行,但是行向右移动但向上倾斜了一点。 这个代码… for (j = 0; j < bd*2-1; j += 1) // bd is "board dimension", in my case 9 { for (i = 0; i < bd*2-1 and i < j+bd; i += 1) { if (i <= j-bd) continue; scr_ini_hex(i, j, bxo + i*hs, byo + j*hh – i*vs); // […]