Articles of Java

屏幕布局已更改

我通过drawable canvas在android studio中制作了游戏,但是当我在平板电脑和移动屏幕设备上玩游戏时,屏幕布局也发生了变化。 那么这个问题的解决scheme是什么? HomeView。 java(这是我的主页视图,我设置我的button(玩,怎么玩,关于我们,退出) import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.view.MotionEvent; import android.view.View; import com.sixtinbyte.snakeandladder.components.GameButton; import com.sixtinbyte.snakeandladder.constant.Sound; public class HomeView extends View { public Context ctx; private Resources res; private String refText ="Snakes and Ladders"; private GameButton gButton, […]

LibGDX阶段渲染的奇怪问题

我正在用LibGDX制作一个Java游戏,而且我刚开始在游戏中添加一个HUD,每当我尝试0,0的“yellowBlock”纹理时,我都会用白色方块来覆盖屏幕的四分之一和“yellowBlock”纹理从未画出。 不管鼠标在哪里 public HudController(World world) { this.world = world; SelectNewTile("yellowBlock"); // HUD SETUP skin = new Skin(Gdx.files.internal("ui/cloud-form-ui.json")); stage = new Stage(new ScreenViewport()); table = new Table(); table.setWidth(stage.getWidth()); table.align(Align.right | Align.top); table.setPosition(0, stage.getHeight()); demolishButton = new TextButton("Demolish Tile", skin); saveButton = new TextButton("Save Game", skin); //table.add(demolishButton); //table.add(saveButton); stage.addActor(demolishButton); InputMultiplexer im = new InputMultiplexer(stage, this); Gdx.input.setInputProcessor(im); } […]

A *寻路问题

我目前正在Java中制作基于磁贴的游戏。 我已经写了一个A *寻路实现,而且我有一个错误,现在我已经搞不清楚了。 每当我find一个新的path,我的对象首先通过以前的path,然后通过新的path。 对象的更新方法,称为每个框架 – 将改变这一点。 // Gdx.app.log("Pathfinding", "Person at x:" + position.getX() + " y:" + position.getY()); if (hasPath) { //Gdx.app.log("Pathfinding", "Going through movement check"); if (!shouldMove) { resultPath.clear(); resultPath = world.findPath(position, endNode); shouldMove = true; } //Gdx.app.log("Pathfinding", "Path length: " + resultPath.size()); // If there is anywhere left to go, go there […]

我的三维地形在移动吗?

我在badlogicgames的帮助下生成了一个3D等距地形。 我将透视摄像机传递给spriteBatch投影matrix,但是当我移动我的播放器(透视摄像机跟随我的播放器)时,看起来地形正在移动 – 这是我的游戏video 。 我认为地形应该是静态的! 另外我正在使用decalBatch; 我的贴花看起来很好 – 他们仍然在他们的位置。 但地形不! 这是我渲染地形的代码的一部分: sb.setTransformMatrix(matrix); sb.setProjectionMatrix(cam.combined);//is perspective sb.begin(); for(int z = 0; z < 100; z++) { for(int x = 0; x <80; x++) { sprites[x][z].draw(sb); } } sb.end() 这里是第三人称相机 cam.lookAt(player.getX(), 0, player.getZ()); cam.position.set(player.getX(),7f,player.getZ()-10f); playerDecal.setPosition(player.getX(), player.getY(), player.getZ()); 我的大问题是地形不是静态的! 它正在与我的相机的位置一起移动。 我怎样才能纠正这个问题?

代码在切换活动时崩溃

我遇到了一个closures我的应用程序切换活动的问题。 我不是说这是一个“修复我的代码”的问题,但是如果这样的话,让我知道我能做些什么来解决这个问题。 我将解释程序的function,以及它应该做什么,希望StackExchange的好人能够帮助我找出一个解决方法。 目的:代码应该是我devise的一个完整的游戏,以便我可以熟悉Android工作室(我已经知道一些Java,并希望把它使用)。 游戏将用户置于启animation面(我不认为代码是相关的,但如果你希望我包括它,我会),然后一旦用户点击,他们被带到“GameActivity”(代码下面)。 我的代码播放“ready,set,go”介绍,然后游戏开始。 屏幕以随机间隔在绿色,黄色和红色之间切换。 如果玩家在屏幕呈绿色时点击,则获得1分。 如果屏幕是黄色,他们赚取双倍。 点击红色屏幕将失去他们的游戏。 随着时间的推移,颜色会以更短,更难预测的间隔切换。 实际发生的事情:只要我切换活动,我会收到一条错误消息。 当我只有“介绍”代码时,我能够切换活动并且应用程序正常运行,但是在添加其他代码之后,问题就出现了。 在Android Studio中,我没有任何警告,任何types的错误或建议(在android studio帮助您修复代码的右侧)。 我不认为这是清单或XML的问题,因为它们在早期阶段工作正常。 package com.nateolson.taptap; import android.graphics.Color; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; import java.util.concurrent.ThreadLocalRandom; public class GameActivity extends AppCompatActivity { final Handler introHandler = new Handler(); boolean gameActive = false; final View layout = […]

Java Raycasting引擎地板和天花板纹理问题

直到最近,我一直在研究一个简单的光线投射引擎。 到目前为止,我的问题一直在显示地板和天花板的纹理。 我目前的代码看起来只从纹理中获取一个像素,并将其显示为天花板和地板。 我想我需要创建两个新的缓冲图像,并用它们来显示地板和天花板。 我怎么能这样做,以后实现地板高度不会是一个问题? (我仍然不确定这样的事情是否可以通过光线投射,但是从来没有受到实验的伤害。) package elysion.Game; import java.util.ArrayList; import java.awt.Color; public class Screen { public int[][] map; public int mapWidth, mapHeight, width, height; public ArrayList<Texture> textures; public Screen(int[][] m, int mapW, int mapH, ArrayList<Texture> tex, int w, int h) { map = m; mapWidth = mapW; mapHeight = mapH; textures = tex; width […]

二维平台游戏中的蠕虫敌人

我正在尝试使像Terraria世界的食者这样的分裂蠕虫的敌人: 我得到了使段的function的代码,只需要遵循之前的一个。 我没有得到的是AI的头。 我遇到了两个问题:一是当目标角度从360变为0(或反之)时,头部一直循环。 其次,当我实现区分地上和地下的脚本时,头部卡在固体块和非固体块之间的线上。 请注意,这个问题不同于这个问题,因为我已经知道如何让这些细分市场起作用。

如何围绕自己的滚动轴旋转对象

我在三维空间中有一个笑脸的二维图像。 我希望它像一个风扇一样旋转,所以笑脸看起来好像它像一个轮子滚动。 由于笑脸被放置在3D空间中,它可以面向任何方向,但我总是希望它像轮子一样旋转。 我使用Minecraft,所以Z和Y有相反的工作。 (Y是高度)。 我使用这3个函数围绕x,y和z轴旋转。 public static final Vector rotateAroundAxisX(Vector v, double angle) { double y, z, cos, sin; cos = Math.cos(angle); sin = Math.sin(angle); y = v.getY() * cos – v.getZ() * sin; z = v.getY() * sin + v.getZ() * cos; return v.setY(y).setZ(z); } public static final Vector rotateAroundAxisY(Vector v, double angle) […]

如何在图像上创建hover效果

我正在试图让用户将鼠标hover在我的JPanel上的图像上时,图像变成了不同的图像。 我有两个类,一个是JPanel,另一个是游戏(蛇游戏)。 我如何实现mouseListener,使图像更改hover? snake.java(主): public class snake { public static int mouseX; public static int mouseY; public static void main(String[] args) { // JFrame JFrame obj = new JFrame("Snake"); gameplay Gameplay = new gameplay(); obj.setBounds(10, 10, 905, 700); obj.setBackground(Color.DARK_GRAY); obj.setResizable(false); obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); obj.add(Gameplay); obj.setVisible(true); obj.addMouseMotionListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { mouseX = e.getX(); […]

Java二维池碰撞物理

我已经开始编写一个简单的游戏池,比预期的要困难得多。 我尝试阅读教程,但没有帮助我解决我的问题。 球的速度(从白球击中)很好,但白球全是错误的,当有多个球堆在彼此附近时,根本不起作用。 任何帮助深表感谢 !! PS道歉的长期职位 这是代码 球的碰撞方法 public void handleCollision(List<Ball> balls) { for (Ball ball : balls) { if (ball == this) continue; if (ball.collidesWith(this)) { if ((ball.getVelocity().x + ball.getVelocity().y) > (this.getVelocity().x + this.getVelocity().y)) Collision.handleBallCollision(ball, this); else Collision.handleBallCollision(this, ball); } } } public boolean collidesWith(Ball ball) { if (position.distance(ball.getPosition()) – (2 * RADIUS) < […]