浅浅改了一下,你没给代码仓库,所以修改后的代码就被我传到reproduce/demo2048上了(这是我临时代码的仓库不要介意)
首先使用回调解耦的方法用得非常好,确实不应该“越职”修改
其次代码逻辑问题不大,就是控制层和视图层并没有完全分离,一个简单的例子是_CardPane中混杂了合并卡片的逻辑,其他的代码可以自己想想是属于视图还是控制的,尽量分离,不过我对JavaFX不是很熟,怎么改出优雅的代码还得是你来
然后多使用语法糖简化代码,比如Menu gameMenu=new Menu("游戏");
,等号后面明确给出类型,那么前置类型就可以用var
省略(JDK10以上),var gameMenu=new Menu("游戏");
,其他的语法糖也可以想想怎么用上
最后要说的是注释和代码风格,你的代码中有大量的无效注释,实际上好的代码是自解释的,比如
score+=card.getNumber();//计入分数
voidCards.add(card);//添加到列表中
card.draw();//重绘
cardMatrixPane.createKeyListener();//添加键盘监听
还有很多地方,其实这些代码你一看就能懂,注释就是多余的了,代码风格的话我把一些操作合并整理了一下,你可以对照着看看(上下左右操作我想了很久也没办法合并那就不改了)