import java.awt.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import java.awt.event.*;
public class PegGame extends JFrame
{
/* peg1, peg2, peg3, peg4, peg5, peg6, peg7, peg8, peg9, peg10, peg11, peg12, peg13, peg14, and peg15 - The 15 Peg objects that correspond to the 15 pegs in the game.
panel- the JPanel object
timer- a Timer object that I might need to redraw the pegs
fileReader- reads the high score file (Is handled if it doesn't exist.)
file - the File object that contains the high scores , but where to put it, I don't know.
highScoreRank - the ranking like 1, 2, 3, ,4 and so on. Has no maximum limit.
textRank- a String, could be either "Peg Master" (1 peg left) "Not Bad"(2 pegs left), "Needs Improvement"(3 pegs left) or "Hopeless" (4 or more pegs left).
name- the String to corresponders to the name of the high score holder
date- the date the person in question got the high score (note, this is a String, not a Date or Calendar object.)
newText- this is to correspond to the stuff read in. It is saved and then altered when more is added if someone gets a high score.
It was created so that I don't have to mess with the getText() method of the JLabel and risk getting the header text read in/out and causing errors later on.
oldText- the original label headings.
scoreLabel - a JLabel that contains the text for the high score page. */
private Peg peg1,peg2, peg3, peg4, peg5, peg6, peg7,
peg8, peg9, peg10, peg11, peg12, peg13, peg14, peg15;
private JPanel panel;
private Timer timer;
private Scanner fileReader;
private File file;
private Integer highScoreRank;
private Integer pegsLeft;
private String textRank;
private String name;
private String date;
private String newText;
private String oldText;
private JLabel scoreLabel;
private JFileChooser load2, save2;
//private FileChooserFilter pegFilter;
private Scanner fileReader2;
private FileWriter writer;
private JMenuBar jMenuBar;
private JMenu file2, about;
private HelpMenu hm;
private JMenuItem load, save, newWindow, exit, help, about2, highScores2;
private ImageIcon logo;
private File logoFile;
private class HelpMenu extends JFrame
{
private JPanel panel;
private JLabel label;
public HelpMenu()
{
super("Help Menu");
panel = new JPanel();
String str = "<html><br> Welcome to the Take All but One Peg Game. </br>" +" <br> The object of the game is to take all but one peg. </br>" +" <br>You can jump a peg but can't move if it's not a jump. </br>" +"<br> The files are saved as .peg extensions. </br></html>";
label = new JLabel(str);
label.setForeground(new Color(23, 255, 23));
label.setFont(new Font("Kristen ITC", Font.BOLD + Font.ITALIC, 20));
panel.setBackground(new Color(234, 124, 54));
panel.add(label);
setVisible(true);
setContentPane(panel);
}
}
private class HighScoreFile extends JFrame
{
private JButton reset;
private JPanel panel;
private JScrollPane pane;
public HighScoreFile()
{
super("High Scores");
panel = new JPanel();
pane = new JScrollPane(panel, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
setVisible(true);
reset = new JButton("Reset");
file = new File("C:/Users/HighScores.txt");
newText = "";
scoreLabel = new JLabel("<html><b><br>High Scores</html></b></br>" + "<html><b>Rank</html></b> " + "<html><b>Pegs Left </html></b> " + "<html><b> Title </html></b>" + "<html><b> Name </html></b>" +
"<html><b> Date </html></b>");
oldText = scoreLabel.getText();
try
{
fileReader = new Scanner(file);
while (fileReader.hasNext())
{
highScoreRank = fileReader.nextInt();
pegsLeft = fileReader.nextInt();
textRank = fileReader.nextLine();
name = fileReader.nextLine();
date = fileReader.nextLine();
newText = newText + "<html><br>" + highScoreRank.toString() + " " + pegsLeft.toString() + " " + textRank + " " + name + " " + date + "</html></br>";
scoreLabel.setText(scoreLabel.getText() + newText);
}
}
catch(FileNotFoundException fnfeRef)
{
scoreLabel.setText(scoreLabel.getText() + "<html><br> NO HIGH SCORES YET </html></br>");
}
catch(Exception e)
{
e.printStackTrace();
}
panel.add(scoreLabel);
panel.add(reset);
reset.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e)
{
scoreLabel.setText(oldText + "<html><br> NO HIGH SCORES YET </html></br>");
}
});
setContentPane(pane);
}
}
private class Peg
{
private Point location;
private Color color;
private int x, y;
public Peg(Point location, Color color)
{
this.location = location;
this.color = color;
}
public void setPoint(Point location)
{
this.location = location;
}
public Point getPoint()
{
return location;
}
public void setColor(Color color)
{
this.color = color;
}
public Color getColor()
{
return color;
}
public void setX(int x)
{
setPoint(new Point(x,(int) location.getY()));
}
public void setY(int y)
{
setPoint(new Point((int) location.getX(), y));
}
public void setPoint2(int x, int y)
{
setPoint(new Point(x,y));
}
public boolean canJump(Peg p)
{
return true;
}
}
public PegGame()
{
super("Jump All But One Peg Game");
setVisible(true);
panel = new JPanel();
jMenuBar = new JMenuBar();
setJMenuBar(jMenuBar);
//panel.add(jMenuBar);
file2 = new JMenu("File");
jMenuBar.add(file2);
about = new JMenu("About");
jMenuBar.add(about);
help = new JMenuItem("Help");
about.add(help);
about.addSeparator();
load = new JMenuItem("Load");
file2.add(load);
file2.addSeparator();
save = new JMenuItem("Save");
file2.add(save);
panel.setBackground(new Color(40, 255, 40));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
help.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e)
{
hm = new HelpMenu();
hm.setVisible(false);
if (!hm.isShowing())
{
hm.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(null, "You already have the help menu open!", "Help menu is already open!", JOptionPane.WARNING_MESSAGE);
}
}});
setContentPane(panel);
}
public static void main(String[] args)
{
PegGame pg = new PegGame();
}
public void paint(Graphics g)
{
super.paint(g);
drawBoard(g);
drawWindowFeatures(g);
}
public void drawBoard(Graphics g)
{
Polygon poly = new Polygon();
poly.addPoint(600, 95);
poly.addPoint(280, 512);
poly.addPoint(925, 512);
g.setColor(new Color(251, 148, 79));
g.fillPolygon(poly);
g.setColor(Color.BLACK);
g.drawPolygon(poly);
}
public void drawWindowFeatures(Graphics g)
{
g.drawLine(327, 50, 327, 83);
g.drawLine(500, 83, 327, 83);
g.setColor(new Color(0, 206,206));
g.setFont(new Font("Papyrus", Font.BOLD + Font.ITALIC, 23));
g.drawString("THE JUMP ALL BUT ONE PEG GAME", 327, 80);
}
}