首页 > 解决方案 > 选择可能的最高数字

问题描述

我正在用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(选卡)

标签: javaarraysrandom

解决方案


一种方法是构造一个名为 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,以确保删除以前的值。如果您有任何其他问题,请与我们联系:)


推荐阅读