Я создаю трехкарточную игру в покер на Java.Я в основном закончил с кодированием, но у меня возникли некоторые проблемы с графическим интерфейсом.Вот мой код для графической части:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.Scanner;
import javax.*;
public class Board extends dealer{
final static boolean shouldFill = true;
final static boolean shouldWeightX = true;
final static boolean RIGHT_TO_LEFT = false;
public static Image cardback;
public static Image comp1;
public static Image comp2;
public static Image comp3;
public static Image play1;
public static Image play2;
public static Image play3;
public static int x,y;
public static int numgames;
public static int bet;
public static int wlt=7;
public static int dealorfold=1;
public static int showcard=1;
static int playermoney;
static int compmoney;
protected static hand player;
protected static hand computer;
static class deal implements ActionListener{
public void actionPerformed(ActionEvent e){
dealorfold=2;
}
}
static class fold implements ActionListener{
public void actionPerformed(ActionEvent e){
dealorfold=3;
}
}
static class allin implements ActionListener{
public void actionPerformed(ActionEvent e){
bet=playermoney;
}
}
static class ten implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<10)
wlt=9;
else
bet=10;
}
}
static class fifty implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<50)
wlt=9;
else
bet=50;
}
}
static class hundred implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<100)
wlt=9;
else
bet=100;
}
}
static class fivehund implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<500)
wlt=9;
else
bet=500;
}
}
static class thaud implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<1000)
wlt=9;
else
bet=1000;
}
}
static class fivethaud implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<5000)
wlt=9;
else
bet=5000;
}
}
static class tenthaud implements ActionListener{
public void actionPerformed(ActionEvent e){
if(playermoney<10000)
wlt=9;
else
bet=10000;
}
}
private static void createAndShowGUI() {
setcards();
JFrame frame = new JFrame("Three Card Poker");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(1366,768));
addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
int p1 = checkpattern(player);
int c1 = checkpattern(computer);
while(dealorfold==1){
if(dealorfold==2){
if(p1>c1){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if (p1<c1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else if(p1==0 && c1==0){
if(checkhighercardinhand(player, computer)==0){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if(checkhighercardinhand(player, computer)==1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else if(checkhighercardinhand(player, computer)==2){
showcard=2;
wlt=3;
}
}
else if(p1==1 && c1==1){
if(checkhigherpair(player, computer)==0){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if(checkhigherpair(player, computer)==1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else if(checkhigherpair(player, computer)==2){
showcard=2;
wlt=3;
}
}
else if(p1 == c1 && p1 >= 3){
int check = checkhigherthanstraight(player, computer);
if(check == 0){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if (check == 1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else{
showcard=2;
wlt=3;
}
}
else if(p1 == c1 && p1 == 2){
showcard=2;
wlt=3;
}
}
else{
playermoney=playermoney-50;
showcard=2;
wlt=4;
}
}
}
public static void addComponentsToPane(Container pane) {
if (RIGHT_TO_LEFT) {
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JLabel comp = new JLabel("Computer:");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
c.insets=new Insets(0,0,100,0);
pane.add(comp, c);
JLabel c1 = new JLabel(computer.get(0)+"");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 0;
pane.add(c1, c);
JLabel c2 = new JLabel(computer.get(1)+"");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 0;
pane.add(c2, c);
JLabel c3= new JLabel(computer.get(2)+"");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 3;
c.gridy = 0;
pane.add(c3, c);
JLabel compcash=new JLabel("Dealer has: "+compmoney);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 6;
c.gridy = 1;
pane.add(compcash, c);
JLabel player1 = new JLabel("Player:");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx=.5;
c.gridx = 0;
c.gridy = 2;
pane.add(player1, c);
JLabel p1 = new JLabel(player.get(0)+"");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 2;
pane.add(p1, c);
JLabel p2 = new JLabel(player.get(1)+"");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 2;
pane.add(p2, c);
JLabel p3 = new JLabel(player.get(2)+"");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 3;
c.gridy = 2;
pane.add(p3, c);
JLabel playcash=new JLabel("You have: "+playermoney);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 6;
c.gridy = 2;
pane.add(playcash, c);
JLabel pattern=new JLabel("Your hand is: ");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 6;
c.gridy = 3;
pane.add(pattern, c);
JButton deal = new JButton("Deal");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 5;
pane.add(deal, c);
deal.addActionListener(new deal());
JButton fold = new JButton("Fold(Penalty: minus $50)");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 5;
pane.add(fold, c);
fold.addActionListener(new fold());
JLabel bet = new JLabel(" Bet:");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 5;
pane.add(bet, c);
JButton allin = new JButton("All IN");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 3;
c.gridy = 5;
pane.add(allin, c);
allin.addActionListener(new allin());
JButton ten= new JButton("10");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 4;
c.gridy = 5;
pane.add(ten, c);
ten.addActionListener(new ten());
JButton fifty = new JButton("50");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 5;
c.gridy = 5;
pane.add(fifty, c);
fifty.addActionListener(new fifty());
JButton hundred = new JButton("100");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 6;
c.gridy = 5;
pane.add(hundred, c);
hundred.addActionListener(new hundred());
JButton fivehund = new JButton("500");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 7;
c.gridy = 5;
pane.add(fivehund, c);
fivehund.addActionListener(new fivehund());
JButton thaud = new JButton("1000");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 8;
c.gridy = 5;
pane.add(thaud, c);
thaud.addActionListener(new thaud());
JButton fivethaud = new JButton("5000");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 9;
c.gridy = 5;
pane.add(fivethaud, c);
fivethaud.addActionListener(new fivethaud());
JButton tenthaud = new JButton("10000");
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 10;
c.gridy = 5;
pane.add(tenthaud, c);
tenthaud.addActionListener(new tenthaud());
String mess;
if(wlt==1)
mess="You Win The Round!";
else if(wlt==2)
mess="Dealer Wins The Round!";
else if(wlt==3)
mess="You And Dealer Tie The Round";
else if(wlt==4)
mess="You Folded. You Recieve Penalty of Minus $50";
else if(wlt==5)
mess="Dealer Loses All Of Its Money, YOU WIN THE WHOLE GAME!";
else if(wlt==6)
mess="You Lose All Of You Money, You Lose The Whole Game!";
else if(wlt==7)
mess="Please Click Deal Or Fold";
else if(wlt==8)
mess="Please Place Your Bet";
else
mess="Please Select Another Bet.";
JLabel message = new JLabel(mess);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0;
c.gridx = 6;
c.gridy = 4;
pane.add(message, c);
JLabel label = new JLabel("");
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 40;
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 2;
pane.add(label, c);
label = new JLabel("");
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 0;
c.weighty = 1.0;
c.anchor = GridBagConstraints.PAGE_END;
c.insets = new Insets(10,0,0,0);
c.gridx = 1;
c.gridwidth = 2;
c.gridy = 2;
pane.add(label, c);
}
public static void setmoney(){
compmoney=10000000;
playermoney=10000000;
}
public static void setcards(){
player = new hand();
computer= new hand();
player.addCard(new cards());
player.addCard(new cards());
player.addCard(new cards());
computer.addCard(new cards());
computer.addCard(new cards());
computer.addCard(new cards());
cardswoprob.correctduplicates(player, computer);
}
public static void play(){
for(int index=0;compmoney>=10&&playermoney>=10;index++){
wlt=7;
int p1 = checkpattern(player);
int c1 = checkpattern(computer);
while(dealorfold==1){
if(dealorfold==2){
if(p1>c1){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if (p1<c1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else if(p1==0 && c1==0){
if(checkhighercardinhand(player, computer)==0){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if(checkhighercardinhand(player, computer)==1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else if(checkhighercardinhand(player, computer)==2){
showcard=2;
wlt=3;
}
}
else if(p1==1 && c1==1){
if(checkhigherpair(player, computer)==0){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if(checkhigherpair(player, computer)==1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else if(checkhigherpair(player, computer)==2){
showcard=2;
wlt=3;
}
}
else if(p1 == c1 && p1 >= 3){
int check = checkhigherthanstraight(player, computer);
if(check == 0){
compmoney = compmoney - bet;
playermoney = playermoney + bet;
showcard=2;
wlt=1;
}
else if (check == 1){
compmoney = compmoney + bet;
playermoney = playermoney - bet;
showcard=2;
wlt=2;
}
else{
showcard=2;
wlt=3;
}
}
else if(p1 == c1 && p1 == 2){
showcard=2;
wlt=3;
}
}
else{
playermoney=playermoney-50;
showcard=2;
wlt=4;
}
}
}
if(playermoney > compmoney)
wlt=5;
else
wlt=6;
}
public static void main(String[] args) {
setmoney();
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
while(compmoney>=10&&playermoney>=10)
createAndShowGUI();
if(playermoney > compmoney)
wlt=5;
else
wlt=6;
}
});
}
}
Основная проблема заключается в том, что в createAndShowGUI()
, если я поместил этот цикл while, который я пытался (для цикла, цикл делать), JPanel
просто появится, но там ничего нет.Если там нет цикла while, JPanel
будет регулярно показываться со всем, что там есть.Но мне нужен код внутри цикла while, потому что код в основном состоит из игры.
Я пытался создать собственный метод (play()
), но если я вызову его в main()
или где-нибудь, JPanel
будет белым (ничего).
Вот мой второй вопрос: если вы удалите цикл while и JPanel появится нормально, вы увидите руку компьютера и руку игрока,но в текстовом виде.Я хочу знать, как заменить текст изображениями.