java怎么创建一个手机界面_如何创建一个平铺的地图(我只是得到一个白色的屏幕)Java...

我需要一些制作平铺地图的帮助,我只是得到一个白色的屏幕而不是带有图像(平铺)的地图.有人可以帮忙吗?

World.java

package game.test.src;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Rectangle;

import javax.swing.ImageIcon;

public class World {

private Rectangle[] blocks;

private Image[] blockImg;

private final int arrayNum = 500;

//Block Images

private Image BLOCK_GRASS,BLOCK_DIRT,BLOCK_STONE,BLOCK_SKY;

private int x,y;

public World(){

BLOCK_GRASS = new ImageIcon("C:/Users/Pim/Desktop/2D game test/Game test 2/src/game/test/src/images/tile_grass").getImage();

BLOCK_DIRT = new ImageIcon("C:/Users/Pim/Desktop/2D game test/Game test 2/src/game/test/src/images/tile_dirt").getImage();

BLOCK_STONE = new ImageIcon("C:/Users/Pim/Desktop/2D game test/Game test 2/src/game/test/src/images/tile_stonek").getImage();

BLOCK_SKY = new ImageIcon("C:/Users/Pim/Desktop/2D game test/Game test 2/src/game/test/src/images/tile_sky").getImage();

blocks = new Rectangle[500];

blockImg = new Image[500];

loadArrays();

}

private void loadArrays()

{

for(int i = 0; i < arrayNum; i++)

{

if(x >= 500){

x = 0;

y += 20;

}

if(i >= 0 && i < 100)

{

blockImg[i] = BLOCK_SKY;

blocks[i] = new Rectangle(x,y,20,20);

}

if(i >= 100 && i < 125)

{

blockImg[i] = BLOCK_GRASS;

blocks[i] = new Rectangle(x,20);

}

if(i >= 125 && i < 225)

{

blockImg[i] = BLOCK_DIRT;

blocks[i] = new Rectangle(x,20);

}

if(i >= 225 && i < 500)

{

blockImg[i] = BLOCK_STONE;

blocks[i] = new Rectangle(x,20);

}

x += 20;

}

}

public void draw(Graphics g)

{

for(int i = 0; i< arrayNum; i++){

g.drawImage(blockImg[i],blocks[i].x,blocks[i].y,null);

}

}

}

这是GamePanel.java

package game.test.src;

import java.awt.*;

import java.awt.event.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JPanel;

public class GamePanel extends JPanel implements Runnable {

//Double buffering

private Image dbImage;

private Graphics dbg;

//JPanel variables

static final int GWIDTH = 500,GHEIGHT = 400;

static final Dimension gameDim = new Dimension(GWIDTH,GHEIGHT);

//Game variables

private Thread game;

private volatile boolean running = false;

//Game Objects

World world;

public GamePanel(){

world = new World();

setPreferredSize(gameDim);

setBackground(Color.WHITE);

setFocusable(true);

requestFocus();

//Handle all key inputs from user

addKeyListener(new KeyAdapter(){

@Override

public void keyPressed(KeyEvent e){

}

@Override

public void keyReleased(KeyEvent e){

}

@Override

public void keyTyped(KeyEvent e){

}

});

}

public void run(){

while(running){

gameUpdate();

gameRender();

paintScreen();

}

}

private void gameUpdate(){

if(running && game != null){

}

}

private void gameRender(){

if(dbImage == null){ // Create the buffer

dbImage = createImage(GWIDTH,GHEIGHT);

if(dbImage == null){

System.err.println("dbImage is still null!");

return;

}else{

dbg = dbImage.getGraphics();

}

}

//Clear the screen

dbg.setColor(Color.WHITE);

dbg.fillRect(0,GWIDTH,GHEIGHT);

//Draw Game elements

draw(dbg);

}

/* Draw all game content in this method */

public void draw(Graphics g){

world.draw(g);

}

private void paintScreen(){

Graphics g;

try{

g = this.getGraphics();

if(dbImage != null && g != null){

g.drawImage(dbImage,null);

}

Toolkit.getDefaultToolkit().sync(); //For some operating systems

g.dispose();

}catch(Exception e){

System.err.println(e);

}

}

public void addNotify(){

super.addNotify();

startGame();

}

private void startGame(){

if(game == null || !running){

game = new Thread(this);

game.start();

running = true;

}

}

public void stopGame(){

if(running){

running = false;

}

}

}

和Main.java

package game.test.src;

import javax.swing.JFrame;

public class Main extends JFrame

{

GamePanel gp;

public Main()

{

gp = new GamePanel();

setSize(500,400);

setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

setResizable(false);

add(gp);

}

public static void main(String[] args)

{

Main m = new Main();

}

}

谢谢您的帮助!

附:抱歉我的英语我是荷兰人.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值