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 DoublyLinkedList<HelpMenu> hmdll;
private String month;
private Integer month2;
private String dayOfWeek;
private Integer dayOfWeek2;
private String year;
private Integer year2;
private String dayOfMonth;
private Integer dayOfMonth2;
private String hour;
private Integer hour2;
private String minute;
private Integer minute2;
private String second;
private Integer second2;
private Integer hourOfDay;
private String time;
private String dateString;
private Timer tadTimer;
private TimeAndDateListener tadl;
private String tadString;
private class TimeAndDateListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
tadString = "";
dateString = "";
time = "";
Calendar cal = Calendar.getInstance();
month2 = cal.get(Calendar.MONTH);
if (month2 == 0)
month = "January";
else if (month2 ==1)
month = "February";
else if (month2 ==2)
month = "March";
else if (month2 ==3)
month = "April";
else if (month2 == 4)
month = "May";
else if (month2 == 5)
month = "June";
else if (month2 == 6)
month = "July";
else if (month2 == 7)
month = "August";
else if (month2 == 8)
month = "September";
else if (month2 == 9)
month = "October";
else if (month2 == 10)
month = "November";
else
month = "December";
dayOfWeek2 = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek2 == 1)
dayOfWeek = "Sunday";
else if (dayOfWeek2 == 2)
dayOfWeek = "Monday";
else if (dayOfWeek2 == 3)
dayOfWeek = "Tuesday";
else if (dayOfWeek2 == 4)
dayOfWeek = "Wednesday";
else if (dayOfWeek2 == 5)
dayOfWeek = "Thursday";
else if (dayOfWeek2 == 6)
dayOfWeek = "Friday";
else
dayOfWeek = "Saturday";
dayOfMonth2 = cal.get(Calendar.DAY_OF_MONTH);
dayOfMonth = dayOfMonth2.toString();
year2 = cal.get(Calendar.YEAR);
year = year2.toString();
dateString = dayOfWeek + "," + month +" " + dayOfMonth + "," + year;
hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
minute2 = cal.get(Calendar.MINUTE);
second2 = cal.get(Calendar.SECOND);
if (hourOfDay > 0 && hourOfDay < 12 )
{ // beginning of if
if (minute2 < 10)
{ // beginning of if
if (second2 < 10)
{ // beginning of if
hour2 = hourOfDay;
time = hour2 + ":0" + minute2 + ":0" + second2 + " A.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay;
time = hour2 + ":0" + minute2 + ":" + second2 + " A.M.";
} // end else
} // end if
else
{ // begin else
if (second2 < 10)
{ // begin if
hour2 = hourOfDay;
time = hour2 + ":" + minute2 + ":0" + second2 + " A.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay;
time = hour2 + ":" + minute2 + ":" + second2 + " A.M.";
} // end else
} // end else
} // end if
else if (hourOfDay == 12)
{ // begin else if
if (minute2 < 10)
{ // beginning of if
if (second2 < 10)
{ // beginning of if
hour2 = hourOfDay;
time = hour2 + ":0" + minute2 + ":0" + second2 + " P.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay;
time = hour2 + ":0" + minute2 + ":" + second2 + " P.M.";
} // end else
} // end if
else
{ // begin else
if (second2 < 10)
{ // begin if
hour2 = hourOfDay;
time = hour2 + ":" + minute2 + ":0" + second2 + " P.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay;
time = hour2 + ":" + minute2 + ":" + second2 + " P.M.";
} // end else
} // end else
} // end else if
else if (hourOfDay ==0)
{ // begin else if
if (minute2 < 10)
{ // beginning of if
if (second2 < 10)
{ // beginning of if
hour2 = hourOfDay;
time = "12" + ":0" + minute2 + ":0" + second2 + " A.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay;
time = "12" + ":0" + minute2 + ":" + second2 + " A.M.";
} // end else
} // end if
else
{ // begin else
if (second2 < 10)
{ // begin if
hour2 = hourOfDay;
time = "12" + ":" + minute2 + ":0" + second2 + " A.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay;
time = "12" + ":" + minute2 + ":" + second2 + " A.M.";
} // end else
} // end else
} // end of else if
else
{ // begin else
if (minute2 < 10)
{ // beginning of if
if (second2 < 10)
{ // beginning of if
hour2 = hourOfDay - 12;
time = hour2 + ":0" + minute2 + ":0" + second2 + " P.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay - 12;
time = hour2 + ":0" + minute2 + ":" + second2 + " P.M.";
} // end else
} // end if
else
{ // begin else
if (second2 < 10)
{ // begin if
hour2 = hourOfDay - 12;
time = hour2 + ":" + minute2 + ":0" + second2 + " P.M.";
} // end if
else
{ // begin else
hour2 = hourOfDay - 12;
time = hour2 + ":" + minute2 + ":" + second2 + " P.M.";
} // end else
} // end else
} // end else
tadString = "<html><br>" + dateString + "</br> <br>" + time + "</br></html>";
PegGame pgame = PegGame.this;
pgame.repaint();
}
}
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");
System.out.println(dateString);
setVisible(true);
panel = new JPanel();
hm = new HelpMenu();
tadl = new TimeAndDateListener();
tadTimer = new Timer(0,tadl);
tadTimer.setDelay(1000);
tadTimer.start();
hm.setVisible(false);
// hmdll = new DoublyLinkedList<HelpMenu>();
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)
{
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);
g.drawString(tadString, 700, 100);
}
}