目前,我正在玩JavaFX,因为我正在为我的Java Fundamentals类最终项目编写一个Snake游戏。我用动画创建简单的游戏并不是那么新,因为我在C中使用PyGame模块和SDL做了一些。无论如何,现在我很难理解JavaFX中某些对象的相关性,特别是在组合时使用SceneBuilder的FXML。
我只是无法理解如何创建我曾经在PyGame或SDL中实现的等效游戏循环。我想用下面的代码做的是在创建新的Game对象后立即进入游戏循环,并在SceneBuilder中创建的gameCanvas上连续绘制游戏状态。我想我以后可以轻松管理所有的东西,但我无法理清如何在FXML画布和我想要运行的游戏循环之间建立合法的联系。
GameController.java
def main():
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
parseAble = False
temp = ''
# The -1 ensures that you're getting the actual file extension of
# the file, your previous code will fail with filenames like
# "file.bpmn.xml"
if f.split('.')[-1] == 'bpmn':
print(f.split('.')[-1])
n = '.'.join(f.split('.')[:-1]) + '.xml'
shutil.move(f, n)
print(f + ' > ' + n)
parseAble = True
elif f.split('.')[-1] == 'xml':
parseAble = True
n = f
if parseAble == True:
print(n)
x = FileParser(n)
x.getLaneInfo()
x.getTaskData()
x.sortTasks()
x.collectUrls()
x.outputJsonFile(x.serialize())
shutil.move(n, f)
Game.java
public class GameController implements Initializable, ControlledScreen {
@FXML
private Canvas gameCanvas;
@Override
public void setScreenParent(ScreensController screenPage) {
// THIS IS FOR SCENE MANAGEMENT CONCEPT
}
答案 0 :(得分:0)
您无法使用FXML文件创建新场景。请改用
public class Screen extends Application implements Runnable
{
@Override
public void start ( Stage primaryStage )
{
Pane pane = new Pane ();
Scene scene = new Scene(pane,500,300);
primaryStage.setScene ( scene );
primaryStage.show ();
}
@Override
public void run ()
{
launch ();
}
}
您要添加的任何内容都会转到窗格元素您的画布等。 顺便说一句,让dificulty枚举不像
enum {easy,medium,hard}
通过这种方式,没有人可以将缺陷级别设置为不存在的东西。