import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HiLo extends JApplet
{
Image cardImages;
/**
* An image that holds the pictures of all the cards
*/
public void init()
{
/**
* This method loads the card picture and lays out the applet.
*/
cardImages = getImage(getCodeBase(), "smallcards.gif");
setBackground(Color.blue);
HiLo board = new HiLo();
getContentPane().add(board, BorderLayout.CENTER);
JPanel panel = new JPanel();
panel.setBackground(Color.green);
getContentPane().add(panel, BorderLayout.SOUTH);
JButton hi = new JButton("Higher");
hi.addActionListener(board);
buttonPanel.add(hi);
JButton lo = new JButton("Lower");
lo.addActionListener(board);
buttonPanel.add(lo);
JButton newGame = new JButton("New Game");
newGame.addActionListener(board);
buttonPanel.add(newGame);
}
public Insets getInsets()
{
/**
* Determines the boarders of the container
*/
return new Insets(4,3,4,3);
}
}
class HiLoCanvas extends JPanel implements ActionListener
{
/**
* The Canvas component represents a rectangular area on the screen
* which the application can draw or trap input events.
* [Help from Dad in this class]
*/
Deck deck;
/**
* The deck being used
*/
Hand hand;
/**
* Cards already dealt
*/
String message;
/**
* The message that is shown, saying the state of the game.
*/
boolean gameInProgress;
/**
* True when game begins, since it's in progress, and false at the end,
* when it is no longer in progress.
*/
Font mediumFont;
/**
* The font being used to show the messages.
*/
Font smallFont;
/**
* Being used to draw the cards.
*/
HiLoCanvas()
{
/**
* HiLoCanvas() is the constructor that creates and sets colors,
* and starts the games.
* [Help recieved from Dad]
*/
setBackground(Color.darkGray);
/**
* Sets the background color to dark gray.
*/
setForeground(Color.red);
/**
* Sets foreground to red
*/
smallFont = new Font("Arial", Font.PLAIN, 12);
/**
* Makes the small font that is being used to draw the cards of font
* type Arial, also plain (instead of italics, bold, etc.), and font
* size 12.
*/
mediumFont = new Font("Arial", Font.BOLD, 15);
/**
* The font being used to show the messages is font face Arial, bold,
* and size 15.
*/
doNewGame();
}
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand();
if (command.equals("Higher"))
{
doHi();
}
else if (command.equals("Lower"))
{
doLo();
}
else if (command.equals("New Game"))
{
doNewGame();
}
}
void doHi()
{
/**
* this is called by the actionPerformed() when the "Higher" button
* is clicked on. Game ends if user guessed wrong, or if they have
* correctly guessed four times.
*/
if (gameInProgress==false)
{
message = "Click\"New Game\" first";
repaint();
return;
}
hand.addCard(deck.dealCard());
/**
* Deals a card to the hand
*/
int cardCt = hand.getCardCount();
Card thisCard = hand.getCard(cardCt-1);
/**
* This is the card just dealt
*/
Card prevCard = hand.getCard(cardCt-2);
/**
* This is the previous card
*/
if(thisCard.getValue()<prevCard.getValue())
{
gameInProgress = false;
message = "Sorry, you lose!";
}
else if (thisCard.getValue()==prevCard.getValue())
{
gameInProgress=false;
message= "It's a tie--you lose!";
}
else if (cardCt==4)
{
gameInProgress=false;
message="Congratulations! You win!";
}
else
{
gameInProgress= true;
message = "Correct! Go for "+ cardCt +".";
}
repaint();
}
void doLo();
{
/**
* Same as doHi, but instead is called when the "Lower" button is
* selected.
*/
if (gameInProgress==false)
{
/**
* If the game is not in progress, if it's ended, then an
* error message will show.
*/
message="Click\"New Game\" first!";
repaint();
return;
}
hand.addCard(deck.dealCard());
int cardCt=hand.getCardCount();
Card thisCard=hand.getCard(cardCt-1);
Card prevCard=hand.getCard(cardCt-2);
if(thisCard.getValue()>prevCard.getValue())
{
gameInProgress=false;
message="Sorry! You lose!";
}
else if(thisCard.getValue()==prevCard.getValue())
{
gameInProgress=false;
message="It's a tie--you lose!";
}
else if(cardCt==4)
{
gameInProgress=false;
message="Congratulations! You win!";
}
else
{
gameInProgress=true;
message="Correct! Go for "+ cardCt+".";
}
repaint();
}
void doNewGame()
{
/**
* Called by actionPerformed() and the constructor, when user clicks
* on "New Game" button, a new game starts
*/
if (gameInProgress)
{
/**
* If a game is currently in progress, and error message will show
*/
message="You haven't finished the game yet!";
repaint();
return;
}
deck=new Deck();
hand = new Hand();
/**
* creat deck and hand used in this game
*/
deck.shuffle();
hand.addCard(deck.dealCar());
message="Do you think the next card is Higher or Lower?";
gameInProgress=true;
repaint();
}
public void paintComponent(Graphics g)
{
/**
* Draws message at the bottom of the canvas, and draws all of the
* cards spread across the canvas. When game is in progress, another
* card is dealt to represent the card that will be dealt next
* ******
*/
super.paintComponent(g);
g.setFont(mediumFont);
g.drawString(message,10, getSize().height-10);
g.setFont(smallFont);
int cardCt=hand.getCardCount();
for (int i=0; i<cardCt;i++);
[COLOR="Green"]drawCard(g, hand.getCard(i); 30 + i * 70, 10);[/COLOR]
if(gameInProgress)
drawCard(g,null,30+cardCt*70, 10);
}
void drawCard(Graphis g, Card card, int x, int y)
{
/**
* Draws and 40 by 60 rectangle. The Card is drawn in the graphics g.
* When the card is null, a face-down card is then drawn.
* *********
*/
if(card==null)
{
g.setColor(Color.blue);
g.fillRect(x,y,40,60);
g.setColor(Color.white);
g.drawRect(x+3, y+3, 33, 53);
g.drawRect(x+4, y+4, 31, 51);
}
else
{
int row = 0;
switch(card.getSuit())
{
case Card.CLUBS: row=0; break;
case Card.HEARTS: row=1; break;
case Card.SPADES: row=2; break;
case Card.DIAMONDS: row=3; break;
}
int sx,sy
/**
* The coordinates of the top left corner in the image
*/
sx=40*(card.getValue()-1);
sy=60*row;
g.drawImage(cardImages,x,y,x+40,y+60,sx,sy,sx+60,this);
}
}
}
}
public class Card
/**
* This is the same Card class that we were required to create previously
*/
{
private int value;
private int suit;
public void Card()
{
value = 1;
suit = 3;
}
public Card(int value, int suit)
{
value = value;
value = suit;
}
public int getSuit()
{
return suit;
}
private void setSuit(int newsuit)
{
suit = newsuit;
}
public int getValue()
{
return value;
}
private void setValue(int newVal)
{
value = newVal;
}
public String getSuitString()
{
if(suit==1)
{
return "Clubs";
}
if(suit==2)
{
return "Diamonds";
}
if(suit==3)
{
return "Hearts";
}
else
{
return "Spades";
}
}
public String getValueString()
{
if(value==1)
{
return "Ace";
}
if(value==2)
{
return "2";
}
if(value==3)
{
return "3";
}
if(value==4)
{
return "4";
}
if(value==5)
{
return "5";
}
if(value==6)
{
return "6";
}
if(value==7)
{
return "7";
}
if(value==8)
{
return "8";
}
if(value==9)
{
return "9";
}
if(value==10)
{
return "10";
}
if(value==11)
{
return "Jack";
}
if(value==12)
{
return "Queen";
}
else
{
return "King";
}
}
public boolean equals(Card card)
{
boolean equals = false;
if(getValue() == card.getValue()
&& getSuit() == card.getSuit())
{
equals = true;
}
return equals;
}
public Card clone()
{
Card equals = new Card(getValue(), getSuit());
return equals;
}
}
public class Deck
/**
* This Deck class has been slightly modified from the one we were required to
* create. In this class it keeps track of how many cards have been dealt and
* how many are remaing after cards have been dealt, as well as actually dealing
* cards.
*/
{
private Card[] deck;
private int cardsUsed;
/**
* The number of cards that have been dealt
*/
public Deck()
{
deck = new Card[52];
int cardCt = 0;
/**
* The number of cards created
*/
for (int i=0; i<=3; i++)
{
for (int j=1;j<=13;j++)
{
deck[cardCt]=new Card(j,i);
cardCt++;
}
}
cardsUsed=0;
}
public void shuffle()
{
current Card= -1;
for(int i=0; i<deck.length; i++)
{
int rand = (int) (Math.random()*52);
Card temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
cardsUsed=0;
}
public int cardsRemaing()
{
/**
* When cards are dealt, the number remaining decrease. This returns
* the number remaing
*/
return 52- cardsUsed;
}
public Card dealCard()
{
/**
* Deals a card and returns it
*/
if (cardsUsed==52)
shuffle();
cardsUsed++;
return deck[cardsUsed-1];
}
}
}
This is what I have so far for my code for the card game of Hi/Lo. The line in green gets highlighted and an error message comes up saying " ')' expected". I'm not sure why, since I have the parantheses, and I tried brackets, but I got the same error message. I'm also not sure where to go from here. I'm doing this with BlueJ, so I don't need to create a main method. But how do I get everything together and working?