私は現在、Java で最初のゲームを作成しようとしています。マップ (背景) を少し大きく変更するまで、横スクロール ゲームを作成することに成功しました。背景画像で奇妙な問題が発生し始めました。
5250px x 5148px までの解像度で問題なく動作しました。これを超えると、画像が表示されなくなります。
ファイル サイズを小さくしようとしましたが、この解像度を超える画像はファイル サイズに関係なく表示されません。
私のゲームは、
Frame、Dude、Board の 3 つのファイルで構成されています。
Frame.java
package OurGame;
import javax.swing.*;
public class Frame {
public static void main(String[] args)
{
JFrame frame = new JFrame("Game");
frame.add(new Board());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
おい.java
package OurGame;
import java.awt.Image;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
public class Dude {
int x, dx, y, dy, nx2, ny2;
Image still;
public Dude()
{
ImageIcon i = new ImageIcon("/Users/Connor/Desktop/square.jpg");
still = i.getImage();
x = 250;
y = 250;
nx2 = 485;
ny2 = 485;
}
public void move()
{
x = x + dx;
y = y + dy;
nx2 = nx2 + dx;
ny2 = ny2 + dy;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public Image getImage()
{
return still;
}
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
if(key == KeyEvent.VK_A)
{
dx = -1;
}
if(key == KeyEvent.VK_D)
{
dx = 1;
}
if(key == KeyEvent.VK_W)
{
dy = -1;
}
if(key == KeyEvent.VK_S)
{
dy = 1;
}
}
public void keyReleased(KeyEvent e)
{
int key = e.getKeyCode();
if(key == KeyEvent.VK_A)
{
dx = 0;
}
if(key == KeyEvent.VK_D)
{
dx = 0;
}
if(key == KeyEvent.VK_W)
{
dy = 0;
}
if(key == KeyEvent.VK_S)
{
dy = 0;
}
}
}
Board.java
package OurGame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Board extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
Dude p;
Image img;
Timer time;
public Board()
{
p = new Dude();
addKeyListener(new AL());
setFocusable(true);
ImageIcon i = new ImageIcon("/Users/Connor/Desktop/background.jpg");
img = i.getImage();
time = new Timer(5, this);
time.start();
}
public void actionPerformed(ActionEvent e)
{
p.move();
repaint();
}
public void paint(Graphics g)
{
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(img, 485-p.nx2, 485-p.ny2, null);
g2d.drawImage(p.getImage(), 200, 200, null);
}
private class AL extends KeyAdapter
{
public void keyReleased(KeyEvent e)
{
p.keyReleased(e);
}
public void keyPressed(KeyEvent e)
{
p.keyPressed(e);
}
}
}