So I've spent the past 2 hours trying to work all of this out, but I am still getting an error message that seems out of place.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
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(3,3,3,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
* [Help from Dad]
*/
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++)
drawCard(g, hand.getCard(i), 30 + i * 70, 10);
if(gameInProgress)
drawCard(g,null,30+cardCt*70, 10);
}
void drawCard(Graphics 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);
}
}
[I have a class card and a class deck following this]
Up towards the top there is the:
Deck deck;
Hand hand;
and a few others.
The error message highlights 'Hand hand;' (im using BlueJ), and says "cannot find symbol-class Hand".
why? I really do not know, and I have tried to figure it out. Also, how would I fix this?