summaryrefslogtreecommitdiffstats
path: root/src/FourByFour/FourByFour.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/FourByFour/FourByFour.java')
-rw-r--r--src/FourByFour/FourByFour.java884
1 files changed, 0 insertions, 884 deletions
diff --git a/src/FourByFour/FourByFour.java b/src/FourByFour/FourByFour.java
deleted file mode 100644
index 4e368cd..0000000
--- a/src/FourByFour/FourByFour.java
+++ /dev/null
@@ -1,884 +0,0 @@
-/*
- * $RCSfile$
- *
- * Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any
- * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
- * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
- * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
- * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
- * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
- * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
- * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
- * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
- * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
- * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- *
- * $Revision$
- * $Date$
- * $State$
- */
-
-import java.applet.Applet;
-import java.awt.*;
-import java.awt.event.*;
-import java.io.*;
-import java.net.*;
-import javax.media.j3d.*;
-import javax.vecmath.*;
-import com.sun.j3d.utils.universe.SimpleUniverse;
-import com.sun.j3d.utils.applet.MainFrame;
-
-/**
- * Class FourByFour
- *
- * Description: High level class for the game FourByFour
- *
- * Version: 1.2
- *
- */
-public class FourByFour extends Applet implements ActionListener {
-
- String host; // Host from which this applet came from
- int port; // Port number for writing high scores
- Image backbuffer2D; // Backbuffer image used for 2D double buffering
- int width, height; // Size of the graphics window in pixels
- int score; // Final game score
- int level_weight; // Weighting factor for skill level
- int move_weight; // Weighting factor for number of moves to win
- int time_weight; // Weighting factor for amount of time it took to win
- int skill_level; // Skill level, 0 - 4
- Canvas2D canvas2D; // 2D rendering canvas
- Canvas3D canvas3D; // 3D rendering canvas
- Board board; // Game board object
- Panel b_container; // Container to hold the buttons
- Panel c_container; // Container to hold the canvas
- Panel l_container; // Container to hold the labels
- Panel skill_panel; // Panel to hold skill levels
- Panel instruct_panel; // Panel to hold instructions
- Panel winner_panel; // Panel to hold winner announcement
- Panel high_panel; // Panel to hold high scores
- Button instruct_button; // Instructions button
- Button new_button; // New Game button
- Button skill_button; // Skill Level button
- Button high_button; // High Scores button
- Button undo_button; // Undo Move button
- Label skill_label; // Label on skill panel
- Label winner_label; // Label on winner panel
- Label winner_score_label; // Score label on winner panel
- Label winner_name_label; // Name label on winner panel
- Label winner_top_label; // Top 20 label on winner panel
- Label high_label; // High score label
- Label high_places[]; // Labels to hold places
- Label high_names[]; // Labels to hold names
- Label high_scores[]; // Labels to hold scores
- TextArea instruct_text; // TextArea object that holds instructions
- TextArea high_text; // TextArea object that holds top 20 scores
- TextField winner_name; // TextField object that holds winner's name
- Button instruct_return_button; // Return button for instruction panel
- Button skill_return_button; // Return button for skill level panel
- Button winner_return_button; // Return button for winner panel
- Button high_return_button; // Return button for high scores panel
- CheckboxGroup group; // CheckboxGroup object for skill level panel
- InputStream inStream; // Input stream for reading instructions and high scores
- OutputStream outStream; // Output stream for writing high scores
- static boolean appletFlag = true; // Applet flag
- boolean winner_flag = false; // Winner flag
- byte text[]; // Temporary storage area for reading instructions file
- byte outText[]; // Temporary storage area for writing high scores file
- String textString; // Storage area for instructions
- String scoresString; // String used for writing high scores file
- int places[]; // Storage area for high score places
- int scores[]; // Storage area for high score scores
- String names[]; // Storage area for high score names
- Positions positions; // Positions object, used to render player positions
-
- private SimpleUniverse universe = null;
-
- /**
- * Initialization
- */
- public void init() {
-
- // Set the port number.
- port = 4111;
-
- // Set the graphics window size.
- width = 350;
- height = 350;
-
- // Set the weighting factors used for scoring.
- level_weight = 1311;
- move_weight = 111;
- time_weight = 1000;
-
- // Create the "base" color for the AWT components.
- setBackground(new Color(200, 200, 200));
-
- // Read the instructions file.
- if (appletFlag) {
-
- // Get the host from which this applet came.
- host = getCodeBase().getHost();
-
- try {
- inStream = new BufferedInputStream
- (new URL(getCodeBase(), "instructions.txt").openStream(), 8192);
- text = new byte[5000];
- int character = inStream.read();
- int count = 0;
- while (character != -1) {
- text[count++] = (byte) character;
- character = inStream.read();
- }
- textString = new String(text);
- inStream.close();
- }
- catch(Exception e) {
- System.out.println("Error: " + e.toString());
- }
- }
- else {
-
- try {
- inStream = new BufferedInputStream
- (new FileInputStream("instructions.txt"));
- text = new byte[5000];
- int character = inStream.read();
- int count = 0;
- while (character != -1) {
- text[count++] = (byte) character;
- character = inStream.read();
- }
- textString = new String(text);
- inStream.close();
- }
- catch(Exception e) {
- System.out.println("Error: " + e.toString());
- }
- }
-
- // Read the high-scores file.
- places = new int[20];
- scores = new int[20];
- names = new String[20];
- if (appletFlag) {
- try {
- inStream = new BufferedInputStream
- (new URL(getCodeBase(), "scores.txt").openStream(), 8192);
- Reader read = new BufferedReader(new InputStreamReader(inStream));
- StreamTokenizer st = new StreamTokenizer(read);
- st.whitespaceChars(32,44);
- st.eolIsSignificant(false);
-
- int count = 0;
- int token = st.nextToken();
- boolean scoreFlag = true;
- String string;
- while (count<20) {
- places[count] = (int) st.nval;
- string = new String("");
- token = st.nextToken();
- while (token == StreamTokenizer.TT_WORD) {
- string += st.sval;
- string += " ";
- token = st.nextToken();
- }
- names[count] = string;
- scores[count] = (int) st.nval;
- token = st.nextToken();
- count++;
- }
- inStream.close();
- }
- catch(Exception e) {
- System.out.println("Error: " + e.toString());
- }
- }
- else {
- try {
- inStream = new BufferedInputStream
- (new FileInputStream("scores.txt"));
- Reader read = new BufferedReader(new InputStreamReader(inStream));
- StreamTokenizer st = new StreamTokenizer(read);
- st.whitespaceChars(32,44);
- st.eolIsSignificant(false);
-
- int count = 0;
- int token = st.nextToken();
- boolean scoreFlag = true;
- String string;
- while (count<20) {
- places[count] = (int) st.nval;
- string = new String("");
- token = st.nextToken();
- while (token == StreamTokenizer.TT_WORD) {
- string += st.sval;
- string += " ";
- token = st.nextToken();
- }
- names[count] = string;
- scores[count] = (int) st.nval;
- token = st.nextToken();
- count++;
- }
- inStream.close();
- }
- catch(Exception e) {
- System.out.println("Error: " + e.toString());
- }
- }
-
- // The positions object sets up the switch nodes which
- // control the rendering of the player's positions.
- positions = new Positions();
-
- // Create the game board object which is responsible
- // for keeping track of the moves on the game board
- // and determining what move the computer should make.
- board = new Board(this, positions, width, height);
- positions.setBoard(board);
-
- // Create a 2D graphics canvas.
- canvas2D = new Canvas2D(board);
- canvas2D.setSize(width, height);
- canvas2D.setLocation(width+10, 5);
- canvas2D.addMouseListener(canvas2D);
- board.setCanvas(canvas2D);
-
- // Create the 2D backbuffer
- backbuffer2D = createImage(width, height);
- canvas2D.setBuffer(backbuffer2D);
-
- // Create a 3D graphics canvas.
- canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
- canvas3D.setSize(width, height);
- canvas3D.setLocation(5, 5);
-
- // Create the scene branchgroup.
- BranchGroup scene3D = createScene3D();
-
- // Create a universe with the Java3D universe utility.
- universe = new SimpleUniverse(canvas3D);
- universe.addBranchGraph(scene3D);
-
- // Use parallel projection.
- View view = universe.getViewer().getView();
- view.setProjectionPolicy(View.PARALLEL_PROJECTION);
-
- // Set the universe Transform3D object.
- TransformGroup tg =
- universe.getViewingPlatform().getViewPlatformTransform();
- Transform3D transform = new Transform3D();
- transform.set(65.f, new Vector3f(0.0f, 0.0f, 400.0f));
- tg.setTransform(transform);
-
- // Create the canvas container.
- c_container = new Panel();
- c_container.setSize(720, 360);
- c_container.setLocation(0, 0);
- c_container.setVisible(true);
- c_container.setLayout(null);
- add(c_container);
-
- // Add the 2D and 3D canvases to the container.
- c_container.add(canvas2D);
- c_container.add(canvas3D);
-
- // Turn off the layout manager, widgets will be sized
- // and positioned explicitly.
- setLayout(null);
-
- // Create the button container.
- b_container = new Panel();
- b_container.setSize(720, 70);
- b_container.setLocation(0, 360);
- b_container.setVisible(true);
- b_container.setLayout(null);
-
- // Create the buttons.
- instruct_button = new Button("Instructions");
- instruct_button.setSize(135, 25);
- instruct_button.setLocation(10, 10);
- instruct_button.setVisible(true);
- instruct_button.addActionListener(this);
-
- new_button = new Button("New Game");
- new_button.setSize(135, 25);
- new_button.setLocation(150, 10);
- new_button.setVisible(true);
- new_button.addActionListener(this);
-
- undo_button = new Button("Undo Move");
- undo_button.setSize(135, 25);
- undo_button.setLocation(290, 10);
- undo_button.setVisible(true);
- undo_button.addActionListener(this);
-
- skill_button = new Button("Skill Level");
- skill_button.setSize(135, 25);
- skill_button.setLocation(430, 10);
- skill_button.setVisible(true);
- skill_button.addActionListener(this);
-
- high_button = new Button("High Scores");
- high_button.setSize(135, 25);
- high_button.setLocation(570, 10);
- high_button.setVisible(true);
- high_button.addActionListener(this);
-
- b_container.add(new_button);
- b_container.add(undo_button);
- b_container.add(skill_button);
- b_container.add(high_button);
- b_container.add(instruct_button);
-
- // Add the button container to the applet.
- add(b_container);
-
- // Create the "Skill Level" dialog box.
- skill_panel = new Panel();
- skill_panel.setSize(400, 300);
- skill_panel.setLocation(200, 20);
- skill_panel.setLayout(null);
-
- skill_label = new Label("Pick your skill level:");
- skill_label.setSize(200, 25);
- skill_label.setLocation(25, 20);
- skill_label.setVisible(true);
- skill_panel.add(skill_label);
-
- group = new CheckboxGroup();
- Checkbox skill_1 = new Checkbox("Babe in the Woods ", group, false);
- Checkbox skill_2 = new Checkbox("Walk and Chew Gum ", group, false);
- Checkbox skill_3 = new Checkbox("Jeopardy Contestant ", group, false);
- Checkbox skill_4 = new Checkbox("Rocket Scientist ", group, false);
- Checkbox skill_5 = new Checkbox("Be afraid, be very afraid", group, true);
- skill_1.setSize(170, 25);
- skill_1.setLocation(80, 60);
- skill_1.setVisible(true);
- skill_2.setSize(170, 25);
- skill_2.setLocation(80, 100);
- skill_2.setVisible(true);
- skill_3.setSize(170, 25);
- skill_3.setLocation(80, 140);
- skill_3.setVisible(true);
- skill_4.setSize(170, 25);
- skill_4.setLocation(80, 180);
- skill_4.setVisible(true);
- skill_5.setSize(170, 25);
- skill_5.setLocation(80, 220);
- skill_5.setVisible(true);
- skill_return_button = new Button("Return");
- skill_return_button.setSize(120, 25);
- skill_return_button.setLocation(300, 370);
- skill_return_button.setVisible(false);
- skill_return_button.addActionListener(this);
- skill_panel.add(skill_1);
- skill_panel.add(skill_2);
- skill_panel.add(skill_3);
- skill_panel.add(skill_4);
- skill_panel.add(skill_5);
- skill_panel.setVisible(false);
- add(skill_return_button);
- add(skill_panel);
-
- // Create the "Instructions" panel.
- instruct_return_button = new Button("Return");
- instruct_return_button.setLocation(300, 370);
- instruct_return_button.setSize(120, 25);
- instruct_return_button.setVisible(false);
- instruct_return_button.addActionListener(this);
- instruct_text =
- new TextArea(textString, 100, 200, TextArea.SCROLLBARS_VERTICAL_ONLY);
- instruct_text.setSize(715, 350);
- instruct_text.setLocation(0, 0);
- instruct_text.setVisible(false);
- add(instruct_text);
-
- add(instruct_return_button);
-
- high_panel = new Panel();
- high_panel.setSize(715, 350);
- high_panel.setLocation(0, 0);
- high_panel.setVisible(false);
- high_panel.setLayout(null);
-
- high_label = new Label("High Scores");
- high_label.setLocation(330, 5);
- high_label.setSize(200, 30);
- high_label.setVisible(true);
- high_panel.add(high_label);
-
- high_places = new Label[20];
- high_names = new Label[20];
- high_scores = new Label[20];
- for (int i=0; i<20; i++) {
- high_places[i] = new Label(Integer.toString(i+1));
- high_places[i].setSize(20, 30);
- high_places[i].setVisible(true);
- high_names[i] = new Label(names[i]);
- high_names[i].setSize(150, 30);
- high_names[i].setVisible(true);
- high_scores[i] = new Label(Integer.toString(scores[i]));
- high_scores[i].setSize(150, 30);
- high_scores[i].setVisible(true);
- if (i<10) {
- high_places[i].setLocation(70, i*30+40);
- high_names[i].setLocation(100, i*30+40);
- high_scores[i].setLocation(260, i*30+40);
- }
- else {
- high_places[i].setLocation(425, (i-10)*30+40);
- high_names[i].setLocation(455, (i-10)*30+40);
- high_scores[i].setLocation(615, (i-10)*30+40);
- }
- high_panel.add(high_places[i]);
- high_panel.add(high_names[i]);
- high_panel.add(high_scores[i]);
- }
- high_return_button = new Button("Return");
- high_return_button.setSize(120, 25);
- high_return_button.setLocation(300, 370);
- high_return_button.setVisible(false);
- high_return_button.addActionListener(this);
- add(high_return_button);
- add(high_panel);
-
- // Create the "Winner" dialog box
- winner_panel = new Panel();
- winner_panel.setLayout(null);
- winner_panel.setSize(600, 500);
- winner_panel.setLocation(0, 0);
- winner_return_button = new Button("Return");
- winner_return_button.setSize(120, 25);
- winner_return_button.setLocation(300, 360);
- winner_return_button.addActionListener(this);
- winner_panel.add(winner_return_button);
- winner_label = new Label("");
- winner_label.setSize(200, 30);
- winner_label.setLocation(270, 110);
- winner_score_label = new Label("");
- winner_score_label.setSize(200, 30);
- winner_top_label = new Label("You have a score in the top 20.");
- winner_top_label.setSize(200, 25);
- winner_top_label.setLocation(260, 185);
- winner_top_label.setVisible(false); winner_name_label = new Label("Enter your name here:");
- winner_name_label.setSize(150, 25);
- winner_name_label.setLocation(260, 210);
- winner_name_label.setVisible(false);
- winner_name = new TextField("");
- winner_name.setSize(200, 30);
- winner_name.setLocation(260, 240);
- winner_name.setVisible(false);
- winner_panel.add(winner_label);
- winner_panel.add(winner_score_label);
- winner_panel.add(winner_top_label);
- winner_panel.add(winner_name_label);
- winner_panel.add(winner_name);
- winner_panel.setVisible(false);
- add(winner_panel);
- }
-
- public void destroy() {
- universe.cleanup();
- }
-
- /**
- * Create the scenegraph for the 3D view.
- */
- public BranchGroup createScene3D() {
-
- // Define colors
- Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
- Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
- Color3f red = new Color3f(0.80f, 0.20f, 0.2f);
- Color3f ambient = new Color3f(0.25f, 0.25f, 0.25f);
- Color3f diffuse = new Color3f(0.7f, 0.7f, 0.7f);
- Color3f specular = new Color3f(0.9f, 0.9f, 0.9f);
- Color3f ambientRed = new Color3f(0.2f, 0.05f, 0.0f);
- Color3f bgColor = new Color3f(0.05f, 0.05f, 0.2f);
-
- // Create the branch group
- BranchGroup branchGroup = new BranchGroup();
-
- // Create the bounding leaf node
- BoundingSphere bounds =
- new BoundingSphere(new Point3d(0.0,0.0,0.0), 1000.0);
- BoundingLeaf boundingLeaf = new BoundingLeaf(bounds);
- branchGroup.addChild(boundingLeaf);
-
- // Create the background
- Background bg = new Background(bgColor);
- bg.setApplicationBounds(bounds);
- branchGroup.addChild(bg);
-
- // Create the ambient light
- AmbientLight ambLight = new AmbientLight(white);
- ambLight.setInfluencingBounds(bounds);
- branchGroup.addChild(ambLight);
-
- // Create the directional light
- Vector3f dir = new Vector3f(-1.0f, -1.0f, -1.0f);
- DirectionalLight dirLight = new DirectionalLight(white, dir);
- dirLight.setInfluencingBounds(bounds);
- branchGroup.addChild(dirLight);
-
- // Create the pole appearance
- Material poleMaterial =
- new Material(ambient, black, diffuse, specular, 110.f);
- poleMaterial.setLightingEnable(true);
- Appearance poleAppearance = new Appearance();
- poleAppearance.setMaterial(poleMaterial);
-
- // Create the transform group node
- TransformGroup transformGroup = new TransformGroup();
- transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
- transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- branchGroup.addChild(transformGroup);
-
- // Create the poles
- Poles poles = new Poles(poleAppearance);
- transformGroup.addChild(poles.getChild());
-
- // Add the position markers to the transform group
- transformGroup.addChild(positions.getChild());
-
- // Let the positions object know about the transform group
- positions.setTransformGroup(transformGroup);
-
- // Create the mouse pick and drag behavior node
- PickDragBehavior behavior = new PickDragBehavior(canvas2D, canvas3D, positions,
- branchGroup, transformGroup);
- behavior.setSchedulingBounds(bounds);
- transformGroup.addChild(behavior);
-
- return branchGroup;
- }
-
- public void actionPerformed (ActionEvent event) {
-
- Object target = event.getSource();
-
- // Process the button events.
- if (target == skill_return_button) {
- skill_panel.setVisible(false);
- skill_return_button.setVisible(false);
- c_container.setVisible(true);
- b_container.setVisible(true);
- newGame();
- }
- else if (target == winner_return_button) {
- if (winner_flag) {
- String name = winner_name.getText();
- String tmp_name = new String("");
- int tmp_score = 0;
- boolean insert_flag = false;
- winner_flag = false;
- for (int i=0; i<20; i++) {
- if (insert_flag) {
- name = names[i];
- score = scores[i];
- names[i] = tmp_name;
- scores[i] = tmp_score;
- tmp_name = name;
- tmp_score = score;
- }
- if (!insert_flag && score > scores[i]) {
- tmp_name = names[i];
- tmp_score = scores[i];
- scores[i] = score;
- names[i] = name;
- insert_flag = true;
- }
- high_names[i].setText(names[i]);
- high_scores[i].setText(Integer.toString(scores[i]));
- }
- scoresString = new String("");
- int place;
- for (int i=0; i<20; i++) {
- place = (int) places[i];
- scoresString += Integer.toString(place);
- scoresString += "\t";
- scoresString += names[i];
- scoresString += " ";
- scoresString += Integer.toString(scores[i]);
- scoresString += "\n";
- }
-
- if (appletFlag) {
- // Use this section of code when writing the high
- // scores file back to a server. Requires the use
- // of a deamon on the server to receive the socket
- // connection.
- //
- // Create the output stream.
- // try {
- // Socket socket = new Socket(host, port);
- // outStream = new BufferedOutputStream
- // (socket.getOutputStream(), 8192);
- // }
- // catch(IOException ioe) {
- // System.out.println("Error: " + ioe.toString());
- // }
- // System.out.println("Output stream opened");
- //
- // Write the scores to the file back on the server.
- // outText = scoresString.getBytes();
- // try {
- // outStream.write(outText);
- // outStream.flush();
- // outStream.close();
- // outStream = null;
- // }
- // catch (IOException ioe) {
- // System.out.println("Error: " + ioe.toString());
- // }
- // System.out.println("Output stream written");
-
- try {
- OutputStreamWriter outFile =
- new OutputStreamWriter(new FileOutputStream("scores.txt"));
- outFile.write(scoresString);
- outFile.flush();
- outFile.close();
- outFile = null;
- }
- catch (IOException ioe) {
- System.out.println("Error: " + ioe.toString());
- }
- catch (Exception e) {
- System.out.println("Error: " + e.toString());
- }
- }
- else {
-
- try {
- OutputStreamWriter outFile =
- new OutputStreamWriter(new FileOutputStream("scores.txt"));
- outFile.write(scoresString);
- outFile.flush();
- outFile.close();
- outFile = null;
- }
- catch (IOException ioe) {
- System.out.println("Error: " + ioe.toString());
- }
- }
- }
- winner_panel.setVisible(false);
- winner_return_button.setVisible(false);
- winner_label.setVisible(false);
- winner_score_label.setVisible(false);
- winner_name_label.setVisible(false);
- winner_top_label.setVisible(false);
- winner_name.setVisible(false);
- c_container.setVisible(true);
- b_container.setVisible(true);
- }
- else if (target == high_return_button) {
- high_return_button.setVisible(false);
- high_panel.setVisible(false);
- c_container.setVisible(true);
- b_container.setVisible(true);
- }
- else if (target == instruct_return_button) {
- instruct_text.setVisible(false);
- instruct_return_button.setVisible(false);
- instruct_text.repaint();
- c_container.setVisible(true);
- b_container.setVisible(true);
- }
- else if (target == undo_button) {
- board.undo_move();
- canvas2D.repaint();
- }
- else if (target == instruct_button) {
- c_container.setVisible(false);
- b_container.setVisible(false);
- instruct_text.setVisible(true);
- instruct_return_button.setVisible(true);
- }
- else if (target == new_button) {
- newGame();
- }
- else if (target == skill_button) {
- c_container.setVisible(false);
- b_container.setVisible(false);
- skill_panel.setVisible(true);
- skill_return_button.setVisible(true);
- }
- else if (target == high_button) {
- // Read the high scores file.
- if (appletFlag) {
- try {
- inStream = new BufferedInputStream
- (new URL(getCodeBase(), "scores.txt").openStream(), 8192);
- Reader read = new BufferedReader(new InputStreamReader(inStream));
- StreamTokenizer st = new StreamTokenizer(read);
- st.whitespaceChars(32,44);
- st.eolIsSignificant(false);
-
- int count = 0;
- int token = st.nextToken();
- boolean scoreFlag = true;
- String string;
- while (count<20) {
- places[count] = (int) st.nval;
- string = new String("");
- token = st.nextToken();
- while (token == StreamTokenizer.TT_WORD) {
- string += st.sval;
- string += " ";
- token = st.nextToken();
- }
- names[count] = string;
- scores[count] = (int) st.nval;
- token = st.nextToken();
- count++;
- }
- inStream.close();
- }
- catch(Exception ioe) {
- System.out.println("Error: " + ioe.toString());
- }
- }
- else {
- try {
- inStream = new BufferedInputStream
- (new FileInputStream("scores.txt"));
- Reader read = new BufferedReader(new InputStreamReader(inStream));
- StreamTokenizer st = new StreamTokenizer(read);
- st.whitespaceChars(32,44);
- st.eolIsSignificant(false);
-
- int count = 0;
- int token = st.nextToken();
- boolean scoreFlag = true;
- String string;
- while (count<20) {
- places[count] = (int) st.nval;
- string = new String("");
- token = st.nextToken();
- while (token == StreamTokenizer.TT_WORD) {
- string += st.sval;
- string += " ";
- token = st.nextToken();
- }
- names[count] = string;
- scores[count] = (int) st.nval;
- token = st.nextToken();
- count++;
- }
- inStream.close();
- }
- catch(Exception ioe) {
- System.out.println("Error: " + ioe.toString());
- }
- }
- c_container.setVisible(false);
- b_container.setVisible(false);
- high_panel.setVisible(true);
- high_return_button.setVisible(true);
- }
-
- Checkbox box = group.getSelectedCheckbox();
- String label = box.getLabel();
- if (label.equals("Babe in the Woods ")) {
- board.set_skill_level(0);
- }
- else if (label.equals("Walk and Chew Gum ")) {
- board.set_skill_level(1);
- }
- else if (label.equals("Jeopardy Contestant ")) {
- board.set_skill_level(2);
- }
- else if (label.equals("Rocket Scientist ")) {
- board.set_skill_level(3);
- }
- else if (label.equals("Be afraid, be very afraid")) {
- board.set_skill_level(4);
- }
- }
-
- public void newGame() {
- board.newGame();
- canvas2D.repaint();
- }
-
- public void start() {
- if (appletFlag) showStatus("FourByFour");
- }
-
- public void winner(int player, int level, int nmoves, long time) {
-
- if (player == 1) {
- score = level * level_weight +
- (66 - nmoves) * move_weight -
- (int) Math.min(time * time_weight, 5000);
- winner_label.setText("Game over, you win!");
- winner_label.setLocation(290, 90);
- winner_score_label.setText("Score = " + score);
- winner_score_label.setVisible(true);
- winner_score_label.setLocation(315, 120);
- if (score > scores[19]) {
- winner_name_label.setVisible(true);
- winner_top_label.setVisible(true);
- winner_name.setVisible(true);
- winner_flag = true;
- }
- }
- else {
- winner_label.setText("Game over, the computer wins!");
- winner_label.setLocation(250, 150);
- }
- c_container.setVisible(false);
- b_container.setVisible(false);
- winner_panel.setVisible(true);
- winner_label.setVisible(true);
- winner_return_button.setVisible(true);
- repaint();
- }
-
- /**
- * Inner class used to "kill" the window when running as
- * an application.
- */
- static class killAdapter extends WindowAdapter {
- public void windowClosing(WindowEvent event) {
- System.exit(0);
- }
- }
-
- /**
- * Main method, only used when running as an application.
- */
- public static void main(String[] args) {
- FourByFour.appletFlag = false;
- new MainFrame(new FourByFour(), 730, 450);
- }
-
-}