Ошибка unreachable statement - Java
Формулировка задачи:
Листинг программы
- package yourreaction;
- import javafx.application.Application;
- import javafx.event.*;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.control.*;
- import javafx.scene.layout.*;
- import javafx.scene.input.*;
- import javafx.stage.Stage;
- import javafx.scene.shape.Circle;
- import javafx.scene.paint.Color;
- import java.util.Vector;
- import java.util.Random;
- public class YourReaction extends Application {
- static Scene scene;
- static VBox vbox;
- final static int AmountOfCircles = 9;
- final static int radius = 20;
- static int score = 0;
- public static void main(String[] args) {
- launch(args);
- }
- public void start(Stage stage) {
- stage.setTitle("Hello World!");
- vbox = new VBox(5);
- scene = new Scene(vbox, 300, 250);
- stage.setScene(scene);
- Button B_Start = new Button("Start");
- Button B_Exit = new Button("Exit");
- B_Start.setOnMousePressed(new EventHandler<MouseEvent> () {
- public void handle(MouseEvent me) {
- GameProcess();
- }
- });
- B_Exit.setOnMousePressed(new EventHandler<MouseEvent> () {
- public void handle(MouseEvent me) {
- System.exit(0);
- }
- });
- vbox.setAlignment(Pos.CENTER);
- vbox.getChildren().addAll(B_Start, B_Exit);
- stage.show();
- }
- public static int GameProcess() {
- vbox.getChildren().clear();
- Random random = new Random();
- HBox hbox = new HBox(5);
- hbox.setAlignment(Pos.CENTER);
- scene.setRoot(hbox);
- Circle circle1 = new Circle(radius, Color.RED);
- Circle circle2 = new Circle(radius, Color.RED);
- Circle circle3 = new Circle(radius, Color.RED);
- hbox.getChildren().addAll(circle1, circle2, circle3);
- while(true) {
- int RandomNum = 1 + random.nextInt(3);
- if(RandomNum == 1) circle1.setFill(Color.GREEN);
- if(RandomNum == 2) circle2.setFill(Color.GREEN);
- if(RandomNum == 3) circle3.setFill(Color.GREEN);
- circle1.setOnMousePressed(new EventHandler<MouseEvent> () {
- public void handle(MouseEvent me) {
- circle1.setFill(Color.RED);
- score++;
- }
- });
- circle2.setOnMousePressed(new EventHandler<MouseEvent> () {
- public void handle(MouseEvent me) {
- circle2.setFill(Color.RED);
- score++;
- }
- });
- circle3.setOnMousePressed(new EventHandler<MouseEvent> () {
- public void handle(MouseEvent me) {
- circle3.setFill(Color.RED);
- score++;
- }
- });
- }
- return score;
- }
- }
Листинг программы
- return score;
Листинг программы
- static int score = 0;
Листинг программы
- score++;
Решение задачи: «Ошибка unreachable statement»
textual
Листинг программы
- import javafx.animation.KeyFrame;
- import javafx.animation.Timeline;
- import javafx.application.Application;
- import javafx.application.Platform;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import javafx.scene.paint.Color;
- import javafx.scene.shape.Circle;
- import javafx.stage.Stage;
- import javafx.util.Duration;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- /**
- * Created by Artur on 14.07.17.
- */
- public class YourReaction extends Application {
- private final static int AMOUNT_OF_CIRCLES = 3;
- private final static int RADIUS = 20;
- private static int score = 0;
- private VBox gamePlace;
- private Button btStart;
- private Button btStop;
- public static void main(String[] args) {
- launch(args);
- }
- @Override
- public void start(Stage primaryStage) throws Exception {
- gamePlace = new VBox(5);
- btStart = new Button("Start");
- btStop = new Button("Stop");
- btStart.setOnMousePressed(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- createRoundGame(1000);
- }
- });
- btStop.setOnMousePressed(new EventHandler<MouseEvent>() {
- @Override
- public void handle(MouseEvent event) {
- Platform.exit();
- }
- });
- createMenuGame();
- Scene scene = new Scene(gamePlace, 300, 250);
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- private void clearGamePlace() {
- gamePlace.getChildren().clear();
- }
- private void createMenuGame() {
- clearGamePlace();
- gamePlace.getChildren().addAll(btStart, btStop);
- }
- private void createRoundGame(double msWillCircleGreen) {// метод принимает, количество миллисекунд до того, как появится зелёный круг, собственно сюда и передавай свой изменяемый параметр
- clearGamePlace();
- List<Circle> circles = new ArrayList<>(AMOUNT_OF_CIRCLES);//проще оперировать массивом кругов, чем описывать каждый отдельно
- for (int i = 0; i < AMOUNT_OF_CIRCLES; i++)
- circles.add(new Circle(RADIUS, Color.RED));
- Random random = new Random();
- Circle circleSuccess = circles.get(random.nextInt(AMOUNT_OF_CIRCLES));//выбираем из массива только один круг рандомно, который будет окрашен в зелёный. P.S. если у тебя начисляются очки только за клик по зелёному кругу, почему у тебя в изначальном варианте обработка на клик мыши была для всех кругов, не учитывая зелёный он или нет? либо у тебя ошибка, либо я тебя не правильно понял, если что поправишь
- HBox hbox = new HBox(5);
- hbox.setAlignment(Pos.CENTER);
- hbox.getChildren().addAll(circles);
- //вот собственно место твоего вопроса, создаём объект timeline(таймер), указываем ему количество миллисекунд до того, как выполнить собственно какое-либо действие
- Timeline timeline = new Timeline(new KeyFrame(Duration.millis(msWillCircleGreen), new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) { //а это метод, который будет вызван, когда таймер закончится, собственно здесь и прописываем закрашивание нужного круга и обработку по клику на него
- circleSuccess.setOnMousePressed(new EventHandler<MouseEvent>() {//создание обработки по клику должна находиться именно здесь, иначе может произойти ситуация что пользователь кликнет по нужному кругу, до того, как он станет зелёным
- @Override
- public void handle(MouseEvent event) {
- score++;
- createMenuGame();
- }
- });
- circleSuccess.setFill(Color.GREEN);//
- }
- }));
- gamePlace.getChildren().add(hbox);
- timeline.play();//запускаем таймер
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д