gpt4 book ai didi

Java 二十一点 Swing gui ImageIcon

转载 作者:行者123 更新时间:2023-12-01 18:36:36 25 4
gpt4 key购买 nike

我一周前刚刚开始学习 Java,并完成了我的第一个二十一点程序。我想通过使用 Java swing (ImageIcon) 来增强它,以便每次我抽一张牌(比如说一张 A)时,它实际上都会将 A 作为图像显示在屏幕或我当前的手牌上。我编写了这个程序来显示我想要的卡片:

import java.awt.FlowLayout;
import javax.swing.*;

public class TenCards extends JFrame {

public TenCards() {

ImageIcon[] images = new ImageIcon[10];
// Saved the card images as 1,2,3...10.gif in my package
// looped them into the images list
for (int i = 1; i < images.length; i++) {
images[i] = new ImageIcon((getClass().getResource(i + ".gif")));

// testing by displaying 7,8 and 9 cards
}
setLayout(new FlowLayout(1, 1, 1));
add(new JLabel(images[7]));
add(new JLabel(images[8]));
add(new JLabel(images[9]));

}

public static void main(String[] args) {
// TODO Auto-generated method stub

JFrame frame = new TenCards();
frame.setTitle("Testing!");
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

Now my question is, given I have my blackjack class or program in another file, how do I combine both classes so that I can use all this image stuff in my blackjack program? I tried copy pasting my TenCards program into the Blackjack one to no avail :( If anyone could lend me a hand or point me towards the next step I would really appreciate it.

<小时/>

编辑我现在已经包含了我的二十一点程序并删除了另一个程序,因为 stackoverflow 不接受这两个程序的组合,因为代码太多。

import java.util.ArrayList;
import java.util.Scanner;

import javax.swing.JLabel;

public class myblackjack {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);

ArrayList<Integer> player = new ArrayList<Integer>();
ArrayList<Integer> dealer = new ArrayList<Integer>();
ArrayList<Integer> cards = new ArrayList<Integer>();

// Ace is 1 as per Amos' instructions
for ( int i =1; i <= 10; i++){
cards.add(i);}
// The 3 face cards representing 10
for (int z = 0; z <= 2; z++){
cards.add(10);}


player.add(cards.get((int) (Math.random()*12)));
player.add(cards.get((int) (Math.random()*12)));
dealer.add(cards.get((int) (Math.random()*12)));
dealer.add(cards.get((int) (Math.random()*12)));
System.out.println("Your cards: "+player);
boolean moreplayer = true, morecomputer = true;
System.out.println("Hit 0 to stop, 1 for another card");
int s1 = sc.nextInt();
while (moreplayer || morecomputer){
int dealersum = 0, playersum = 0 ;

for (int p = 0; p<dealer.size(); p++){
dealersum = dealersum + dealer.get(p);
} if (dealersum<15){
morecomputer = true;
dealer.add(cards.get((int) (Math.random()*12)));
dealersum = dealersum + dealer.get(2);
}else{ morecomputer = false;

}if (s1 == 1){

moreplayer = true;
player.add(cards.get((int) (Math.random()*12)));
for (int b = 0; b<player.size(); b++){
playersum = playersum + player.get(b);


} System.out.println("Your cards: "+player);
System.out.println("Hit 0 to stop, 1 for another card");
s1 = sc.nextInt();
}else if (s1 == 0){
moreplayer = false;
for (int b = 0; b<player.size(); b++){
playersum = playersum + player.get(b);


}}if (playersum>21 && (moreplayer || morecomputer)){
moreplayer = false; morecomputer = false;
System.out.println(dealer + "dealer");
System.out.println("You've gone bust player, computer wins!");

}if (dealersum>21 && (moreplayer || morecomputer)){
moreplayer = false; morecomputer = false;
System.out.println(dealer + "dealer");
System.out.println(player + "player");
System.out.println("Computer has gone bust, player wins!");

}if (playersum>dealersum && (!morecomputer && !moreplayer) && (dealersum<=21 && playersum <=21)){
System.out.println("Player wins!");
System.out.println(dealer + "dealer");


moreplayer = false; morecomputer = false;
}if (dealersum>playersum && (!morecomputer && !moreplayer) && (dealersum<=21 && playersum <=21)){
System.out.println("Dealer wins");
System.out.println(dealer + "dealer");

moreplayer = false; morecomputer = false;
} if ((dealersum == playersum) && (!morecomputer && !moreplayer) && (dealersum<=21 && playersum <=21)){
System.out.println("TIE!");
System.out.println(dealer + "dealer");

moreplayer = false; morecomputer = false;


}
sc.close() ;

}

}
}/** I didn't consider suits, ace is value 1 and all 3 face cards are worth 10 points */

问候,中号

最佳答案

"how do I combine both classes so that I can use all this image stuff in my blackjack program?"

尝试将 GUI 程序与控制台程序结合起来并不是一个好主意(您的第一段代码是 GUI 程序,而后者是控制台程序)。

要更好地学习使用 Swing 进行 GUI 编程,请参阅 Creating a GUI with Swing 。我关注的一些主要部分是

  1. Using Swing Components您可以在其中找到可用的所有不同组件。
  2. Writing Event Listeners因为 Swing(与此相关的所有 GUI 框架)都是事件驱动的,这意味着一个事件(例如按下绘制卡片的按钮)会导致将带有卡片图像的标签添加到玩家手中
  3. Laying out Components within a Container在这里您将学习如何使用不同的布局管理器为您的界面提供干净的结构化外观以及所有组件。

您问的是一个非常广泛的问题..唯一真正可以回答的方法是,如果有人花时间研究您的整个程序并花时间思考如何重构整个程序。我们大多数人都没有那个时间的奢侈,或者直言不讳地说,只是没有足够的关心去付出那样的努力。将控制台程序转换为GUI程序并不是一件容易的事。

所以我建议您花时间通过链接的教程来学习 Swing。 然后如果您有具体问题,例如“为什么我的按钮不抽牌?”,只要您提供必要的代码和努力,我们一定可以帮助您如图所示,以及对问题的详细描述和理解。

祝你好运!

关于Java 二十一点 Swing gui ImageIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com