Вход

Разработка приложения "сетевая игра морской бой"

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 175730
Дата создания 2013
Страниц 32
Источников 8
Мы сможем обработать ваш заказ (!) 25 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 400руб.
КУПИТЬ

Содержание

СОДЕРЖАНИЕ
Содержание
1. Постановка задачи
2. Интерфейс программы
3. Исходный текст на языке Java
3.1. Модуль BattleAI.java
3.2. МодульBattleBasicAI.java
3.3. Модуль BattleAIDirection.java
3.4. Модуль BattleAIPlace.java
3.5. Модуль BattleAIRandom.java
3.6. МодульBattleController.java
3.7. МодульBattleField.java
3.8. Модуль BattleFieldPanel.java
3.9. МодульBattleLauncher.java
3.10. Модуль BattleListener.java
3.11. Модуль BattleModel.java
3.12. Модуль BattleShip.java
3.13. МодульBattleShipPlace.java
3.14. Модуль BattleShipPlaceChecker.java
3.15. МодульBattleShipPlaceSet.java
3.16. Модуль BattleView.java
3.17. Модуль ComputerBattleFieldPanel.java
3.18. Модуль FieldCell.java
3.19. Модуль PlayerBattleFieldPanel.java
3.20. Модуль ScoreBattleFieldPanel.java
Заключение
Список литературы

Фрагмент работы для ознакомления

