Лабораторная работа по "Программированию"

Автор работы: Пользователь скрыл имя, 27 Января 2013 в 04:14, лабораторная работа

Описание работы

Разработать игру согласно варианту задания.
Игра “кто вперед”
Два игрока стартуют в левом верхнем углу поля 9*9 и движутся к центру поля. Победит тот, кто придет первым. Положение первого игрока можно отмечать “+”, второго “*”, если оба в одной клетке – “0”.
Игроки могут ходить на одну или две клетки по спирали к центру (игрок вводит, соответственно 1 или 2).

Содержание работы

1. Постановка задачи 4
2. Описание структуры пользовательского меню 4
3. Описание структуры классов 5
4. Описание методов классов и спецификация локальных переменных 6
Поля 6
Методы 6
Класс GameEngine 6
Поля 6
Методы 6
Класс ButListener 6
Поля 6
Методы 6
Класс Battlefield 6
Поля 6
Методы 6
Класс ImgBut 7
Поля 7
Методы 7
Класс Points 7
Поля 7
Методы 7
Класс SpecPoints 7
Поля 7
Методы 7
Класс Player 7
Поля 7
Методы 7
Класс DisplayPanel 7
Поля 8
Методы 8
Класс ControlPanel 8
Поля 8
Методы 8
5. Таблица тестов 8
6. Результаты тестирования 8
Тест №1 8
Тест №2 10
Тест №3 11
7. Листинги программ 12
Класс GameEngine 12
Класс ButListener 3
Класс Battlefield 3
Класс ImgBut 5
Класс Points 5
Класс SpecPoints 5
Класс Player 6
Класс DisplayPanel 7
Класс ControlPanel 7

Файлы: 1 файл

Отчёт по лабораторной работе №5(Java).docx

