我得到了一本名为“Java中的杀手游戏编程”的书我本来应该安装J2SE 5.0,但J2SE已经在生命终结中。在与StackOverflow和作者讨论之后,我安装了oracle.com的更新版本,即JSE 7u5。我下载了包含JRE的JDK。所以现在我使用带有JDK 1.7的NetBeans 7.1.2,但终端将其称为1.7.0_05。第一个程序说它没有主方法就无法运行。 我安装的更新版本是否有可能不适用于本书中的程序?我应该尝试另一个推荐版本吗?我在下面发布了完整的代码。没有编辑。它来自这个链接 http://fivedots.coe.psu.ac.th/~ad/jg/ch1/ch1.pdf 任何错误都是斜体和粗体。
public class GamePanel extends JPanel implements Runnable
{
private static final int PWIDTH = 500; // size of panel
private static final int PHEIGHT = 400;
private Thread animator;
private boolean running = false;
private boolean gameOver = false;
// more variables, explained later
:
public GamePanel()
// for the animation
// stops the animation
// for game termination
{
setBackground(***Color***.white); // white background
setPreferredSize( new ***Dimension***(PWIDTH, PHEIGHT));
// create game components
} // end of GamePanel()
public void addNotify()
/* Wait for the JPanel to be added to the
JFrame/JApplet before starting. */
{
***super.addNotify();*** // creates the peer
startGame(); // start the thread
}
private void startGame()
// initialise and start the thread
{
if (animator == null || !running) {
***animator = new Thread(this);***
animator.start();
}
} // end of startGame()
public void stopGame()
// called by the user to stop execution
{ running = false; }
public void run()
/* Repeatedly update, render, sleep */
{
running = true;
while(running) {
gameUpdate();
***gameRender();***
repaint();
try {
// game state is updated
// render to a buffer
// paint with the buffer
Thread.sleep(20); // sleep a bit
}
catch(InterruptedException ex){}
}
System.exit(0); // so enclosing JFrame/JApplet exits
} // end of run()
private void gameUpdate()
{ if (!gameOver)
// update game state ...
}
// more methods, explained later...
} // end of GamePanel class
答案 0 :(得分:1)
通常您应该使用最新版本。有时您可能会遇到问题,因为您的“旧”代码现在使用保留的关键字。即使使用Java 7,您也可以将编译器设置为使用-source 1.5
和-target 1.5
对java 1.5进行编译。但是,它更可能与java编译器版本有不同的问题。
如果没有错误消息,则您的描述过于通用,无法解决实际问题。
答案 1 :(得分:1)
好吧,我想我明白了。它不是完整的代码,只是代码的示例或框架。它不应该运行。它本来应该有助于理解。