我需要制作一个可联网的吃豆人游戏版本来完成我的大学作业。我认为最好的方法是先创建一个本地的吃豆人游戏副本,然后扩展其功能以实现联网游戏。
我必须说我对Java GUI开发和利用Java内部的这些功能还比较新。
我已经开始按照上述链接学习使用Java进行游戏开发,以“吃豆人”游戏为例。
我决定将迷宫表示为一个int数组,其中不同的值表示不同的含义。然而,当主游戏循环中的绘图方法运行时,我正在使用此方法重新绘制整个迷宫。
for (int i : theGame.getMaze())
{
if (i == 4)
{
g.setColor(mazeWallColour);
g.fillRect(curX, curY, cellSize, cellSize);
curX += 25;
}
else
{
curX += cellSize;
}
index++;
// Move to new row
if (index == 25)
{
index = 0;
curX = 10;
curY += cellSize;
}
}
然而,这只提供了不到1fps的速度。尽管我注意到上面链接的示例使用了类似的重绘方式,我认为它在一个不可见的图像上进行(有点像双缓冲[我使用了像第一个链接中解释的BufferStrategy])。有什么更好的方法来重新绘制迷宫呢?
任何指针/建议都将很有用。
谢谢您的时间。 http://pastebin.com/m25052d5a - 用于主游戏类。
编辑:我刚刚注意到在试图查看哪些代码执行时间很长时发生了一些非常奇怪的事情。
在paintClear(Graphics g)方法中,我添加了
ocean = sprites.getSprite("oceano.gif");
g.setPaint(new TexturePaint(ocean, new Rectangle(0,t,ocean.getWidth(),ocean.getHeight())));
g.fillRect(10, 10,getWidth() - 20,getHeight() - 110);
当我加入了这些代码时,整个程序都运行得很顺利 - 但是当我删除这些代码后,整个程序变慢了?这是什么原因造成的?