当前位置:编程学习 > JAVA >>

Implement Baccarat Game 希望有人能帮帮忙 新手上路

需要把这个Baccarat Game 补充完成 是一个小任务 哪位大大能帮帮忙 本来还有纸牌的图片 由于是新人 不知道怎么上传图片   谢谢 帮忙

The cards have a point value: cards 2–9 are worth face value (in points); 10s, Js, Qs and Ks have no point value (i.e. are worth zero); Aces are worth 1 point. Hands are valued according to the rightmost digit of the sum of their constituent cards: for example, a hand consisting of 2 and 3 is worth 5, but a hand consisting of 6 and 7 is worth 3 (i.e. the 3 being rightmost digit in the combined points total: 13).
The player starts with 50 $1 chips. The user must place a bet of maximum 5 chips for each round. Each baccarat coup has three possible outcomes: "player" wins (even win: 1:1), "banker," wins and "tie." Betting example: Lets say that you have $50 and you bet $5. If you win, you will get your $5 bet back plus another $5. Your purse will be $55. If you loose, you will loose your $5 bet. Your purse will be $45.
For each round (coup), two cards are dealt face up to each hand ("player" and "banker"). If either Player or Banker or both achieve a total of 8 or 9 at this stage, the coup is finished and the result is announced: Player win, a Banker win, or tie. If neither the Player nor Banker is dealt a total of 8 or 9 in the first two cards (known as a "natural"), the tableau is consulted, first for Player's rule, then Banker's. 
If Player has an initial total of 0–5, he draws a third card. If Player has an initial total of 6 or 7, he stands.
If Player stood pat (i.e., has only two cards), the banker regards only his own hand and acts according to the same rule as Player. That means Banker draws a third card with hands 0–5 and stands with 6 or 7. If Player drew a third card, the Banker acts according to the following more complex rules:
- If Player drew a 2 or 3, Banker draws with 0–4, and stands with 5–7.
- If Player drew a 4 or 5, Banker draws with 0–5, and stands with 6–7.
- If Player drew a 6 or 7, Banker draws with 0–6, and stands with 7.
- If Player drew an 8, Banker draws with 0–2, and stands with 3–7.
- If Player drew an ace, 9, 10, or face-card, the Banker draws with 0–3, and stands with 4–7.

The program will deal the cards according to the tableau and will announce the winning hand: either Player or Banker.


import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import java.util.Scanner;
public class Baccarat_GUI_draft extends JFrame {
int rounds = 0;
int purse = 20;
JPanel p0 = new JPanel();
JPanel p01 = new JPanel();
JPanel p02 = new JPanel();
JPanel p1 = new JPanel();
JPanel p12 = new JPanel();
JPanel p2 = new JPanel();
JPanel p21 = new JPanel();
JPanel p211 = new JPanel();
JPanel p22 = new JPanel();
JPanel p222 = new JPanel();
JPanel p3 = new JPanel();
JPanel p32 = new JPanel();
JPanel p4 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JLabel l1 = new JLabel();
JLabel l21 = new JLabel();
JLabel l22 = new JLabel();
JLabel[] icons1 = new JLabel[10];
JLabel[] icons2 = new JLabel[10];
int bet = 0;
JLabel l41 = new JLabel();
JButton b41 = new JButton("$1");
JButton b42 = new JButton("$2");
JButton b43 = new JButton("$3");
JButton b44 = new JButton("$4");
JButton b45 = new JButton("$5");
JLabel l42 = new JLabel();
JLabel l5 = new JLabel();
JButton b51 = new JButton("Continue");
JLabel l6 = new JLabel();
JButton b6 = new JButton("Next");
// cards
int[][] previous_cards = new int[50][2];
int nop = 0;
int[][] hand1 = new int[10][2]; // human hand
int no1 = 0;
int[][] hand2 = new int[10][2]; // computer
int no2 = 0;
int sum1 = 0;
int sum2 = 0;
// Constructor
Baccarat_GUI_draft(){
this.setSize(1000, 800);
this.setLayout(new GridLayout(2,1));
this.add(p2); this.add(p3);
p3.setLayout(new GridLayout(5,1));
p3.add(p0); p3.add(p1); p3.add(p4); p3.add(p5); p3.add(p6); 
//j11.setIcon(card_to_ImageIcon(sorted1[0]));
rounds = 1;
p0.setLayout(new GridLayout(1,2));
p0.add(p01); p0.add(p02);
p01.add(l21); p02.add(l22);
p01.setBorder(new LineBorder(new Color(0,0,0),2));
p02.setBorder(new LineBorder(new Color(0,0,0),2));
p1.add(l1);
p2.setLayout(new GridLayout(1,2));
p2.add(p211); p2.add(p222);
p211.setBorder(new LineBorder(new Color(0,0,0),2));
p222.setBorder(new LineBorder(new Color(0,0,0),2));
p211.setLayout(new GridLayout(1,5));
p222.setLayout(new GridLayout(1,5));
p4.add(l41);
p4.add(b41);
p4.add(b42);
p4.add(b43);
p4.add(b44);
p4.add(b45);
p4.add(l42);
l41.setText("Bet: ");
p5.add(l5);
l5.setText("Action: ");
p5.add(b51);
p6.add(l6);
p6.add(b6);
b41.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b41"); } } );
b42.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b42"); } } );
b43.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b43"); } } );
b44.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b44"); } } );
b45.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b45"); } } );
b51.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b51"); } } );
b6.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { refreshDisplay("b6"); } } );
// ACTIONS
l1.setText("Round "+rounds+"          "+"Action: continue");
// generate one card
hand1[no1] = generate_card(previous_cards,nop);
previous_cards[nop][0] = hand1[no1][0];
previous_cards[nop][1] = hand1[no1][1];
nop++;
no1++;
// generate one card
hand1[no1] = generate_card(previous_cards,nop);
previous_cards[nop][0] = hand1[no1][0];
previous_cards[nop][1] = hand1[no1][1];
nop++;
no1++;
// generate computer hard
hand2[no2] = generate_card(previous_cards,nop);
previous_cards[nop][0] = hand2[no2][0];
previous_cards[nop][1] = hand2[no2][1];
nop++;
no2++;
// generate computer second card
hand2[no2] = generate_card(previous_cards,nop);
previous_cards[nop][0] = hand2[no2][0];
previous_cards[nop][1] = hand2[no2][1];
nop++;
no2++;
for(int i=0; i<no1; i++){
icons1[i] = new JLabel();
icons1[i].setIcon(card_to_ImageIcon(hand1[i]));
icons1[i].setSize(30,30);
p211.add(icons1[i]);
}
for(int i=0; i<no2; i++){
icons2[i] = new JLabel();
icons2[i].setIcon(card_to_ImageIcon(hand2[i]));
p222.add(icons2[i]);
}
sum1 = sum_hand(hand1,no1);
sum2 = sum_hand(hand2,no2);
l21.setText("User - purse="+purse+"; sum="+ (sum1%10));
l22.setText("Computer - sum="+ (sum2%10));
bet = 0;
l42.setText("Bet: $"+bet);
l6.setText("Result:        => New purse: $   ");
b51.disable();
b6.disable();
setVisible(true);
repaint();
}

