java - 选择可能的最大数字

标签 java arrays random

我正在用java做纸牌游戏,有一个简单的规则,你必须选择等于上一个或更低的数字。我无法让程序选择与之前相同或更少的数字。

public static void main(String[] args) throws InterruptedException {
        Random First = new Random();
        TimeUnit.MILLISECONDS.sleep(1000);
        System.out.print("First card is: ");
        int FirstCard = 8;
        int Losowa = First.nextInt(FirstCard);
        System.out.println(Losowa);
        TimeUnit.MILLISECONDS.sleep(600);
        Random il_kart = new Random();
        System.out.print("Your cards: ");
        for (int i = tablica[0]; i < 5; i++) {
            int upperbound = 8;
            tablica[i] = il_kart.nextInt(upperbound);
            System.out.print(tablica[i] + " ");
            TimeUnit.MILLISECONDS.sleep(250);


        }


        Random Enemy_cards = new Random();
        System.out.print("enemy's card is: ");
        for (int i = EnemyTab[0]; i < 5; i++) {
            int upperbound = 8;
            EnemyTab[i] = il_kart.nextInt(upperbound);
            System.out.print(EnemyTab[i] + " ");
            TimeUnit.MILLISECONDS.sleep(250);
        }
        TimeUnit.MILLISECONDS.sleep(800);
        System.out.println(" ");
        System.out.println("Your turn!");

        if (tablica[0] <= Losowa || tablica[1] <= Losowa || tablica[2] <= Losowa || tablica[3] <= Losowa || tablica[4] <= Losowa) {

            Scanner choose = new Scanner(System.in);
            int wyb = choose.nextInt();
            if (wyb <= tablica[0] || wyb <= tablica[1] || wyb <= tablica[2] || wyb <= tablica[3] || wyb <= tablica[4]) {
                System.out.println("You choose " + wyb);
            }
            while (wyb > Losowa) {
                System.out.print("You can't play this");
                System.out.println("Choose another card");
                choose = new Scanner(System.in);
                wyb = choose.nextInt();
                System.out.println("You choose " + wyb);
            }

        } else if (tablica[0] != Losowa || tablica[1] != Losowa || tablica[2] != Losowa || tablica[3] != Losowa || tablica[4] != Losowa) {
            System.out.println("You can't play any card");
        }

        TimeUnit.MILLISECONDS.sleep(800);
        System.out.println("Enemy's turn...");
        TimeUnit.MILLISECONDS.sleep(800);
        System.out.print("Your opponent plays: ");

        if (EnemyTab[0] <= Losowa || EnemyTab[0] <= tablica[wyb] || EnemyTab[1] <= Losowa || EnemyTab[1] <= tablica[wyb] || EnemyTab[2] <= Losowa || EnemyTab[2] <= tablica[wyb] || EnemyTab[3] <= Losowa || EnemyTab[3] <= tablica[wyb] || EnemyTab[4] <= Losowa || EnemyTab[4] <= tablica[wyb]) {
            int odp = tablica[wyb];
            for (int i = 0; i <= EnemyTab.length; i++)
                System.out.println(odp);

            TimeUnit.MILLISECONDS.sleep(800);




        }

输出为:

First card: 5
Your cards are: 1 4 7 0 4  
enemy's card is: 6 7 6 6 3  
Your turn!
4
You choose: 4
Enemy's turn...
Your enemy plays: 7
7
7
7
7
7
Round 2
Your turn!

我该怎么做才能让计算机选择等于或小于我的数字? Losowa是第一张随机卡,wyb是Scanner(选择卡)

最佳答案

一种方法是构造一个名为 equalOrLower 的 ArrayList,每当计算机需要选择时,就会创建一个新的 ArrayList,它将存储所有值小于玩家数量的敌人可能的牌。然后敌人(计算机)只能从新创建的 ArrayList 中选择一个值。

 int playerNumber = 5;
    int[] enemyPossibleCards = {1,2,6,4,9};

    ArrayList<Integer> equalOrLess = new ArrayList<>();

    equalOrLess.clear();
    for(int i = 0; i < enemyPossibleCards.length; i++){
        if(enemyPossibleCards[i] < playerNumber)
            equalOrLess.add(enemyPossibleCards[i]);
    }

这是一些示例代码,可以帮助您理解我的答案。每次调用该函数时都会清除 ArrayList,以确保删除以前的值。如果您还有任何疑问,请联系我们:)

关于java - 选择可能的最大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141690/

相关文章:

java - Java 中静态方法的 try-catch 缓慢

javascript - 如何使用 javascript 将图像数组显示为列表并使其可单击以显示一些文本?

javascript - 复制数组会产生奇怪的结果 ('copying' ==引用)

algorithm - 是否有任何无法揭示其模式的随机数生成算法?

具有私有(private)依赖类的 Java 公共(public)类

java - 如何一次 pull IntelliJ IDEA ULTIMATE 项目中的所有模块?

R:使用 Mersenne-Twister 种子将来自 runif 的随机值极端聚集

javascript - 使用 Javascript 在 HTML5 Canvas 中随机化 RGB,为每个 fillRect 设置一个新值

java - RecyclerView 的奇怪行为

c++ - Typedef 数组混淆