小编Wil*_*ill的帖子

我应该用什么来显示游戏图形?

我有一个游戏系统但我不知道应该用它来显示它.我正在制作一个垂直射击游戏,我已经为所有控制敌人和玩家的课程编写了方法,但我不知道如何有效地展示游戏.我在想Canvas,它会重绘每一帧,但这真的是最有效的方法吗?

重要细节:

  1. 理想帧率:25fps
  2. 这是一场2D游戏
  3. 屏幕上任何时候都有25到100个对象,所有这些对象都在移动
  4. 显示的所有对象都是图像,均为PNG格式
  5. 窗口是640px×480px
  6. 现在所有的图像都被加载为BufferedImage,虽然我可以很容易地改变它

我需要一个坐标平面.如果不完全重构我的代码,这是唯一无法改变的基本部分.

最重要的是我拥有的一切设置方式,每帧的所有对象的移动,并在一个坐标平面上我设计的互动(带冲突检测和运动,没有图形组件的交易),那么一切都应该得到画到屏幕上,只需要去通过ArrayLists跟踪所有移动的对象并逐个绘制它们.

java graphics

8
推荐指数
1
解决办法
1万
查看次数

在JFrame中绘制Graphics2D

我正在制作一个2D垂直射击游戏,其中一切都是编码(和工作)但图形.我之前没有使用过Graphics类,所以这对我来说都是新手.以下是我用于将所有内容绘制到JFrame的代码:

public void paintAll()
{
    Graphics h = new Graphics2D();
    for(Bullet j : GameState.getEnBullets()){
        h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
    for(Enemy j : GameState.getEnemies()){
        h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
    for(Bullet j : GameState.getPlayBullets()){
        h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
    this.paint(h);
}
Run Code Online (Sandbox Code Playgroud)

第一行"Graphics h = new Graphics2D();" 产生错误,因为Graphics2d是抽象的,但我不知道从哪里开始.

我需要代码来获取我拥有的所有图像并将它们绘制到JFrame中的点.我提醒你,我以前从未这样做过,所以请告诉我这是否是错误的做法.

java graphics swing jframe paintcomponent

2
推荐指数
1
解决办法
1万
查看次数

如何设置 JFrame 的刷新率?

我有一个 2d 游戏,除了图形之外,整个结构都是完全编码的。我只是更新 JFrame 的单个组件,它是一个包含 50 个图像的 Graphic。每帧图像都位于不同的位置,因此需要刷新率。

为了绘制,我重写了 PaintComponent() 方法,因此我真正需要做的就是每 40 毫秒重新绘制该组件(同样,它只是一个 Graphic)。

如何设置 25FPS 的 JFrame?

java jframe

1
推荐指数
1
解决办法
1万
查看次数

图形不出现在JFrame中(包括SSCCE)

我正在制作游戏(参见我之前的主题)并且在途中遇到了很多问题.我所知道的是他的代码编译,运行,但窗口中没有任何内容,它只是灰色.在Andrew Thompson的建议中,我在这里发布了整个可编译版本.抱歉长度,但它是程序中的所有代码.很多事情可能没有意义(未使用的ActionPerformed来命名),部分是因为我在需要它的事件中实现了代码,但主要是因为我以前从未这样做过.

此外,到目前为止,我没有多线程,因为我再一次,我是新手,所以理想情况下我想保持这种方式,只是为了我的理智.

编辑:忘了提到我有4个PNG代表出现的4个不同的对象.我的代码足够灵活,您可以自己提供.这是我用于船只的图像在此输入图像描述 这是子弹的一个 在此输入图像描述 只需复制,把它们放在源文件中并命名为"Enemy-ship""ship2""Ebullet"和"PBullet"

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

import javax.swing.JFrame;


public class GameController extends JFrame implements ActionListener {

    /**
     * 
     */
    private static final long serialVersionUID = -3599196025204169130L;
    private static GameView window;
    private static Timer time;

    public GameController()
    {
        setTitle("Space Shooter");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 600);

        //window = new GameView(800,600);
        //window.setVisible(true);

        //
    }
    //TODO spawn
    /*public static void main(String args[])
    {
        //GameController c = new GameController();
        window = new GameView(800,600);
        window.setVisible(true);

        time = new Timer(40, this);
        time.schedule( new …
Run Code Online (Sandbox Code Playgroud)

java debugging graphics swing jframe

1
推荐指数
1
解决办法
382
查看次数

标签 统计

java ×4

graphics ×3

jframe ×3

swing ×2

debugging ×1

paintcomponent ×1