2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Задание на java
Сообщение29.12.2012, 09:16 


24/12/12
2
Цитата:
Помогите написать JUnit-тесты для данной программы в соответствии с логикой программы.

Код:
package laba2;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

class square extends JComponent {

    private static final Random random = new Random();
    private Color color;
    private double x, y;
    private double dx, dy;
    public square() {
        setSize(50, 50);
        dx = 1;
        dy = 1;
        color = Color.black;
    }
    @Override
    public void paintComponent(Graphics g) {
        setBounds((int)x, (int)y, getWidth(), getHeight());
        g.setColor(color);
        g.fillRect(0, 0, getWidth(), getHeight());
    }
    public void setColor(Color color) {
        this.color = color;
    }
    public double getsquareX() {
        return x;
    }
    public double getsquareY() {
        return y;
    }
    public void invertDx() {
        int sign = Integer.signum((int)-dx);
        dx = sign * (2 + random.nextInt(3));
    }
    public void invertDy() {
        int sign = Integer.signum((int)-dy);
        dy = sign * (2 + random.nextInt(3));
    }
    public void advance() {
        x += dx;
        y += dy;
    }
    @Override
    public String toString() {
        return "square{" +
                "x=" + x +
                ", y=" + y +
                ", dx=" + dx +
                ", dy=" + dy +
                '}';
    }
}
class squareMover implements ActionListener {
    private square square;
    private Container pane;
    public squareMover(square square, Container pane) {
        this.square = square;
        this.pane = pane;
    }
    private boolean squareHitsUpperBorder() {
        return square.getsquareY() <= 0;
    }
    private boolean squareHitsLowerBorder() {
        return square.getsquareY() >= pane.getHeight() - square.getHeight();
    }
    private boolean squareHitsLeftBorder() {
        return square.getsquareX() <= 0;
    }
    private boolean squareHitsRightBorder() {
        return square.getsquareX() >= pane.getWidth() - square.getWidth();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
       square.advance();
        if (squareHitsUpperBorder() || squareHitsLowerBorder()) {
           square.invertDy();
           square.setColor(squareHitsUpperBorder() ? Color.RED : Color.BLUE);
        }
        if (squareHitsLeftBorder() || squareHitsRightBorder()) {
           square.invertDx();
           square.setColor(squareHitsLeftBorder() ? Color.YELLOW : Color.WHITE);
        }
        pane.repaint();
    }
}
class Window extends JFrame {
    private final square square = new square();
    public Window() {
        setTitle("Лабораторна робота № 2");
        setSize(400, 400);
        setResizable(false);
        setLayout(null);
        getContentPane().setBackground(Color.GREEN);
        getContentPane().add(square);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        new Timer(5, new squareMover(square, getContentPane())).start();
    }
}
public class Launcher {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Window window = new Window();
                window.setVisible(true);
            }
        });
    }
}

 Профиль  
                  
 
 Posted automatically
Сообщение29.12.2012, 09:19 
Супермодератор
Аватара пользователя


20/11/12
5728
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Программирование»
Перенёс в соответствующий раздел

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group