Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.shpp.p2p.cs.vprofatilov.assignment8;
- import acm.graphics.GOval;
- import com.shpp.cs.a.graphics.WindowProgram;
- import java.awt.*;
- import java.awt.event.MouseEvent;
- import java.util.ArrayList;
- //По діагоналі на екрані повинно бути розташовано Х кіл.
- // При кліці на коло воно повинно починати рухатися (припустимо по горизонталі від одного краю екрана до іншого).
- //
- //Особливість в тому, що рухатися повинні останні N кіл,
- // на які клікнув користувач. Якщо клікнути по колу, що рухається, воно повинно змінити колір і відтепер рухатись вже вертикально, а не горизонтально.
- //питання моє заключаєтся в методі engine() та mousePressed() якщо без while(truу то працює однин крок)
- //а якщо взяти в while (true) {} то зависає і нічого не працює
- public class Assignment8Part1 extends WindowProgram {
- public static final int APPLICATION_WIDTH = 600;
- public static final int APPLICATION_HEIGHT = 400;
- public ArrayList<Integer> moveXarray = new ArrayList<>();
- public ArrayList<Integer> moveY = new ArrayList<>();
- public int COUNT_OF_BALL = 5;
- public ArrayList<Color> changesColor = new ArrayList<>();
- public ArrayList<Boolean> checkMove = new ArrayList<>();
- public ArrayList<GOval> ollBall = new ArrayList<>();
- public ArrayList<Boolean> checkTurnOfMove = new ArrayList<>();
- public int SIZE_OF_BALL = 30;
- public void run() {
- moveXarray = fillArrayX();
- addMouseListeners();
- checkMove = fillArray();
- checkTurnOfMove = fillArray();
- ollBall = addObject();
- fillColorArray();
- println(checkMove.size());
- }
- private ArrayList<Integer> fillArrayX() {
- ArrayList<Integer> arrayList = new ArrayList<>();
- for (int i = 0; i < COUNT_OF_BALL; i++) {
- arrayList.add(20);
- }
- return arrayList;
- }
- private void engine(int moveX, int moveY) {
- for (int i = 0; i < checkMove.size(); i++) {
- if (checkMove.get(i)) {
- println("yyy");
- if (!checkTurnOfMove.get(i)) {//if false X, else Y
- moveX = moveXarray.get(i);
- moveX = checkRealX(moveX, ollBall.get(i).getX());//change name
- ollBall.get(i).move(moveX, 0);
- moveXarray.set(i, moveX);
- println("STEP");
- } else {
- moveY = checkRealY(moveY, ollBall.get(i).getY());
- ollBall.get(i).move(0, moveY);
- }
- pause(200);
- }
- }
- }
- private int checkRealY(int moveY, double y) {
- if (moveY < 0 && y + moveY <= 0) {
- return moveY * -1;
- } else if (moveY > 0 && y + SIZE_OF_BALL + moveY >= APPLICATION_HEIGHT) {
- return moveY * -1;
- }
- return moveY;
- }
- private int checkRealX(int moveX, double x) {
- if (moveX < 0 && x + 20 <= 0) {
- return moveX * -1;
- } else if (moveX > 0 && x + SIZE_OF_BALL + moveX >= APPLICATION_WIDTH) {
- return (moveX * -1);
- }
- return moveX;
- }
- private ArrayList<GOval> addObject() {
- ArrayList<GOval> arrayList = new ArrayList<>();
- int x = 0;
- int y = 0;
- for (int i = 0; i < COUNT_OF_BALL; i++) {
- arrayList.add(paintOneCircle(x, y));
- x += SIZE_OF_BALL + 20;
- y += SIZE_OF_BALL + 20;
- }
- return arrayList;
- }
- private GOval paintOneCircle(int x, int y) {
- GOval oval = new GOval(x, y, SIZE_OF_BALL, SIZE_OF_BALL);
- oval.setFilled(true);
- oval.setFillColor(Color.BLACK);
- oval.setColor(Color.BLACK);
- add(oval);
- return oval;
- }
- private void fillColorArray() {
- changesColor.add(Color.CYAN);
- changesColor.add(Color.YELLOW);
- changesColor.add(Color.green);
- changesColor.add(Color.MAGENTA);
- changesColor.add(Color.RED);
- }
- private ArrayList<Boolean> fillArray() {
- ArrayList<Boolean> arrayList = new ArrayList<>();
- for (int i = 0; i < COUNT_OF_BALL; i++) {
- arrayList.add(false);
- }
- return arrayList;
- }
- public final void mousePressed(MouseEvent click) {
- println("Yes");
- GOval thisOval = (GOval) getElementAt(click.getX(), click.getY());
- if (thisOval != null) {
- println("Got this");
- int index = ollBall.indexOf(thisOval);
- checkMove.set(index, true);
- println(checkMove);
- int moveX = 200;
- int moveY = 100;
- engine(moveX, moveY);
- }
- }
- }
Add Comment
Please, Sign In to add comment