我正在制作一个java黑色杰克游戏,我需要处理每个新一轮的类,每次调用它时都会被重置(每个新一轮)。该类有以下变量:
public static LinkedList<String> playerHand = new LinkedList<>(), dealerHand = new LinkedList<>(); // creates hands for player and dealer
public static int playerValue, dealerValue; // value of the hand
这就是我从我的主课程中召唤这个课程的方式:
gameplay.NewRound.newHand(s);
&#39;游戏&#39;是java包,&#39; NewRound&#39;是班级,&#39; newHand&#39;是开始游戏玩法的空白,而且是#&是赌注。
我的问题是,课程重置,如手工值和链接列表等...如果我一直这样称呼它?或者我是否必须在NewRound类中添加MAIN并将其称为:
new gameplay.NewRound();
答案 0 :(得分:0)
对于您的问题:除非您已实现了执行此操作的方法,否则没有内置方法可以“重置”现有的类实例。通常,您只需创建一个新实例,垃圾收集器就可以从未使用的对象中释放内存。在某些情况下,当您希望实现“重置”行为时:对象创建过于昂贵,或者某些业务逻辑仅需要一定量的现有实例。
基本上,使代码优雅和可读的最佳方法是使其复制域对象的行为。
我的建议是:Game
课程的一个实例,它将跟踪整个游戏。此Game
还有一个创建NewRound
的方法,它将返回NewRound
`
public class Game{
private List<Round> roundList = new LinkedList<Round>();
public Round startNewRound(int bet){
Round newRound = new Round(bet);
this.roundList.add(newRound);
return newRound;
}
}
public class Round{
public List<String> dealerHand;
public List<String> playerHand;
public int bet;
public Round(int bet){
this.dealerHand = new LinkedList<String>();
this.playerHand = new LinkedList<String>();
this.bet = bet
}
public String compareHands(){
//Some comparison between hands, return "dealer" or "player"
}
}
public static void main(String[] args){
Game game = new Game();
Round roundOne = game.startNewRound(1);
roundOne.dealerHand.add("Ace Of Spades");
roundOne.playerHand.add("Some other card");
System.out.println(roundOne.compareHands+" wins!");
Round roundTwo = game.startNewRound(4);
roundTwo.dealerHand.add("Another Ace Of Spades");
roundTwo.playerHand.add("Some other stupid card");
System.out.println(roundTwo.compareHands+" wins!");
}
`