Note that there are some explanatory texts on larger screens.

plurals
  1. POJava Battleships Issues
    primarykey
    data
    text
    <p>I have to design a batleships game for friday but the course im doing seems to have skipped a few things because although i managed all the other assignments this final project is unbelievably above my grasp but i have to do something.</p> <p>i have the following GUI code which gives me my playing grids but i have absolutely <em>no idea</em> how to do the following things</p> <ol> <li>assign a ship to some cells - and color these cells to reflect this</li> <li>how to do the actual hit,miss,sunk and update the grid</li> </ol> <p>i figure if i can at least do these i can duplicate the code for the cpu but im sooooooo stuck so any help is really appreciated please guys work some magic :)</p> <pre><code>/** * BattleGui: * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.io.*; public class BattleGui implements ActionListener { // Default filename to use for saving and loading files // Possible improvement: replace with a FileChooser private final static String DEFAULT_FILENAME = "battlegui.txt"; private int GRID_SIZE = 8; private JButton [] buttonArray; public JMenuBar createMenu() { JMenuBar menuBar = new JMenuBar();; JMenu menu = new JMenu("Battle Menu"); JMenuItem menuItem; menuBar.add(menu); // A group of JMenuItems. You can create other menu items here if desired menuItem = new JMenuItem("New Game"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Load Game"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Save Game"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Quit"); menuItem.addActionListener(this); menu.add(menuItem); //a submenu menu.addSeparator(); return menuBar; } public Container createContentPaneCPU() { int numButtons = GRID_SIZE * GRID_SIZE; JPanel grid = new JPanel(new GridLayout(GRID_SIZE,GRID_SIZE)); buttonArray = new JButton[numButtons]; for (int i=0; i&lt;numButtons; i++) { buttonArray[i] = new JButton(" "); // This label is used to identify which button was clicked in the action listener buttonArray[i].setActionCommand("" + i); // String "0", "1" etc. buttonArray[i].addActionListener(this); grid.add(buttonArray[i]); } return grid; } public Container createContentPane() { int numButtons = GRID_SIZE * GRID_SIZE; JPanel grid = new JPanel(new GridLayout(GRID_SIZE,GRID_SIZE)); buttonArray = new JButton[numButtons]; for (int i=0; i&lt;numButtons; i++) { buttonArray[i] = new JButton(" "); // This label is used to identify which button was clicked in the action listener //buttonArray[i].setActionCommand("" + i); // String "0", "1" etc. // buttonArray[i].addActionListener(this); grid.add(buttonArray[i]); } return grid; } /** * This method handles events from the Menu and the board. * */ public void actionPerformed(ActionEvent e) { String classname = getClassName(e.getSource()); JComponent component = (JComponent)(e.getSource()); if (classname.equals("JMenuItem")) { JMenuItem menusource = (JMenuItem)(e.getSource()); String menutext = menusource.getText(); // Determine which menu option was chosen if (menutext.equals("Load Game")) { /* BATTLEGUI Add your code here to handle Load Game **********/ LoadGame(); } else if (menutext.equals("Save Game")) { /* BATTLEGUI Add your code here to handle Save Game **********/ SaveGame(); } else if (menutext.equals("New Game")) { /* BATTLEGUI Add your code here to handle Save Game **********/ NewGame(); } } // Handle the event from the user clicking on a command button else if (classname.equals("JButton")) { JButton button = (JButton)(e.getSource()); int bnum = Integer.parseInt(button.getActionCommand()); int row = bnum / GRID_SIZE; int col = bnum % GRID_SIZE; System.out.println(e.getSource()); /* BATTLEGUI Add your code here to handle user clicking on the grid ***********/ button.setBackground(Color.GREEN); fireShot(row, col); } } /** * Returns the class name */ protected String getClassName(Object o) { String classString = o.getClass().getName(); int dotIndex = classString.lastIndexOf("."); return classString.substring(dotIndex+1); } /** * Create the GUI and show it. * For thread safety, this method should be invoked from the event-dispatching thread. */ private static void createAndShowGUI() { // Create and set up the window. JFrame frame = new JFrame("Battleships"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int maxGap = 20; int ButtonWidth = 20; int ButtonHeight = 1; BattleGui battlegui = new BattleGui(); frame.setJMenuBar(battlegui.createMenu()); JPanel gui = new JPanel(new GridLayout(2,2,20,5)); gui.setBorder(new EmptyBorder(5,5,5,5)); //Set up components preferred size JButton b = new JButton("Just fake button"); Dimension buttonSize = b.getPreferredSize(); gui.add(new JButton("Player")); gui.add(new JButton("CPU")); b.setPreferredSize(new Dimension(ButtonWidth, ButtonHeight)); gui.add(battlegui.createContentPane()); gui.add(battlegui.createContentPaneCPU()); frame.setContentPane(gui); // Create and set up the content pane. /* BattleGui battlegui = new BattleGui(); frame.setJMenuBar(battlegui.createMenu()); frame.setContentPane(battlegui.createContentPane()); */ // Display the window, setting the size frame.setSize(800, 600); frame.setVisible(true); } /** * Sets a Gui grid square at row, col to display a character */ public boolean setGuiSquare(int row, int col, char c) { int bnum = row * GRID_SIZE + col; if (bnum &gt;= (GRID_SIZE*GRID_SIZE)) { return false; } else { buttonArray[bnum].setText(Character.toString(c)); } return true; } /** * This is a standard main function for a Java GUI */ public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); //Deploy(); } }); } //************************************************************************ //*** BATTLEGUI: Modify the methods below to respond to Menu and Mouse click events /** * This method is called from the Menu event: New Game. * BATTLEGUI */ public void NewGame() { System.out.println("New game selected"); } /** * This method is called from the Menu event: Load Game. * BATTLEGUI */ public void LoadGame() { System.out.println("Load game selected"); } /** * This method is called from the Menu event: Save Game. * BATTLEGUI */ public void SaveGame() { System.out.println("Save game selected"); } /** * This method is called from the Mouse Click event. * BATTLEGUI */ public void fireShot(int row, int col) { System.out.println("Fire shot selected: at (" + row + ", " + col + ")"); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload