我正在使用 MVC 模式创建一个简单的 Blackjack 游戏。
主 Controller 称为Game
,主视图称为BlackjackView
,我当前使用的它的实现是ConsoleView
,主模型类称为 Blackjack
。
这是一些简化的代码,我不明白如何实现下一部分:
游戏.java
public class Game {
private Blackjack blackjack;
private BlackjackView view;
public static void main(String[] args) {
Game game = new Game();
game.start();
}
private void start() {
blackjack = Blackjack.initializeGame();
view = new ConsoleView(blackjack);
blackjack.takeTurns();
}
}
Blackjack.java
import java.util.*;
public class Blackjack {
private List<Person> players = new ArrayList<Person>();
public static Blackjack initializeGame() {
return new Blackjack();
}
public void takeTurns() {
for (Person player : players) {
// ask player to 'hit' or 'stay'
}
}
}
我无法理解如何做到这一点,因为 Blackjack
应该与询问用户某些事情或获取用户输入无关。
据我正确理解,我的 View 类必须显示问题(“玩家,你想击中还是留下?”)并且我的 Controller 类必须处理输入。
我想将对 Game
的引用传递给 Blackjack
,这样我就可以要求它询问用户输入,但我知道我不应该这样做那个。
最佳答案
根据您向我们展示的内容,您实际上尚未创建 Controller 或 View 。该模型不应该向任何人“询问”任何事情。这是一个选择并告知的过程。
输入 View 告诉 Controller 提供了哪些输入。 Controller 选择模型实例,然后告诉模型要处理哪些输入。然后 Controller 选择下一个 View ,然后告诉 View 它使用的模型实例。然后, View 向模型询问结果,并根据 View 逻辑格式化结果。然后,该 View 要么等待输入,要么调用输入 View 来执行此操作。循环重复。
关于java - MVC模式;我的模型类需要用户输入,但我知道它不应该询问用户或 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101843/