java - 选择可能的最高数字
问题描述
我正在用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,以确保删除以前的值。如果您有任何其他问题,请与我们联系:)
推荐阅读
- google-api - Google reCaptcha 通过 API 创建凭据
- postgresql - 使用 timescaledb 和 postgresql 12 进行复制时,使用 pg_basebackup 时容器关闭
- pandas - 如何在数据框中的两列中找到部分匹配项
- reactjs - Docusaurus 2 如何在导航栏中添加自定义反应组件
- matlab - pdist 输入数据设置错误 - Matlab
- javascript - 修改表
- r - 是否有一个函数可以获取相同类型的行之间的差异?
- javascript - 如何确保在循环内打开正确的引导模式
- android - 在 Android 中点击 One Signal 推送通知时如何导航到特定页面?
- swift - 如何正确链接 Xcode 中的框架?