gpt4 book ai didi

JAVA客户端-服务器游戏

转载 作者:行者123 更新时间:2023-12-01 23:50:56 24 4
gpt4 key购买 nike

我必须准备一个受此启发的游戏 game 。当然,它应该很简单,但不幸的是它必须使用客户端-服务器通信才能允许两个玩家一起玩。到目前为止,我已经准备好了纹理,并且正在尝试让其中一辆车移动。遗憾的是事情并不像看起来那么简单。我被卡住了,无法继续...我只想使用四个箭头:向上 - 汽车加速,向下 - 汽车减速,向左 - 向左转,向右 - 向右转。当然,如果我们不按向上按钮或向下按钮,汽车应该减速,但速度会更慢。我请求提示!

这是我的代码:

package destructionderby;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

class CRX extends JFrame implements KeyListener
{
File imageFile2;
BufferedImage crxModel;
public int speed;
int posX, posY;
JPanel crxPanel;
public CRX()
{
speed = 0;
posX=562;
posY = 420;
crxPanel = new JPanel();
imageFile2 = new File("crx.png");
try
{
crxModel = ImageIO.read(imageFile2);
}
catch (IOException e)
{
System.err.println("File access error");
}
addKeyListener(this);
}
public void paint(Graphics g)
{
while (true)
{
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(crxModel, posX+speed, posY, null);
repaint();
}
}

//-------------------KEY LISTENER--------------------
public void keyTyped (KeyEvent key)
{
if (key.getKeyCode()==38) //38 == UP; 40==DOWN; 37==LEFT; 39==RIGHT
{
speed +=10;
}
if (key.getKeyCode()==40)
{
if (speed >10)
{
speed-=10;
}
else speed=0;
}
}
@Override
public void keyPressed(KeyEvent key)
{

}
@Override
public void keyReleased(KeyEvent key)
{

}
}

class MainWindow extends JFrame
{
JPanel mainWindow;
BufferedImage backgroundImage;
CRX crx;
MainWindow()
{
super("Destruction Derby");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800,600);
setResizable(false);
setVisible(true);
init();
}
void init()
{
mainWindow = new JPanel();
File imageFile= new File("background.png");
//:::...ZAŁADOWANIE OBRAZKA TŁA:::...
try
{
backgroundImage = ImageIO.read(imageFile);
}
catch (IOException e)
{
System.err.println("File access error");
}
crx = new CRX();
paint(getGraphics());
}

@Override
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(backgroundImage, 0, 0, this);
crx.paint(getGraphics());
}
}

public class DestructionDerby
{
public static void main(String[] args)
{
new MainWindow();
}
}

这是我的 NetBeans 项目:http://www2.zippyshare.com/v/30402578/file.html

最佳答案

  1. JFrame默认不对KeyEvent使用react,放JPanel那里

  2. 不要直接对 JFrame 进行 Paint(),而使用 JPanel

  3. 覆盖 JPanel 中的paintComponent,添加 super.paintComponent() 作为第一个代码行(与paint() 相同)

  4. 使用 KeyBindings(此处有大量有关这些键的示例)而不是 KeyListener

  5. 出于原因,有两个 JFrame,不要扩展 JFrame,创建局部变量

  6. 也将图像加载到局部变量

关于JAVA客户端-服务器游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com