— 875.50 Кб (Скачать файл)

            pointsArr[pointsNumArr[Player2.curPosition]].Image=Player2.Image;

        }

 

 

        pointsArr[pointsNumArr[1]].Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\start.jpg");

        pointsArr[pointsNumArr[81]].Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\finish.jpg");

       

        for (int i = 1; i <= 5; i++) {

            pointsArr[pointsNumArr[pointsSpecNumArr[i]]].refresh(i);

        }    

        for (int i = 1; i <= 81; i++) {

            pointsArr[i].setIcon(pointsArr[i].Image);

        }       

    }

    /**

     * устанваливает новые значения

     */

    public static void setNewParameters() {

        //////////////////////////////////////////////////////

        /**

         * генерируем  случайные номера 5 особых точек

         */

        Random random = new Random();

        int k=1;

        boolean onlyOne;

        while (k<=5) {

            onlyOne=true;

            int num=random.nextInt(79)+2;

            for (int m = 1; m <= 5; m++) {

                if(num==pointsSpecNumArr[m]){

                    onlyOne=false;

                }

            }

            if(onlyOne==true){

                pointsSpecNumArr[k]=num;

                pointsArr[pointsNumArr[num]]=new SpecPoints(k);

                k++;

            }

        }

       

        ////////////////////////////////////////////////////////////////

        /**

         * создаём  массив точек и добавляем на  поле

         */

          

        pointsArr[pointsNumArr[1]]=new Points("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\start.jpg");

        for (int i = 2; i <= 80; i++) {

            if (pointsArr[pointsNumArr[i]]==null) {

                pointsArr[pointsNumArr[i]]=new Points();

            }

        }

        pointsArr[pointsNumArr[81]]=new Points("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\finish.jpg");

        /**

         * теперь  добавляем точки на поле с  менеджером GridLayout

         */

        for (int i = 1; i <= 81; i++) {

            DisplayPanel.BF.add(pointsArr[i]);

        }       

        ////////////////////////////////////////////////////////////////

        DisplayPanel.BF.setIcon(new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\battlefield.jpg"));

        DisplayPanel.BF.setBounds(0, 0, 477, 297);

        DisplayPanel.BF.setVisible(true);

        GridLayout GridLay = new GridLayout(9, 9);

        DisplayPanel.BF.setLayout(GridLay);

        pointsArr[pointsNumArr[Player1.curPosition]].setIcon(Player1.Image);

        pointsArr[pointsNumArr[Player2.curPosition]].setIcon(Player2.Image);

        Player1.Opponent=Player2;

        Player2.Opponent=Player1;

        CurrPlayer=Player1;

        Player1.color= Color.RED;

        Player2.color= Color.BLUE;

        refresh();

    }

    /**

     * Сбрасывает все значения

     */

    static void setDefault() {      

        DisplayPanel.BF.removeAll();

        DisplayPanel.BF.setIcon(new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\rules.jpg"));

        DisplayPanel.BF.repaint();

        CurrPlayer=null;

        pointsSpecNumArr=new int[6];

        pointsArr=new Points[82];//задаём длину массива точек

        Player1=new Player("Player1","H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\Player1.jpg");

        Player2=new Player("Player2","H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\Player2.jpg");

    }

}

Класс ImgBut

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package whoisfirst;

 

import javax.swing.ImageIcon;

import javax.swing.JLabel;

 

/**

 *  Класс кнопок с иконкой

* @author Администратор

*/

public class ImgBut extends JLabel {

 

    public ImgBut(String ImageDirectory) {

        this.addMouseListener(new butListener());

        this.setIcon(new ImageIcon(ImageDirectory));

    }

 

    /**

     * Выполнить действие  по нажатию кнопки

     * @param But

     */

    public void action(ImgBut But) {

        if(ControlPanel.imgbut1==But){

            GameEngine.doStep(1);//сделать шаг

        }

        if(ControlPanel.imgbut2==But){

            GameEngine.doStep(2);//сделать 2 шага

        }

        if(ControlPanel.imgbut3==But){

            GameEngine.beginGame();//начать игру

        }

        if(ControlPanel.imgbut4==But){

            GameEngine.finishGame();//завершить игру

        }

        if(ControlPanel.imgbut5==But){

            System.exit(0);//закрыть программу

        }

    }

}

Класс Points

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package whoisfirst;

 

import javax.swing.ImageIcon;

import javax.swing.JLabel;

 

/**

*

* @author Администратор

*/

public class Points extends JLabel{

    public boolean visible;

    public ImageIcon Image=new ImageIcon();

    public Points(){

        this.setBounds(0, 0, 53, 33);

    }

    public Points(String ImageDirectory) {

        this.addMouseListener(new butListener());

        Image=new ImageIcon(ImageDirectory);

        this.setIcon(Image);

    }

    public void refresh(int PointType){

       

    }

   

    public void showPointEffect(int specPointType){

       

    }   

   

}

Класс SpecPoints

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package whoisfirst;

 

import javax.swing.ImageIcon;

 

/**

*

* @author Администратор

*/

public class SpecPoints extends Points {

    final public static int catchUp = 1;

    final public static int extraStep = 2;

    final public static int goBackward = 3;

    final public static int goForward = 4;

    final public static int skipStep = 5;

 

    public SpecPoints(int specPointType) {

        refresh(specPointType);

    }

    @Override

    public void refresh(int specPointType){

        switch (specPointType) {

            case catchUp:

                if(visible){

                    Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\catchUp.jpg");

                }

                break;

            case extraStep:

                if(visible){

                    Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\extraStep.jpg");

                }

                break;

            case goBackward:

                if(visible){

                    Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\goBackward.jpg");

                }

                break;

            case goForward:

                if(visible){

                    Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\goForward.jpg");

                }

                break;

            case skipStep:

                if(visible){

                    Image=new ImageIcon("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\skipStep.jpg");

                }

                break;

        }

    }

    @Override

    public void showPointEffect(int specPointType){

        switch (specPointType) {

            case catchUp:

                GameEngine.catchUp();

                break;

            case extraStep:

                GameEngine.extraStep();

                break;

            case goBackward:

                GameEngine.goBackward();

                break;

            case goForward:

                GameEngine.goForward();

                break;

            case skipStep:

                GameEngine.skipStep();

                break;

        }

    }

}

Класс Player

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package whoisfirst;

 

import java.awt.Color;

import javax.swing.ImageIcon;

 

/**

*

* @author Администратор

*/

public class Player extends Points{

    public int steps;

    public Color color;

    public String name;

    public int curPosition;

    public Player Opponent;

    public Player(String pName,String ImageDirectory){

        this.curPosition=1;

        this.name=pName;

        Image=new ImageIcon(ImageDirectory);

    }

   

    public void stayOnPoint(){

        for (int i = 1; i <= 5; i++) {

            if(Battlefield.pointsArr[Battlefield.pointsNumArr[curPosition]]==Battlefield.pointsArr[Battlefield.pointsNumArr[Battlefield.pointsSpecNumArr[i]]]){

                Battlefield.pointsArr[Battlefield.pointsNumArr[Battlefield.pointsSpecNumArr[i]]].visible=true;

                Battlefield.pointsArr[Battlefield.pointsNumArr[Battlefield.pointsSpecNumArr[i]]].showPointEffect(i);

            } 

        }

        Battlefield.refresh();

    }

   

    public void moveForward(){

        if(curPosition==81){

 

        }else{

            curPosition++;

        }

    }

   

    public void moveBackward(){

        if(curPosition==1){

           

        }else{

            curPosition--;

        }

    }   

}

Класс DisplayPanel

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package whoisfirst;

 

import java.awt.Color;

import javax.swing.JPanel;

 

/**

* Класс верхней панели

* @author Администратор

*/

public class DisplayPanel extends JPanel{

    public static Battlefield BF=new Battlefield();

    public DisplayPanel(){

        this.setLayout(null);

        this.setSize(500,297);

        this.setLocation(7, 10);

        this.setBackground(Color.BLACK);

        this.add(BF);

    }

 

}

Класс ControlPanel

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package whoisfirst;

 

import java.awt.Color;

import java.awt.FlowLayout;

import javax.swing.JLabel;

import javax.swing.JPanel;

 

/**

* Класс нижней управляющей панели

 * @author Администратор

*/

public class ControlPanel extends JPanel {

 

    public static ImgBut imgbut1 = new ImgBut("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\button1.jpg");

    public static ImgBut imgbut2 = new ImgBut("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\button2.jpg");

    public static ImgBut imgbut3 = new ImgBut("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\button3.jpg");

    public static ImgBut imgbut4 = new ImgBut("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\button4.jpg");

    public static ImgBut imgbut5 = new ImgBut("H:\\Учёба\\Программирование\\2 Курс\\Курсовая\\game project\\button5.jpg");

    public static JLabel timeLabel=new JLabel();

    public static JLabel playerLabel=new JLabel();

    public static JLabel playerStepsLabel=new JLabel();

 

    public ControlPanel() {

        JPanel leftPart = new JPanel(new FlowLayout(1, 10, 5));

        JPanel rightPart = new JPanel(new FlowLayout(1, 0, 0));

        JPanel centerPart = new JPanel(new FlowLayout(0, 5, 0));

        leftPart.setBounds(0, 0, 198, 97);

        leftPart.setBackground(Color.BLACK);

        rightPart.setBounds(395, 51, 89, 41);

        centerPart.setBackground(Color.BLACK);

        centerPart.setBounds(200, 0, 170, 97);

        this.setLayout(null);

        this.setBounds(0, 315, 500, 97);

        this.setBackground(Color.BLACK);

        this.add(leftPart);

        this.add(rightPart);

        this.add(centerPart);

        leftPart.add(imgbut1);

        leftPart.add(imgbut2);

        leftPart.add(imgbut3);

        leftPart.add(imgbut4);

        rightPart.add(imgbut5);

        centerPart.add(timeLabel);

        centerPart.add(playerLabel);

        centerPart.add(playerStepsLabel);

        imgbut1.setVisible(false);

        imgbut2.setVisible(false);

        timeLabel.setText("Время игры: 0 сек");

        timeLabel.setForeground(Color.GREEN);

        playerLabel.setForeground(Color.RED);

        playerStepsLabel.setForeground(Color.GREEN);

       

    }

}


Информация о работе Лабораторная работа по "Программированию"