一周前,我刚刚开始使用Java,并完成了我的第一个21点程序。我想通过使用Java (ImageIcon)来增强它,这样每次我画一张卡片时,假设是一个ace,它实际上在屏幕上或我的当前手上显示了一个图像。我编写了这个程序,显示我想要的卡片:
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);
}
}现在,我的问题是,如果我将我的blackjack类或程序放在另一个文件中,我如何将这两个类组合在一起,以便在我的blackjack程序中使用所有这些图像内容?,我尝试将我的TenCards程序复制到Blackjack中,但没有效果:(如果有人能帮我或指点我下一步的工作,我会非常感激的。
编辑,我现在已经包含了我的blackjack程序,并删除了另一个,因为由于代码太多,堆栈溢出不能同时接受这两者。
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 */问候,M
发布于 2014-02-12 04:14:17
“我如何将这两个类组合起来,以便在我的blackjack程序中使用所有这些图像内容?”
尝试将GUI程序与控制台程序结合起来并不是一个好主意(您的第一段代码是GUI程序,而后者是控制台程序)。
要更好地学习使用Swing进行GUI编程,请参见用Swing创建GUI。我要关注的几个主要部分是
你要问的是一个非常宽泛的问题。唯一真正能回答的方法是,如果有人花时间研究你的整个程序,并花时间思考如何重构整个程序。我们中的大多数人没有那个时候的奢侈,或者直言不讳,只是不太在意投入到那种努力中。将控制台程序转换为GUI程序并非易事。
所以我建议你花点时间学习Swing,通过阅读相关的教程。然后,如果你有一个特定的问题,比如“为什么我的按钮不画一张卡片?”,如果你提供了必要的代码,所显示的努力,以及对问题的详细描述和理解,我们一定会帮助你。
祝好运!
发布于 2014-02-12 04:37:13
简单的回答是.不要..。
你在范式之间转换。我的意思是,您的原始程序是使用命令行/过程驱动的范例--事情是以一个定义良好的顺序发生的),当您试图迁移到GUI/事件驱动的范例时。
在事件驱动的环境中,事情可以按任意顺序发生,您需要做好处理它的准备。
您将面临的最重要的范式转变之一是将游戏的模型/虚拟视图与游戏的物理/UI视图分开。
这是一个重要的概念,因为它不仅将使您的程序更容易编写,而且还可以更改。
最好用模型-视图-控制器和Swing实现这个概念(松散地)来描述这一点。
花时间阅读用JFC/Swing创建GUI,设计(游戏的)模型,了解需要告诉视图的内容以及控制器可以更改的游戏内容。
https://stackoverflow.com/questions/21717917
复制相似问题