对于我的大学任务,我必须制作一个可联网的pacman版本.我认为我最好先制作pacman的本地副本,然后扩展此功能以进行网络播放.
我不得不说,我对java GUI开发相对较新,并在java中使用这些功能.
http://www.planetalia.com/cursos/Java-Invaders/
http://javaboutique.internet.com/PacMan/source.html
我已经开始关注java中游戏开发的上述链接以及pacman游戏的一个例子.
我决定将迷宫表示为一个int数组,其中不同的值意味着不同的东西.但是当主游戏循环中的paint方法运行时,我正在用这种方法重绘整个迷宫.
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.虽然我已经注意到上面链接的示例使用类似的方式重绘每次调用paint方法,我相信这是在一个不可见的图像(有点像双缓冲[有点像第一个链接使用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);
这让整个事情顺利进行 - 然而当我删除这些线条时,整个事情变慢了?可能是什么导致了这个?
更新的代码