import java.applet.*; import java.awt.*; import Pack; public class Acey extends Applet implements Runnable { Choice cntBet; TextField cntBalance; TextField cntCardD; //third card TextField cntOldB; TextField cntOldC; TextField cntComment; Button cntHelp; Button cntDeal; Button cntDispOk; int factor = 4; // multiply bet = payout int cardB = 1; // value of first (low) card int cardC = 1; // value of second (high) card int cardD = 1; // 3rd card Pack myPack = new Pack(); // Pack of cards object Thread gameThread = null; //used to load cards into array Image Card []; // an array of card images private boolean m_fAllLoaded = false; // indicates whether cards loaded public void init() { //Previous panel Panel pPrevious = new Panel(); pPrevious.add (new Label("Prev low")); cntOldB = new TextField(5); pPrevious.add (cntOldB); pPrevious.add (new Label("Prev high")); cntOldC = new TextField(5); pPrevious.add (cntOldC); pPrevious.add (new Label("Your card")); cntCardD = new TextField(5); pPrevious.add (cntCardD); pPrevious.add (new Label("my Comment")); cntComment = new TextField(15); pPrevious.add (cntComment); pPrevious.resize (200,200); //Current panel Panel pCurrent = new Panel(); cntBalance = new TextField(5); pCurrent.add (cntBalance); cntBalance.setText("100"); pCurrent.add (new Label("Your bet")); cntBet = new Choice(); cntBet.addItem ("0"); cntBet.addItem ("10"); cntBet.addItem ("20"); cntBet.addItem ("50"); pCurrent.add (cntBet); cntBet.select("10"); pCurrent.resize (200,100); //Button panel Panel pButtons = new Panel(); cntHelp = new Button("Help"); pButtons.add (cntHelp); cntDeal = new Button("Deal"); pButtons.add (cntDeal); pButtons.resize (200,100); //Outer panel contains other panels Panel pOuter = new Panel(); pOuter.setLayout (new BorderLayout()); pOuter.add ("North",pPrevious); pOuter.add ("Center", pCurrent); pOuter.add ("South",pButtons); pOuter.resize (220, 430); //Applet background and add Outer panel to applet setBackground (Color.green); add (pOuter); Card = new Image[15]; // 0 -> 14 for (int i = 1; i <= 14; i++) { Card [i] = getImage (getDocumentBase(), "Pack/" + i + "h.gif"); } DealTwoCards(); //repaint(); } public boolean handleEvent(Event evt) { if (evt.target == cntDeal) { cntComment.setText("You lost."); //This is asserted GetThirdCard(); TakeBet(); if (IsWinner()) PayBet(); DealTwoCards(); repaint(); return true; } else if (evt.target == cntHelp) { DisplayInstructions(); return true; } return false; } private void DealTwoCards() { int temp; cardB = myPack.getCard(); // cardB is a number from 1 to 14 cardC = myPack.getCard(); if ( cardB > cardC) // cardC must be bigger than cardB { temp = cardB; cardB = cardC; cardC = temp; } } private void GetThirdCard() { cardD = myPack.getCard(); cntCardD.setText(myPack.getName(cardD)); cntOldB.setText(myPack.getName(cardB)); cntOldC.setText(myPack.getName(cardC)); } public void paint(Graphics g) { g.drawImage(Card[cardB], 150, 100, null); g.drawImage(Card[cardC], 350, 100, null); } private void TakeBet () { int bet; // Bet int money; // Balance Integer MI = new Integer(cntBet.getSelectedItem()); bet = MI.intValue(); Integer QI = new Integer(cntBalance.getText()); money = QI.intValue(); if (bet > 0) { if ( bet > money ) { bet = 0; cntBet.select("0"); cntComment.setText("Insufficient funds!"); } money = money - bet; //Calc current money cntBalance.setText(String.valueOf(money)); } else if (bet == 0) cntComment.setText("Chicken!"); else cntComment.setText("Cheat!"); if (money == 0) cntComment.setText("You'll just have to watch"); } private boolean IsWinner () { boolean result; result = false; if (cardD > cardB && cardD < cardC ) result = true; return result; } private void PayBet () { int bet; // Bet int money; // Balance Integer MI = new Integer(cntBet.getSelectedItem()); bet = MI.intValue(); if (bet > 0) { Integer QI = new Integer(cntBalance.getText()); money = QI.intValue(); money = money + factor * bet; cntBalance.setText(String.valueOf(money)); cntComment.setText("You won!"); } } private void DisplayInstructions () { // aDispFrame = new Instructions (); // aDispFrame.show(); } }