我一周前刚刚开始学习 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);
}
}
现在我的问题是,假设我的二十一点类或程序位于另一个文件中,我如何组合这两个类,以便我可以在我的二十一点程序中使用所有这些图像内容?我尝试将我的 TenCards 程序复制粘贴到 Blackjack 中,但无济于事:(如果有人可以帮助我或指导我下一步,我将非常感激。
EDIT我现在已经包含了我的二十一点程序并删除了另一个程序,因为 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 */
问候,
中号