mirror of
https://github.com/Rushilwiz/APCS.git
synced 2025-04-05 13:00:20 -04:00
81 lines
2.7 KiB
Java
81 lines
2.7 KiB
Java
// Class: NQueensLab
|
|
//
|
|
// Author: Alyce Brady
|
|
//
|
|
// License Information:
|
|
// This class is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation.
|
|
//
|
|
// This class is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
import java.awt.Color;
|
|
|
|
import javax.swing.JMenu;
|
|
import javax.swing.JOptionPane;
|
|
|
|
import edu.kzoo.grid.display.ColorBlockDisplay;
|
|
import edu.kzoo.grid.display.DisplayMap;
|
|
import edu.kzoo.grid.gui.GridAppFrame;
|
|
import edu.kzoo.grid.gui.nuggets.BasicHelpMenu;
|
|
import edu.kzoo.grid.gui.nuggets.MinimalFileMenu;
|
|
|
|
|
|
/**
|
|
* Environment-Based Applications:<br>
|
|
*
|
|
* The NQueensLab class implements the N Queens problem.
|
|
*
|
|
* @author Alyce Brady
|
|
* @version 1 September 2002
|
|
**/
|
|
|
|
public class NQueensLab
|
|
{
|
|
// Specify dimensions of grid display and individual cell size.
|
|
private static final int DISPLAY_WIDTH = 400;
|
|
private static final int DISPLAY_HEIGHT = 400;
|
|
private static final int MIN_CELL_SIZE = 20;
|
|
|
|
// Specify the grid's background color and highlight color.
|
|
private static final Color BACKGROUND_COLOR = new Color(0, 155, 255);
|
|
private static final Color HIGHLIGHT_COLOR = Color.red;
|
|
|
|
/**
|
|
* Starts the N Queens program.
|
|
* The String arguments (args) are not used in this application.
|
|
**/
|
|
public static void main(String[] args)
|
|
{
|
|
|
|
String sizeString = JOptionPane.showInputDialog("How large would you like the board to be?", 8);
|
|
int size = Integer.parseInt(sizeString);
|
|
|
|
// Construct the object for solving the N Queens problem and
|
|
// a window to display it in.
|
|
GridAppFrame display = new GridAppFrame();
|
|
display.includeMenu(new MinimalFileMenu());
|
|
JMenu helpMenu = new BasicHelpMenu("NQueens",
|
|
"Your Name Here",
|
|
"with assistance from (whom? e.g., Alyce Brady)",
|
|
"1 September 2004", "file:NQueensHelp.html");
|
|
display.includeMenu(helpMenu);
|
|
display.includeSpeedSlider();
|
|
display.constructWindowContents("N Queens Problem", BACKGROUND_COLOR,
|
|
DISPLAY_WIDTH, DISPLAY_HEIGHT, MIN_CELL_SIZE);
|
|
Queen.setQueenColor(HIGHLIGHT_COLOR);
|
|
NQueens queens = new NQueens(size, display);
|
|
|
|
// Specify how to display objects in the grid.
|
|
DisplayMap.associate("Queen", new ColorBlockDisplay());
|
|
// OR, DisplayMap.associate("Queen", new ScaledImageDisplay("GoldCrown.gif"));
|
|
|
|
// Solve the N Queens Problem.
|
|
queens.solve();
|
|
}
|
|
|
|
}
|