我正在制作一个带有tilemap的RPG.为了生成tilemap,我循环通过一个二维数组,但这意味着当我重新绘制时,我必须每次都这样做.如果我重画太多屏幕闪烁,我怎么能阻止这个.
package sexyCyborgFromAnOtherDimension;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Game extends JPanel
{
KeyLis listener;
int mapX = 20;
int mapY = 20;
boolean up = false;
boolean down = false;
boolean right = false;
boolean left = false;
String[][] map;
public Game()
{
super();
try
{
map = load("/maps/map1.txt");
}
catch (IOException e)
{
// TODO Auto-generated catch …Run Code Online (Sandbox Code Playgroud) 如何将inputStream转换为URL?这是我的代码:
InputStream song1 = this.getClass().getClassLoader().getResourceAsStream("/songs/BrokenAngel.mp3");
URL song1Url = song1.toUrl(); //<- pseudo code
MediaLocator ml = new MediaLocator(song1Url);
Player p;
try {
p = Manager.createPlayer(ml);
p.start();
} catch (NoPlayerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我正在用java制作一个基于平铺的平台游戏。我渲染一个存储在二维数组中的地图,但是当这个数组非常大时,我的游戏开始变得缓慢。我意识到我必须只渲染地图中可见的部分,我尝试这样做,但我编写了非常糟糕的代码,只能部分工作,所以我将其删除。我怎样才能正确地做到这一点?这是我的代码(没有黑客的东西)。另外我该如何使用System.nanoTime()而不是System.currentTimeMillis()?
package sexy_robot_from_another_dimension;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.TexturePaint;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Game extends JPanel
{
int playerX = 50;
int playerY = 50;
static boolean up = false;
static boolean down = false;
static boolean right = false;
static boolean left = false;
int playerSpeed = 1;
String[][] map;
int blockSize = 20; …Run Code Online (Sandbox Code Playgroud) 如何在2D游戏中随机形成孤岛?我不知道怎么开始!
void generateMap()
{
blocks.clear();
for(int x = 0; x < 150; x++)
{
for(int y = 0; y < 150; y++)
{
if(Math.random() < 0.5)
blocks.add(new Block(x * Block.blockSize, y * Block.blockSize, eBlockType.GRASS));
else
blocks.add(new Block(x * Block.blockSize, y * Block.blockSize, eBlockType.WATER));
}
}
}
Run Code Online (Sandbox Code Playgroud)
