| | |
more Hi/Lo code issues
![]() |
•
•
Join Date: Dec 2008
Posts: 13
Reputation:
Solved Threads: 0
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?
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?
•
•
Join Date: Dec 2008
Posts: 13
Reputation:
Solved Threads: 0
my new code:
my last line of code:
(which I have since changed the variable names upon teacher's request) is now the only line of code with an error message. When I compile, I am told "cannot find symbol--method drawImage(java.awt.Image,int,int,int,int,int,int,int,HiLo,HiLoCanvas)"
even my teacher was baffled by how to fix this. any suggestions or ideas?
Java Syntax (Toggle Plain Text)
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Image; public class HiLo extends JApplet { HiLoCanvas Bob; 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"); /** * "smallcards.gif" is pretty much a condensed image collection of cards, * so you don't have to get all 52 images needed. * [found by Dad] */ setBackground(Color.blue); Bob = new HiLoCanvas(); HiLo board = new HiLo(); getContentPane().add(board, BorderLayout.CENTER); JPanel panel = new JPanel(); panel.setBackground(Color.green); getContentPane().add(panel, BorderLayout.SOUTH); class addButtonListener implements ActionListener { public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if (command.equals("Higher")) { Bob.doHi(); } else if (command.equals("Lower")) { Bob.doLo(); } else if (command.equals("New Game")) { Bob.doNewGame(); } } } ActionListener Blistener = new addButtonListener(); JButton higher = new JButton("Higher"); higher.addActionListener(Blistener); panel.add(higher); JButton lower = new JButton("Lower"); lower.addActionListener(Blistener); panel.add(lower); JButton newGame = new JButton("New Game"); newGame.addActionListener(Blistener); panel.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 method] */ 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 event) { String command = event.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.dealCard()); 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 zebra, int cat) { /** * 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. * ********* */ int row=0; if(card==null) { g.setColor(Color.blue); g.fillRect(zebra,cat,40,60); g.setColor(Color.white); g.drawRect(zebra+3, cat+3, 33, 53); g.drawRect(zebra+4, cat+4, 31, 51); } else { row = 0; if( card.getSuit() == 1 ) { row = 0; } else if(card.getSuit()==2) { row = 1; } else if(card.getSuit()==3) { row = 2; } else if(card.getSuit()==4) { row = 3; } } int giraffe,dog; /** * The coordinates of the top left corner in the image */ giraffe=40*(card.getValue()-1); dog=60*row; g.drawImage(cardImages,zebra,cat,zebra+40,cat+60,giraffe,dog,giraffe+60,this); } } }
my last line of code:
Java Syntax (Toggle Plain Text)
g.drawImage(cardImages,x,y,x+40,y+60,sx,sy,sx+60,this);
(which I have since changed the variable names upon teacher's request) is now the only line of code with an error message. When I compile, I am told "cannot find symbol--method drawImage(java.awt.Image,int,int,int,int,int,int,int,HiLo,HiLoCanvas)"
even my teacher was baffled by how to fix this. any suggestions or ideas?
there is no method drawImage that accepts an Object of the type HiLo
check here to find which one you can use:
Graphics api
check here to find which one you can use:
Graphics api
![]() |
Similar Threads
- Code 10 + other issues (Windows Vista and Windows 7)
- PHP code has ISSUES-help me (PHP)
- ASP.NET and Mozilla - Issues! (ASP.NET)
- Recursion Program/Code I'm having issues with... (Java)
- Need help with including C++ code in Word macro (C++)
- QuickSort (Computer Science)
Other Threads in the Java Forum
- Previous Thread: SMS through somegateway to mobile
- Next Thread: Serious help needed
| Thread Tools | Search this Thread |
2dgraphics account android api apple applet application arguments array arrays automation banking binary binarytree bluetooth chat chatprogramusingobjects class client code color component count database derby design eclipse eclipsedevelopment encryption error fractal game givemetehcodez graphics gridlayout gui homework html ide if_statement image integer interface j2me java javadesktopapplications javaprojects jlabel jni jpanel julia keyword linux list macintosh map method methods midlethttpconnection mobile netbeans newbie nullpointerexception object open-source os problem producer program programming project projectideas property read recursion reference replaysolutions ria scanner search server set size sms sort sourcelabs splash sql sqlite stop string swing testautomation threads transforms tree ui unicode validation windows






