如何通过编译器生成随机数并在卡牌游戏中累加对应随机数得分
当然可以实现这个需求!你只需要稍微修改你的clsCard类,把生成卡牌时用到的随机数保存下来,之后就能在主程序中获取并用于得分累加了。下面是具体的修改方案:
解决方案
首先,我们需要在clsCard类中添加变量来保存生成level和object时的随机数,同时提供对应的getter方法让外部代码可以访问这些数值。
修改后的clsCard类
public class clsCard { //Main variables of my program private int value; private int level, object; // 新增变量:保存生成level和object的随机数 private int levelRandom; private int objectRandom; private final int MaxFaceValue= 10; private static String[] objects = {"Joker","hearts","spades","diamond","clubs"}; private static String[] levels = {"Joker","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"}; public clsCard() { // 先生成随机数并保存,再赋值给level和object levelRandom = (int)(Math.random()*levels.length); this.level= levelRandom; objectRandom = (int)(Math.random()*objects.length); this.object= objectRandom; } public @Override String toString() { if(levels[level].equals("Joker") || objects[object].equals("Joker")) return "Joker"; else return levels[level] + " of " + objects[object]; } public int getLevel() { return level; } public int getObject() { return object; } // 新增getter方法:获取生成level的随机数 public int getLevelRandom() { return levelRandom; } // 新增getter方法:获取生成object的随机数 public int getObjectRandom() { return objectRandom; } }
主程序中实现得分累加
现在你可以在主程序中创建卡牌后,获取生成等级的随机数,并根据条件累加得分:
public class Main { public static void main(String[] args) { // 初始化总得分 int totalScore = 0; // 创建一张卡牌 clsCard cardFace = new clsCard(); System.out.println("生成的卡牌:" + cardFace); // 获取生成等级时的随机数 int levelRand = cardFace.getLevelRandom(); // 当随机数为5时,累加得分 if (levelRand == 5) { totalScore += levelRand; System.out.println("触发得分累加!当前总得分:" + totalScore); } } }
补充说明
- 如果你只是需要用
level的数值来判断(因为当前level本身就是生成时的随机数结果),也可以直接使用cardFace.getLevel()来替代getLevelRandom(),效果是一样的。但保存独立的levelRandom变量会让代码更清晰,尤其是以后如果修改level的生成逻辑(比如不是直接用随机数赋值)时,能确保你获取的是原始的随机数。 - 同样的逻辑也适用于
object的随机数,如果你需要对花色的随机数进行得分处理,也可以用getObjectRandom()来获取。
内容的提问来源于stack exchange,提问作者Bartlomiej Kaczmarek
相关产品推荐
相关产品推荐

