Articles of Java

Libgdx InputListenner不起作用

我已经添加了一个InputListener给我的libgdx actor并且已经将这个actor添加到stage 。 stage (及其所有的演员)得到很好的。 问题是我的actor似乎没有收到键盘input,因为当我按键时没有任何反应。 @Override public void show() { stage = new Stage(); player = new Player(); player.setPosition(600, 600); stage.setKeyboardFocus(player); player.addListener(new InputListener(){ @Override public boolean keyDown(InputEvent event, int keyCode) { System.out.println("Key Down"); return true; } }); stage.addActor(player); }

在java2d opengl游戏中随机排除图像

在使用一些PNG图像的图标/纹理的java游戏上工作。 一些图像(less于5,几十)显示一些奇怪的平行“神器”线。 他们随形象移动,肯定不在PNG本身。 我无法弄清楚是什么原因造成的。 使用slick2d,lwjgl。 我已经试过了夹紧纹理的slcik2d和opengl方法,但是没有帮助。 这条黑线显示了图标的右侧(可能是实际图像宽度的50%)。 它不应该在那里。

如何在2D游戏地图中制作不同的图层

我的问题是这样的:我如何从我的spritesheet上的图纸做一个游戏地图? 我制作java 2D游戏的教程使用这种技术来制作一个游戏图:在photoshop中,我创建了一个新的文档,每个像素代表游戏地图中的一个图块。 每个瓷砖被分配一个独特的hex颜色值,从那里加载.png文件到游戏中是一件轻而易举的事情。 不过,现在我已经有了一个完整的地图,里面填满了所有的基本图块,但是它仍然是一张非常空的地图。 我要在我的草地上铺上树木,灌木,花朵。 海藻,睡莲,漂stream木和什么都不是我的水瓷砖。 各种风景,这是一个简单的游戏地图必须的。 我打算devise的这些“风景”物体中的许多大于1瓦(例如结构)。 而且不一定是整个瓷砖(有些会有透明的部分)。 我完全失去了,甚至不知道会有什么期望的答案。 我应该画一个8块瓷砖(8块瓷砖)? 我应该在基本瓷砖上画更大的物体(20×20的仓库)吗? 例如,我真正希望学到的是如何在口袋妖怪游戏中制作游戏图。 我目前的想法是在我的项目中devise一个新的类,类似于Tile类,这是一个Scenary。 像Tile一样,它将包含游戏中每个单一景物的数组,每个数组都有一个唯一的颜色代码,以.png文档中的像素表示。 表示场景和单个场景对象的起始点的像素应包含有关如何从起始位置进行渲染的信息。 如果不是完全可笑,这种方法不可能是正确的方式去。 与Tile类不同,Scenary类可能有数百个对象在其数组中。

TCG – 如何将卡编程为独立的实体

所以我打算尝试制作一个纸牌游戏(Java),但我不确定最好的devise方式是什么。 我理解引擎的东西,但不知道卡应该如何编码,他们应该如何与引擎进行交互。 范围如下所示: 我们有一个理解游戏stream程的引擎。 它知道你在开始时抽牌,在某个时候打牌,有一个战斗的步骤,并结束转(切换球员)。 这很好,但关心的是卡片本身。 我想有卡是他们自己的实体。 我不确定是否会更好: a)让每张卡片成为自己的class级b)将每张卡片编程为外部脚本(用Python表示) 我希望游戏引擎尽可能less地了解一张牌。 当你玩牌时,我想让游戏引擎去: 你在玩牌 你有资源吗? 问卡要多less钱,然后确认你有。 当一张卡片有交互作用时,我希望它尽可能地做到这一点。 例如,如果卡片上说要画一张卡片,我希望它能够强制地告诉引擎抽出一张卡片,或者更好地挂钩游戏,画一张卡片,然后强制引擎更新自己。 极端的情况下可能会提供更好的描述,所以如果有一张卡片说“玩家在回合开始时不画”,引擎通常会自动绘制,所以我们不得不停下来。 我可以合理地编程,在每次交互之前引擎会检查是否有任何特别的事情发生,并且会看到“跳过绘制”。 即使如此,我将如何编程呢? 我会在引擎中写一个方法来跳过绘图,然后让牌将其添加为一个特殊的触发器? 我真的有卡(可能编程在Python中)挂钩到引擎,并结束绘制方法? 最好的办法是什么呢?

Java:通过读取XML文件来创建一个用户定义的类的实例