getFieldCell(pX, pY).setState(FieldCell.FIELD_CELL_WELL);battleShip.getFieldCells().add(getBattleField().getFieldCell(pX, pY));getBattleField().getFieldCell(pX, pY).setBattleShip(battleShip);return true;}@Overridepublic boolean setBorder(int pX, int pY){if (getBattleField().isBound(pX, pY) ){ getBattleField().getFieldCell(pX, pY).setState(FieldCell.FIELD_CELL_BORDER);battleShip.getFieldBorders().add(getBattleField().getFieldCell(pX, pY));}return true;}}3.16. МодульBattleView.javaimport java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;public class BattleView extends JFrame{private BattleModel battleModel;private BattleController battleController;private JMenuItem mntmNewGame;private JMenuItem mntmExit;private JMenuItem mntmAbout;private PlayerBattleFieldPanel playerBattleFieldPanel;private ComputerBattleFieldPanel computerBattleFieldPanel;private ScoreBattleFieldPanel scoreBattleFieldPanel;public PlayerBattleFieldPanel getPlayerBattleFieldPanel(){return playerBattleFieldPanel;}public ComputerBattleFieldPanel getComputerBattleFieldPanel(){return computerBattleFieldPanel;}public BattleView(BattleModel pBattleModel){battleModel = pBattleModel;createUI();battleModel.regListener(playerBattleFieldPanel);battleModel.regListener(computerBattleFieldPanel);battleModel.regListener(scoreBattleFieldPanel);battleController = new BattleController(this, battleModel);connectListeners();}public void update(){playerBattleFieldPanel.repaint();computerBattleFieldPanel.repaint();scoreBattleFieldPanel.repaint();}//добавлениеслушателейформыинаправляемихнаконтроллерpublic void connectListeners(){mntmAbout.addActionListener(battleController);mntmNewGame.addActionListener(battleController);mntmExit.addActionListener(battleController);computerBattleFieldPanel.addMouseListener(new MouseAdapter(){@Overridepublic void mousePressed(MouseEvent arg0){battleController.mousePressed(arg0);}});}private void createUI() {setTitle("МорскойБой");setResizable(false);setBounds(200, 100, 800, 360); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();setLocation((screenSize.width - getWidth())/2, (screenSize.height - getHeight())/2);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getContentPane().setLayout(null);playerBattleFieldPanel = new PlayerBattleFieldPanel(battleModel.getPlayerBattleField());playerBattleFieldPanel.setBounds(0, 25, 300, 300);computerBattleFieldPanel = new ComputerBattleFieldPanel (battleModel.getComputerBattleField());computerBattleFieldPanel.setBounds(310, 25, 300, 300);getContentPane().add(playerBattleFieldPanel);getContentPane().add(computerBattleFieldPanel);scoreBattleFieldPanel = new ScoreBattleFieldPanel(battleModel);scoreBattleFieldPanel.setBounds(620, 25, 180, 300);scoreBattleFieldPanel.setBackground(new Color(225, 225, 255));getContentPane().add(scoreBattleFieldPanel);JMenuBar menuBar = new JMenuBar();menuBar.setBounds(0, 0, 800, 21);getContentPane().add(menuBar);JMenu mnGame = new JMenu("Файл");menuBar.add(mnGame);mntmNewGame = new JMenuItem("Новаяигра");mnGame.add(mntmNewGame);mntmExit = new JMenuItem("Выход");mnGame.add(mntmExit);JMenu mnHelp = new JMenu("Справка");menuBar.add(mnHelp);mntmAbout = new JMenuItem("Опрограмме");mnHelp.add(mntmAbout);}}3.17. Модуль ComputerBattleFieldPanel.javaimport java.awt.Color;public class ComputerBattleFieldPanel extends BattleFieldPanel{public ComputerBattleFieldPanel(BattleField pBattleField){super(pBattleField);}protected Color getColorByStateElement(int pState){switch (pState){case FieldCell.FIELD_CELL_BORDER:return new Color(225, 225, 255);case FieldCell.FIELD_CELL_WATER:return new Color(225, 225, 255);case FieldCell.FIELD_CELL_WELL:return new Color(225, 225, 255);case FieldCell.FIELD_CELL_INJURED:return Color.red;case FieldCell.FIELD_CELL_KILLED:return Color.gray;case FieldCell.FIELD_CELL_MISSED:return Color.black;}return Color.blue;}}3.18. Модуль FieldCell.javapublicclass FieldCell {publicfinalstaticintFIELD_CELL_WATER = 1;publicfinalstaticintFIELD_CELL_BORDER = 2;publicfinalstaticintFIELD_CELL_WELL = 3;publicfinalstaticintFIELD_CELL_INJURED = 4;publicfinalstaticintFIELD_CELL_KILLED = 5;publicfinalstaticintFIELD_CELL_MISSED = 6;privateint x;privateint y;privateint state;private BattleShip ship;privateboolean isMarked;public FieldCell(int pX, int pY) {x = pX;y = pY;state = FIELD_CELL_WATER;isMarked = false;}publicint getX(){return x;}publicvoid setX(int pX){x = pX;}publicint getY(){return y;}publicvoid setY(int pY){x = pY;}publicint getState(){return state;}publicvoid setState(int pState) {state = pState;}publicboolean getIsMarked(){return isMarked;}publicvoid setIsMarked(boolean pIsMarked){isMarked = pIsMarked;}public BattleShip getBattleShip() {return ship;}publicvoid setBattleShip(BattleShip pShip){ship = pShip;}publicint shot() {isMarked = true;if (state == FIELD_CELL_WELL){state = FIELD_CELL_INJURED;return getBattleShip().shot();}else{if ((state == FIELD_CELL_BORDER) || (state == FIELD_CELL_WATER)){setState(FIELD_CELL_MISSED);}}return BattleField.SHUT_MISSED;}}3.19. Модуль PlayerBattleFieldPanel.javaimport java.awt.Color;public class PlayerBattleFieldPanel extends BattleFieldPanel{public PlayerBattleFieldPanel (BattleField pBattleField){super(pBattleField);}@Overrideprotected Color getColorByStateElement(int state) {switch (state) {case FieldCell.FIELD_CELL_BORDER:return new Color(215, 215, 255);case FieldCell.FIELD_CELL_WATER:return new Color(225, 225, 255);case FieldCell.FIELD_CELL_WELL:return Color.green;case FieldCell.FIELD_CELL_INJURED:return Color.red;case FieldCell.FIELD_CELL_KILLED:return Color.gray;case FieldCell.FIELD_CELL_MISSED:return Color.black;}return Color.blue;}}3.20. Модуль ScoreBattleFieldPanel.javaimport java.awt.Color;import java.awt.Graphics;import javax.swing.JPanel;public class ScoreBattleFieldPanel extends JPanel implements BattleListener {private BattleModel battleModel;public ScoreBattleFieldPanel (BattleModel pBattleModel){battleModel = pBattleModel;}@Overrideprotected void paintComponent(Graphics pGraphics){super.paintComponent(pGraphics);int shipsCount = battleModel.getComputerBattleField().getMaxShipsCount();int[] m = new int[shipsCount];for(int i = 0; i < 0; i++){m[i] = 0;}for(BattleShip battleShip:battleModel.getComputerBattleField().getShips())if (battleShip.getState() != BattleShip.BATTLE_SHIP_KILLED)m[battleShip.getDeckCount() - 1]++;for(int i = 0; i < shipsCount; i++){for(int j = 0; j < (i+1); j++){pGraphics.setColor(Color.gray);pGraphics.fillRect(j * 10 + 8, i * 10 + 5, 8, 8);}pGraphics.setColor(Color.black);pGraphics.drawString(String.valueOf(m[i]), 78, i * 10 + 12);}int compShipsCount = battleModel.getComputerBattleField().getAliveShipsCount();int userShipsCount = battleModel.getPlayerBattleField().getAliveShipsCount();pGraphics.drawString("Кораблей игрока: ".concat(String.valueOf(userShipsCount)), 15, 100);pGraphics.drawString("Кораблей противника: ".concat(String.valueOf(compShipsCount)), 15, 120);if (userShipsCount == 0)pGraphics.drawString("ВЫ ПРОИГРАЛИ!", 20, 140);if (compShipsCount == 0)pGraphics.drawString("ВЫ ВЫИГРАЛИ!", 20, 140);}//@Overridepublic void update(){repaint();}}ЗаключениеСписок литературы1Бадд Т. Объектно-Ориентированное программирование. - СПб.: Питер, 2007.2ИвановаГ.С., НичушкинаТ.Н., ПугачевЕ.К. Объектно-ориентированное программирование Под редакцией Г.С.Ивановой. - М.: Издательство МГТУ имени Н.Э.Баумана, 2001.3Портянкин И. SwingЭффективные пользовательские интерфейсы. - СПб.: Питер, 2005.4Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 1. Основы. 7-изд: Пер. с англ. - М.: Вильямс, 2007.5Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 2. Тонкости программирования 7-изд: Пер. с англ. - М.: Вильямс, 2007.6http://docs.oracle.com/javase/7/docs/api/7www.intuit.ru8www.wikipedia.org

Список литературы [ всего 8]

СПИСОК ЛИТЕРАТУРЫ
1Бадд Т. Объектно-Ориентированное программирование. - СПб.: Питер, 2007.
2ИвановаГ.С., НичушкинаТ.Н., ПугачевЕ.К. Объектно-ориентированное программирование Под редакцией Г.С.Ивановой. - М.: Издательство МГТУ имени Н.Э.Баумана, 2001.
3Портянкин И. SwingЭффективные пользовательские интерфейсы. - СПб.: Питер, 2005.
4Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 1. Основы. 7-изд: Пер. с англ. - М.: Вильямс, 2007.
5Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 2. Тонкости программирования 7-изд: Пер. с англ. - М.: Вильямс, 2007.
6http://docs.oracle.com/javase/7/docs/api/
7www.intuit.ru
8www.wikipedia.org
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.01092
© Рефератбанк, 2002 - 2024