- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要一些关于制作平铺 map 的帮助,我只是得到一个白色的屏幕,而不是上面有图像(平铺)的 map 。有人可以帮忙吗?
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, y, 20, 20);
}
if(i >= 125 && i < 225)
{
blockImg[i] = BLOCK_DIRT;
blocks[i] = new Rectangle(x, y, 20, 20);
}
if(i >= 225 && i < 500)
{
blockImg[i] = BLOCK_STONE;
blocks[i] = new Rectangle(x, y, 20, 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, 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, 0, 0, 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();
}
}
最佳答案
我稍微修改了你的代码,试试
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;
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(Frame1.class.getResource("images/openFile.gif")).getImage();
BLOCK_DIRT = new ImageIcon(Frame1.class.getResource("images/openFile.gif")).getImage();
BLOCK_STONE = new ImageIcon(Frame1.class.getResource("images/openFile.gif")).getImage();
BLOCK_SKY = new ImageIcon(Frame1.class.getResource("images/openFile.gif")).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, y, 20, 20);
}
if(i >= 125 && i < 225)
{
blockImg[i] = BLOCK_DIRT;
blocks[i] = new Rectangle(x, y, 20, 20);
}
if(i >= 225 && i < 500)
{
blockImg[i] = BLOCK_STONE;
blocks[i] = new Rectangle(x, y, 20, 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);
}
}
}
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();
repaint();
}
}
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, 0, GWIDTH, GHEIGHT);
//Draw Game elements
draw(dbg);
}
/* Draw all game content in this method */
public void draw(Graphics g){
world.draw(g);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
gameRender();
paintScreen(g);
}
private void paintScreen(Graphics g){
try{
// g = this.getGraphics();
if(dbImage != null && g != null){
g.drawImage(dbImage, 0, 0, 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;
}
}
}
class Main extends JFrame
{
GamePanel gp;
public Main()
{
gp = new GamePanel();
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(gp);
setResizable(false);
setVisible(true);
}
public static void main(String[] args)
{
Main m = new Main();
}
}
关于java - 如何创建一个平铺 map (我只是得到一个白屏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238822/
我是OpenGL新手,我想用我的着色器在屏幕上绘制一个简单的三角形。我设置了缓冲区并编写了一个着色器,但是它似乎不起作用。它显示白色屏幕,我尝试使用glGenBuffer更改glCreateBuffe
我现在真的很沮丧,JS 从来不适合我。我不知道我这次犯了什么小错误,如果你指出的话,我将不胜感激。我不需要动画或任何东西,如果有人告诉我错误,我会很高兴。 window.onload = functi
我正在开发一个 phonegap 应用程序,我使用了一个多页面模板,如 page1.html、page2.html。每个页面都会访问服务器并呈现输出并将其显示在 ListView 中。所以问题是如果我
我有一台 iPad 2,我正在 viewDidLoad 中测试此代码,并调用此代码 -(void)stillCameraStart{ GPUImageStillCamera *stillCam=[[G
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
将 Android 模拟器更新到版本 27.0.1 后,出现白屏,模拟器甚至无法启动。 这是行为的截图: 屏幕上没有启动 Logo 或任何内容。 这是模拟器设置的屏幕截图: 所有模拟器都无法正常工作,
我想在我的游戏中实现网络功能,但是我有一个很大的问题。当我尝试创建 JFrame 组件时,执行网络代码后,它总是显示为白屏。虽然网络可以工作,但我无法以任何方式让用户界面工作。这是网络代码: pack
我收到有关此问题的错误报告:https://github.com/gatsbyjs/gatsby/issues/25920 但是 Gatsby 的人们似乎太忙了,无法回答,因此也许其他人也知道这个问题
我试图让 Magento 从我正在使用的主题的 adminHtml 而不是默认的核心位置加载核心文件,并将以下代码添加到我的扩展中: fort
当我在处理数据后尝试使用 Laravel Redirect 类重定向我的用户时,我目前遇到白屏死机。如果我使用 native php-function header("location ..."),应
我正在使用 react 路由器 dom 的仪表板工作。我有一个结构,即 Auth 页面和仪表板页面。当我从登录导航到 mainPages 并尝试在 DashboardContainer 中选择一个导航
我决定使用 3D WebGL 查看器来放置我的网站,但我有一个小问题。 一切正常,我可以移动我的对象并看到它,但是当我加载页面时,在单击时移动鼠标之前屏幕是黑色的。所以这对我来说不是问题,但对访问我网
我正在使用 CF 10,我试图找出为什么我无法得到一个错误来告诉我出了什么问题。 #session
Webkit 仍然有一些问题。在整理我昨天早上的错误后,我遇到了一个全新的线索,从 113 到直接崩溃(对于 iOS 开发人员来说真的很新,接受过 C++ 的正式培训,非常生疏哈哈)。 我终于得到了一
在我提出我的问题之前,我想提一下我尝试寻找解决方案 here和 here . 我正在创建一个使用 native UIWebView 的混合应用程序用于呈现响应式设计的 Web 应用程序。以下是问题描述
我在使用 libGDX 时遇到问题,当我在使用后退按钮退出后恢复应用程序时,我只看到一个白屏。 实际的应用程序运行,接受触摸输入并播放声音,但屏幕只是白色。 我读到过保持对纹理的静态引用可能会导致这个
我的页面中有很多链接,每个链接都有两个属性,格式和源。 它点击了什么我得到它的 2 attr 并像这样在 js 中制作 HTML。 $(".play").live('click',function(
我在 PHP 从数据库获取文本数据时遇到问题。有问题的数据是我从 share.mapbbcode.org 导出的 JSON 运行路线,因此我可以将它们绘制在 OSM map 上以进行个人跟踪。 我正在
当我点击应用程序的运行按钮时, the simulator just shows a white screen 但是应该有一个显示“Hello World”的按钮。另外,对于标签, an error
问题:启动时,GLWindow 仅显示白屏,光标显示加载圆圈,表示仍在加载某些内容。不久之后窗口显示“无响应”。 我已经尝试降级到 openGL 3.3,并且很乐意为此提供帮助,但问题仍然存在。 大家
我是一名优秀的程序员,十分优秀!