我正在尝试为游戏编写引擎,特别是基于组件的引擎(在我的方法中,组件包含数据和逻辑)。 所以基本上我有实体,每个实体都有一个组件列表(每个组件都扩展了Component类)。 现在,我想能够在xml文件中为我的实体定义模板,并在运行时加载它们。 模板看起来像这样: <Entity> <Component name="MovementComponent"> <…Variables to be initialized…> </Component> <Component name="RenderComponent"> <…Animations…> </Component> </Entity> “name”属性是相应组件类的名称。 现在,当然组件是游戏特定的,所以我需要一种方法来创建组件的实例,并将其添加到实体的列表中,而不需要知道具体的类。 我想过Class.forName(“…”名称“属性…”)。newInstance(),但是这样我不能将组件添加到列表,因为它是组件的ArrayList和程序不能知道newInstance方法返回的对象实际上是Component的一个子类。 有没有简单的方法来做到这一点?

我应该使用对象引用还是整数值来将棋子存储在棋盘上?

只是一个关于跳棋项目的一般性问题。 我为游戏作品建立了一个类层次结构(可以扩展为国际象棋等)。 层次结构看起来像 interface GamePiece() {…} class EmptySquare implements GamePiece {…} class Pawn implements GamePiece extends EmptySquare {…} class Queen implements GamePiece extends EmptySquare {…} 我将一个对象引用存储在board[][]数组中。 在树中search该数组是克隆每个recursion(不与doMove() …调用recursion… undoMove() )。 我存储游戏片段的对象参考,所以我可以做这样的事情来生成移动列表: for(sq:Squares) sq.getPossibleMoves() possibleMoves.addAll(sq.possibleMoves) 我不确定这个引用数组占用了多less空间,如果从性能的角度来看它是一个好的方法。 它在逻辑上很好地工作。 你会这样做,还是牺牲更好的代码来使用更紧凑的游戏板arrays,并且使用switch()来调用每个片段的子例程来创建移动列表?

管道连接游戏algorithm – Java / Andengine

我正在使用java / andengine for android创建一个基于Pipe Dream / Pipe Mania的游戏。 我有一个正方形的网格,每个都代表一种管道。 玩家需要交换图块来连接从A点到B点的管道。 如何确定管道是否连接到起点A? 那么我怎样才能find连接path有多远? 如何确定path是否将点A连接到点B? 如何处理可能在path中间的瓷砖切换? 这个function将与第一次生化奇兵游戏中的管道迷你游戏几乎相同。 我正在寻找如何解决这个问题的建议。

需要帮助在Java中实现2D游戏的KeyListener

我说在java中编写我的第一个游戏,我需要一些帮助KeyListener来适应我的游戏。 经过一些search教程,我已经像这样: frame.addKeyListener(new KeyAdapter(){ private boolean[] keys = new boolean[120]; public boolean up , down , left , right; public void tick() { up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W]; down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S]; left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D]; } public void keyPressed(KeyEvent e) { if(e.getKeyCode() != KeyEvent.VK_F5) keys[e.getKeyCode()] = true; […]

在屏幕上获取平铺位置(Java Slick和Tiled2D)

我想创建一个矩形围绕每个瓦片被阻止value = true。 我怎样才能find每个瓷砖的X和Y(屏幕上)坐标?

战争之雾 – 循环每一个瓦片效率低下?

我试图优化我的静态FOW代码,用于基于2D瓦片的游戏,瓶颈似乎是在渲染雾(而不是圆形图algorithm或代码的其他方面)。 这是一个相当简单的实现 – 有两个步骤。 首先,游戏正常地呈现所有的东西,就好像没有雾一样。 然后,事实上,FOW代码循环遍历每一行和每一列的瓦片,如果瓦片被“隐藏”在雾之后,则在瓦片上绘制黑色。 在networking上的任何地方,我都看到这是最常用的方法 – 但对我来说,将所有的瓷砖设置为黑色,并且只通过可见的瓷砖显示会更有效率。 虽然这听起来合乎逻辑,但就我而言,结果也不是很有效。 雾格的瓦片大小与实际游戏的瓦片大小不同,这提供了一些特殊的挑战。 有什么更好的方法来产生战争的雾? (游戏的实现在Java中,如果你愿意,我可以提供伪代码。) 任何帮助表示赞赏。 编辑:我已经尝试了2个圈绘图algorithm,并且在性能方面没有什么区别(原始certificate有点快)。 当我将雾代码移到水平绘图循环中时,我看到了显着的性能提升,但这不是一个持久的解决scheme,因为我的雾网格大小大于我的地图网格大小。 编辑2:这是伪代码 – 我不觉得发布真正的代码,因为它不是我的发布。 Level.render for all x for all y if {x,y} is in view of camera render tile for all visible entities if entity is in view of camera render entity call FOW.render() FOW.render for all x for […]