asd

From asd, 2 Years ago, written in Plain Text, viewed 2 times. This paste will cross the great divide in 1 Second.
URL https://paste.paivola.fi/view/5817aa81 Embed
Download Paste or View Raw
  1. package ristinolla;
  2.  
  3. import javafx.application.Application;
  4. import javafx.scene.Scene;
  5. import javafx.scene.control.Button;
  6. import javafx.scene.control.Label;
  7. import javafx.scene.layout.BorderPane;
  8. import javafx.scene.layout.GridPane;
  9. import javafx.stage.Stage;
  10.  
  11.  
  12. public class RistinollaSovellus extends Application{
  13.  
  14.     private static int vuoro;
  15.     private static final String[] players = new String[] {"X", "O"};
  16.    
  17.     public static void main(String[] args) {
  18.         launch(RistinollaSovellus.class);
  19.     }
  20.  
  21.     @Override
  22.     public void start(Stage primaryStage) {
  23.         vuoro = 0;
  24.        
  25.         BorderPane border = new BorderPane();
  26.         Label label = new Label("Vuoro: " + players[vuoro]);
  27.        
  28.         GridPane pane = new GridPane();
  29.         Button[] buttons = new Button[9];
  30.         for (int i = 0; i < 9; ++i) {
  31.             Button button = new Button();
  32.             buttons[i] = button;
  33.             pane.add(button, i/3, i%3);
  34.             button.setOnAction((event) -> {
  35.                 if (!button.getText().isEmpty()) {
  36.                     return;
  37.                 }
  38.                 button.setText(players[vuoro]);
  39.                 vuoro = (vuoro+1)%2;
  40.                 label.setText("Vuoro: " + players[vuoro]);
  41.                 String[] grid = new String[9];
  42.                 for (int j = 0; j < 9; ++j) {
  43.                     Button button1 = buttons[j];
  44.                     grid[j] = button1.getText();
  45.                 }
  46.                 if (isEnd(grid)) {
  47.                     label.setText("Loppu!");
  48.                     for (Button button1 : buttons) {
  49.                         button.setOnAction(null);
  50.                     }
  51.                 }
  52.             });
  53.         }
  54.        
  55.         border.setTop(label);
  56.         border.setCenter(pane);
  57.         Scene scene = new Scene(border);
  58.         primaryStage.setScene(scene);
  59.         primaryStage.show();
  60.     }
  61.    
  62.     private boolean isEnd(String[] grid) {
  63.         for (int i = 0; i < 3; ++i) {
  64.             if (!grid[i].isEmpty() && grid[i].equals(grid[i+3]) && grid[i].equals(grid[i+6])) {
  65.                 return true;
  66.             }
  67.             if (!grid[i*3].isEmpty() && grid[i*3].equals(grid[i*3+1]) && grid[i*3].equals(grid[i*3+2])) {
  68.                 return true;
  69.             }
  70.         }
  71.         if (!grid[0].isEmpty() && grid[0].equals(grid[4]) && grid[0].equals(grid[8])) {
  72.             return true;
  73.         }
  74.         if (!grid[2].isEmpty() && grid[2].equals(grid[4]) && grid[2].equals(grid[6])) {
  75.             return true;
  76.         }
  77.         return false;
  78.     }
  79.  
  80. }

Reply to "asd"

Here you can reply to the paste above