Viktor_Profa

Екзамен

Jul 11th, 2023
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.08 KB | None | 0 0
  1. package com.shpp.p2p.cs.vprofatilov.assignment8;
  2.  
  3. import acm.graphics.GOval;
  4. import com.shpp.cs.a.graphics.WindowProgram;
  5.  
  6. import java.awt.*;
  7. import java.awt.event.MouseEvent;
  8. import java.util.ArrayList;
  9.  
  10. //По діагоналі на екрані повинно бути розташовано Х кіл.
  11. // При кліці на коло воно повинно починати рухатися (припустимо по горизонталі від одного краю екрана до іншого).
  12. //
  13. //Особливість в тому, що рухатися повинні останні N кіл,
  14. // на які клікнув користувач. Якщо клікнути по колу, що рухається, воно повинно змінити колір і відтепер рухатись вже вертикально, а не горизонтально.
  15.  
  16.  
  17. //питання моє заключаєтся в методі engine() та mousePressed() якщо без while(truу то працює однин крок)
  18. //а якщо взяти в while (true) {} то зависає і нічого не працює
  19. public class Assignment8Part1 extends WindowProgram {
  20. public static final int APPLICATION_WIDTH = 600;
  21. public static final int APPLICATION_HEIGHT = 400;
  22. public ArrayList<Integer> moveXarray = new ArrayList<>();
  23. public ArrayList<Integer> moveY = new ArrayList<>();
  24. public int COUNT_OF_BALL = 5;
  25. public ArrayList<Color> changesColor = new ArrayList<>();
  26. public ArrayList<Boolean> checkMove = new ArrayList<>();
  27. public ArrayList<GOval> ollBall = new ArrayList<>();
  28. public ArrayList<Boolean> checkTurnOfMove = new ArrayList<>();
  29. public int SIZE_OF_BALL = 30;
  30.  
  31. public void run() {
  32. moveXarray = fillArrayX();
  33. addMouseListeners();
  34. checkMove = fillArray();
  35. checkTurnOfMove = fillArray();
  36. ollBall = addObject();
  37. fillColorArray();
  38. println(checkMove.size());
  39.  
  40. }
  41.  
  42. private ArrayList<Integer> fillArrayX() {
  43. ArrayList<Integer> arrayList = new ArrayList<>();
  44. for (int i = 0; i < COUNT_OF_BALL; i++) {
  45. arrayList.add(20);
  46. }
  47. return arrayList;
  48. }
  49.  
  50.  
  51. private void engine(int moveX, int moveY) {
  52.  
  53. for (int i = 0; i < checkMove.size(); i++) {
  54. if (checkMove.get(i)) {
  55. println("yyy");
  56. if (!checkTurnOfMove.get(i)) {//if false X, else Y
  57. moveX = moveXarray.get(i);
  58. moveX = checkRealX(moveX, ollBall.get(i).getX());//change name
  59. ollBall.get(i).move(moveX, 0);
  60. moveXarray.set(i, moveX);
  61. println("STEP");
  62. } else {
  63. moveY = checkRealY(moveY, ollBall.get(i).getY());
  64. ollBall.get(i).move(0, moveY);
  65. }
  66. pause(200);
  67. }
  68.  
  69. }
  70.  
  71.  
  72. }
  73.  
  74. private int checkRealY(int moveY, double y) {
  75. if (moveY < 0 && y + moveY <= 0) {
  76. return moveY * -1;
  77. } else if (moveY > 0 && y + SIZE_OF_BALL + moveY >= APPLICATION_HEIGHT) {
  78. return moveY * -1;
  79. }
  80. return moveY;
  81. }
  82.  
  83. private int checkRealX(int moveX, double x) {
  84. if (moveX < 0 && x + 20 <= 0) {
  85. return moveX * -1;
  86. } else if (moveX > 0 && x + SIZE_OF_BALL + moveX >= APPLICATION_WIDTH) {
  87. return (moveX * -1);
  88. }
  89. return moveX;
  90. }
  91.  
  92. private ArrayList<GOval> addObject() {
  93. ArrayList<GOval> arrayList = new ArrayList<>();
  94. int x = 0;
  95. int y = 0;
  96. for (int i = 0; i < COUNT_OF_BALL; i++) {
  97. arrayList.add(paintOneCircle(x, y));
  98. x += SIZE_OF_BALL + 20;
  99. y += SIZE_OF_BALL + 20;
  100. }
  101. return arrayList;
  102. }
  103.  
  104. private GOval paintOneCircle(int x, int y) {
  105. GOval oval = new GOval(x, y, SIZE_OF_BALL, SIZE_OF_BALL);
  106. oval.setFilled(true);
  107. oval.setFillColor(Color.BLACK);
  108. oval.setColor(Color.BLACK);
  109. add(oval);
  110. return oval;
  111. }
  112.  
  113. private void fillColorArray() {
  114. changesColor.add(Color.CYAN);
  115. changesColor.add(Color.YELLOW);
  116. changesColor.add(Color.green);
  117. changesColor.add(Color.MAGENTA);
  118. changesColor.add(Color.RED);
  119. }
  120.  
  121. private ArrayList<Boolean> fillArray() {
  122. ArrayList<Boolean> arrayList = new ArrayList<>();
  123. for (int i = 0; i < COUNT_OF_BALL; i++) {
  124. arrayList.add(false);
  125. }
  126. return arrayList;
  127. }
  128.  
  129. public final void mousePressed(MouseEvent click) {
  130.  
  131. println("Yes");
  132. GOval thisOval = (GOval) getElementAt(click.getX(), click.getY());
  133. if (thisOval != null) {
  134. println("Got this");
  135.  
  136. int index = ollBall.indexOf(thisOval);
  137. checkMove.set(index, true);
  138. println(checkMove);
  139.  
  140. int moveX = 200;
  141. int moveY = 100;
  142.  
  143.  
  144. engine(moveX, moveY);
  145.  
  146.  
  147. }
  148. }
  149. }
Add Comment
Please, Sign In to add comment