public static void main(String[] args) throws IOException {
Baccarat_GUI_draft pg = new Baccarat_GUI_draft();
}
public void refreshDisplay(String option){
System.out.println("Option: "+option);
if( option.equals("b41") || option.equals("b42")  || option.equals("b43")  || option.equals("b44")  || option.equals("b45") ){
l1.setText("Round "+rounds+"          "+"Action: continue");
if( option.equals("b41") ){
bet = 1;
}else if( option.equals("b42") ){
bet = 2;
}else if( option.equals("b43") ){
bet = 3;
}else if( option.equals("b44") ){
bet = 4;
}else bet = 5;
l42.setText("Bet: $"+bet);
b41.disable();
b42.disable();
b51.enable();
b6.disable();
} else if(option.equals("b52")){
// implement second step of baccarat
} else if(option.equals("b51")){

} else if(option.equals("b6")){

} else System.out.println("Invalid option: "+option);
repaint();
}
public static ImageIcon card_to_ImageIcon(int[] c){
String fileString = "images/Playing_card_";
if(c[1]==1) fileString += "heart";
else if(c[1]==2) fileString += "diamond";
else if(c[1]==2) fileString += "club";
else fileString += "spade";
fileString += "_";
if(2<=c[0] && c[0]<=10) fileString += c[0];
else if(c[0]==11) fileString += "J";
else if(c[0]==12) fileString += "Q";
else if(c[0]==13) fileString += "K";
else fileString += "A";
fileString += ".jpg";
return new ImageIcon(fileString);
}
public static int sum_hand(int[][] hand1,int no1){
int sum = 0;
for(int i=0; i<no1;i++){
if(hand1[i][0]<=10)
sum += hand1[i][0];
else sum += 0; // these cards are 0 -- implement the Ace treatment
}
return sum;
}
public static int[] generate_card(int[][] previous_cards,int nop){
boolean duplicate = false;
int[] card = new int[2];
do{
duplicate = false;
card[0] = (int) (Math.random()*13 + 2);
card[1] = (int) (Math.random()*4 + 1);
// compare all the previous hands with the current hand
for(int i=0; i<nop;i++){
if(card[0]==previous_cards[i][0] && card[1]==previous_cards[i][1]) duplicate = true;
}
}while(duplicate);
return card;
}
public static int[] generate_card(){
int[] card = new int[2];
card[0] = (int) (Math.random()*13 + 2);
card[1] = (int) (Math.random()*4 + 1);
return card;
}
public static String card_to_String(int[] c){
String card = "";
if(2<=c[0] && c[0]<=10) 
card += c[0];
else if(c[0]==11) card += "Jack";
else if(c[0]==12) card += "Queen";
else if(c[0]==13) card += "king";
else if(c[0]==14) card += "Ace";
else card += "card_to_String error: card number="+c[0];
card += " of ";
if(c[1]==1) card += "hearts";
else if(c[1]==2) card += "diamonds";
else if(c[1]==2) card += "clubs";
else card += "spades";
return card;
}
}

补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,