我习惯用PHP编码,但我并不熟悉Java,这已经有一段时间了.我希望它是一个相当简单的解决方案,但是我无法通过任何方式找到任何好的示例代码,所以这里是:
我正在编写一个游戏,它发生在基于图块的地图上的2d随机生成的无限世界中(挑剔:我知道它不会真正无限.我只是期望世界变得非常大).地图的常用方法[X] [Y]多维数组开始了作为一个基本的想法,但由于Java不用于非整数提供了一种方法(即负)阵列关键有心计,如PHP做,我不能正确有( - x,+ x,-y,+ y)带数组键的坐标系.
我需要能够在特定的x,y坐标处找到瓷砖上的对象,以及找到某个瓷砖的"相邻瓷砖".(如果我可以getObjectAt(x,y),我可以获得(x + 1,y)等等)
我读过四棵树和R树等.这个概念很令人兴奋,但我还没有在Java中看到任何好的,简单的示例实现.此外,我不确定这是否是我所需要的.
欢迎任何建议
谢谢
我正在开发一个2D磁贴引擎,此时我正在研究地图生成算法.
我试过通常涉及简单高度图生成的基本方法
但我总是遇到同样的问题:这种算法在处理也有高度组件的平铺地图时似乎很合适,但这不是我的情况.
我基本上有精灵,如草,海,沙漠等等,但它们不应该根据生成的高度放在地图内部但是像
我应该尝试什么样的方法?
我通过开发专门的算法来解决子组件的问题(比如沙漠,山丘和山脉)来做我需要的事情(比如山从一个点开始然后跟随一个有可能转向的方向)但是我没有成功基本岛屿(可以定制为只是一个pangea或多个大小的程度).
只是为了给你一个实用的想法我正在寻找的东西就像文明算法:

我试图在图像资源中使用平铺图像,我正在参考GWT教程...
一节说你需要使用精灵:http: //code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#ImageResource
repeatStyle是一个枚举值,与@sprite指令结合使用,表示图像是要平铺的
所以,现在我需要添加一个精灵指令..在哪里?关于精灵的研究,我来到这里:http: //code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#Image_Sprites
该示例指示创建两个文件:
我会在哪里写这个:
@sprite .mySpriteClass {gwt-image:"imageAccessor"; 其他:财产;}
?
更多参考报价供参考:
@sprite对声明CSSResource的FooBundle很敏感; 在@sprite声明中命名的兄弟ImageResource方法将用于组成背景精灵.
这是一个简单的问题,看似简单的任务,但我找不到任何关于如何完成我需要做的事情的信息.
我有一个应用程序,其主要图块(固定时)有时需要是默认的单面图块,有时需要在图块背面显示信息.我可以从ScheduledActionService成功添加BackBackgroundImage,BackContent和BackTitle,但是当不再需要它们时我无法删除它们.这不是辅助磁贴,因此我无法删除它并重新创建并重新添加它.
有没有人知道是否可以将双面贴砖恢复为单面通过代码,如果是这样,我怎么能实现这种行为呢?
编辑
从StandardTileData对象应用的设置是附加的 - 例如,如果您只指定标题,则所有其他元素保持不变,只更新标题.我试图将出现在tile背面的三个参数设置为null并取得部分成功.效果是背景图像,标题文本和内容文本都被删除,但是图块仍然会翻转以显示完全空的反面.
再次编辑
因此,查看文档时,磁贴背面的行为与前端不同.将后面的内容或后缀设置为string.Empty将删除它们.一切都很好.但是,它确实说"如果设置为空URI,则不会显示BackBackgroundImage.".我如何创建一个空的Uri?我尝试了新的Uri(字符串,空),但是这会引发一个关于尝试创建一个空Uri的异常 - 这正是我想要做的.
我希望我TileOverlay的行为像真正的谷歌地图.放大时,图块仍然可见但按像素化,直到下载新图块.
当前的行为是:当您放大时,瓷砖消失,您看到丑陋的网格,用户必须等到新瓷砖加载.这有点烦人.
有这个问题的解决方案吗?
是否可以在ImageView中重复绘制?我设法重复我的drawable作为ListView中的分隔符,但不是作为ImageView.这是我重复的图像定义:
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/xdividerrepeat" android:tileMode="repeat"/>
Run Code Online (Sandbox Code Playgroud)
谢谢马库斯
我有一个大型高分辨率图像,我正在使用Google Maps v3 API进行叠加.这适用于具有合理网络连接的台式机和笔记本电脑,但毫不奇怪它对移动用户来说效果不佳.
什么是在各种缩放级别将图像分解为2D图块的最佳/最简单的方法,以便我可以通过API充当Google地图的图块服务器?
是否有一个程序可以为我可靠地生成切片,并为每个生成的切片提供必要的缩放和坐标和/或如果我提供缩放和坐标,给我正确的切片?
一旦你收集到正确的信息,是否可以很容易地编写一个磁贴服务器来实现它?也许那里有我可以用作模型的源代码?(我发现了一个瓦服务器在http://blog.gmapify.fr/a-map-tile-server-part-2-understanding-google-maps-tile-overlays-and-building-up-a-tile-server这肯定是有帮助的,但它不提供来自源图像的图块,所以我必须至少计算出那部分......)
或者也许有一步一步的算法我可以手动跟随,如果这更直接?(因为它只有一个图像,并且它覆盖了地图上可能是一平方英里的区域,如果不是这样的话,手动执行它可能是可行的.)
我有一个具有特定模式的图像.如何使用GDI在另一个图像中重复它?
有没有办法在GDI中做到这一点?
我想知道NES如何显示其图形肌肉.我已经在线研究过这些东西,并通过它阅读,但我想知道最后一件事:Nametables.
基本上,根据我的阅读,NES名称表中的每个8x8块指向模式表中的一个位置,该位置保存图形内存.此外,名称表还有一个属性表,为每个16x16块设置特定的调色板.他们像这样联系在一起:
(假设16个8x8块)Nametable,ABCD =指向精灵数据的指针:
ABBB
CDCC
DDDD
DDDD
Run Code Online (Sandbox Code Playgroud)
属性表,1 2 3 =指向调色板数据的指针,<左侧引用值,上方^,左侧和上方:
1<2<
^'^'
3<3<
^'^'
Run Code Online (Sandbox Code Playgroud)
因此,在上面的示例中,块将被着色
1A 1B 2B 2B
1C 1D 2C 2C
3D 3D 3D 3D
3D 3D 3D 3D
Run Code Online (Sandbox Code Playgroud)
现在,如果我在固定的屏幕上有这个 - 它很棒!因为NES分辨率是256x240像素.现在,这些表如何调整滚动?
因为Nametable 0可以滚动到Nametable 1,如果你继续滚动Nametable 0将再次回滚.我得到了.但我没有得到的是如何滚动属性表包装.从我在网上看到的情况来看,它分配属性的16x16块会导致屏幕边缘区域的颜色失真(如左右滚动时反映,SMB3反之亦然).
我关心的是我了解如何滚动名称表,但是如何滚动属性表?对于intsance,如果我在屏幕的左侧有一个绿色块,将屏幕向右移动理论上应该使右侧的瓷砖变为绿色,直到它们移动到框架中,然后它们将恢复到他们的正常颜色.
~~~~编辑:我想指出我知道扫描线,X和Y.这个想法刚刚贯穿我的脑海.
假设我的扫描线Y为10.这意味着我正在水平地读取10个值到我的名字表中.这意味着我的第一列不在屏幕上,因为它只有8的像素宽度.但是,颜色属性保持不变,因为它的宽度为16.
假设整个列的颜色属性为绿色,我认为对用户来说是正确的,屏幕左边的前6个像素是绿色,屏幕最右边的10个也应该是绿色的?那么,根据屏幕,左边的假设我是否正确?
如何使用ImageMagick平铺图像?我不认为我可以使用,montage因为我希望列移位原始图像高度的50%.
显示我正在尝试做的事情的示例可能更容易:
从...开始:

结束于:

谢谢!
tile ×10
image ×3
android ×2
2d ×1
algorithm ×1
c# ×1
coordinate ×1
css ×1
dictionary ×1
drawable ×1
google-maps ×1
graphic ×1
gwt ×1
imagemagick ×1
imageview ×1
java ×1
map ×1
montage ×1
nintendo ×1
sprite ×1