From 66b98294b7bec610d5469ad5074f7ce03ad57db8 Mon Sep 17 00:00:00 2001 From: Arthur <78031901+Arthur7770@users.noreply.github.com> Date: Fri, 7 May 2021 17:27:11 +0200 Subject: [PATCH] Livraison --- livraison/dist/BattleShip.jar | Bin 0 -> 31795 bytes livraison/doc/allclasses-index.html | 208 +++++ livraison/doc/allpackages-index.html | 129 +++ livraison/doc/battleship/Main.html | 304 +++++++ .../control/TerminalKeyboardListener.html | 257 ++++++ .../control/WindowKeyboardListener.html | 318 +++++++ .../control/WindowMouseListener.html | 359 ++++++++ .../battleship/control/package-summary.html | 114 +++ .../doc/battleship/control/package-tree.html | 96 +++ livraison/doc/battleship/model/Direction.html | 448 ++++++++++ livraison/doc/battleship/model/Game.html | 367 ++++++++ livraison/doc/battleship/model/Ship.html | 445 ++++++++++ .../doc/battleship/model/package-summary.html | 133 +++ .../doc/battleship/model/package-tree.html | 109 +++ .../model/player/AbstractPlayer.html | 465 ++++++++++ .../doc/battleship/model/player/Computer.html | 249 ++++++ .../doc/battleship/model/player/Human.html | 266 ++++++ .../doc/battleship/model/player/Player.html | 379 +++++++++ .../doc/battleship/model/player/Random.html | 270 ++++++ .../model/player/package-summary.html | 149 ++++ .../battleship/model/player/package-tree.html | 109 +++ livraison/doc/battleship/package-summary.html | 109 +++ livraison/doc/battleship/package-tree.html | 94 +++ livraison/doc/battleship/utils/Pair.html | 332 ++++++++ livraison/doc/battleship/utils/Triplet.html | 369 ++++++++ .../doc/battleship/utils/package-summary.html | 114 +++ .../doc/battleship/utils/package-tree.html | 95 +++ .../doc/battleship/view/AbstractView.html | 524 ++++++++++++ livraison/doc/battleship/view/Terminal.html | 480 +++++++++++ livraison/doc/battleship/view/View.html | 295 +++++++ .../doc/battleship/view/Window.Draw.html | 321 +++++++ livraison/doc/battleship/view/Window.html | 603 +++++++++++++ .../doc/battleship/view/WindowListener.html | 287 +++++++ .../doc/battleship/view/package-summary.html | 145 ++++ .../doc/battleship/view/package-tree.html | 123 +++ livraison/doc/constant-values.html | 117 +++ livraison/doc/deprecated-list.html | 81 ++ livraison/doc/element-list | 6 + livraison/doc/help-doc.html | 181 ++++ livraison/doc/index-all.html | 697 +++++++++++++++ livraison/doc/index.html | 127 +++ livraison/doc/jquery-ui.overrides.css | 34 + livraison/doc/member-search-index.js | 1 + livraison/doc/module-search-index.js | 1 + livraison/doc/overview-summary.html | 26 + livraison/doc/overview-tree.html | 161 ++++ livraison/doc/package-search-index.js | 1 + livraison/doc/resources/glass.png | Bin 0 -> 499 bytes livraison/doc/resources/x.png | Bin 0 -> 394 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes livraison/doc/script-dir/jquery-3.5.1.min.js | 2 + livraison/doc/script-dir/jquery-ui.min.css | 7 + livraison/doc/script-dir/jquery-ui.min.js | 6 + .../script-dir/jquery-ui.structure.min.css | 5 + livraison/doc/script.js | 103 +++ livraison/doc/search.js | 378 +++++++++ livraison/doc/stylesheet.css | 792 ++++++++++++++++++ livraison/doc/tag-search-index.js | 1 + livraison/doc/type-search-index.js | 1 + livraison/rapport/rapport.pdf | Bin 0 -> 463104 bytes livraison/src/battleship/Main.java | 86 ++ .../control/TerminalKeyboardListener.java | 16 + .../control/WindowKeyboardListener.java | 34 + .../control/WindowMouseListener.java | 58 ++ .../src/battleship/control/package-info.java | 4 + livraison/src/battleship/model/Direction.java | 36 + livraison/src/battleship/model/Game.java | 111 +++ livraison/src/battleship/model/Ship.java | 107 +++ .../src/battleship/model/package-info.java | 4 + .../model/player/AbstractPlayer.java | 98 +++ .../src/battleship/model/player/Computer.java | 28 + .../src/battleship/model/player/Human.java | 19 + .../src/battleship/model/player/Player.java | 73 ++ .../src/battleship/model/player/Random.java | 21 + .../battleship/model/player/package-info.java | 4 + livraison/src/battleship/package-info.java | 4 + livraison/src/battleship/utils/Pair.java | 53 ++ livraison/src/battleship/utils/Triplet.java | 64 ++ .../src/battleship/utils/package-info.java | 4 + .../src/battleship/view/AbstractView.java | 192 +++++ livraison/src/battleship/view/Terminal.java | 167 ++++ livraison/src/battleship/view/View.java | 46 + livraison/src/battleship/view/Window.java | 304 +++++++ .../src/battleship/view/WindowListener.java | 32 + .../src/battleship/view/package-info.java | 4 + src/META-INF/MANIFEST.MF | 3 + 96 files changed, 13365 insertions(+) create mode 100644 livraison/dist/BattleShip.jar create mode 100644 livraison/doc/allclasses-index.html create mode 100644 livraison/doc/allpackages-index.html create mode 100644 livraison/doc/battleship/Main.html create mode 100644 livraison/doc/battleship/control/TerminalKeyboardListener.html create mode 100644 livraison/doc/battleship/control/WindowKeyboardListener.html create mode 100644 livraison/doc/battleship/control/WindowMouseListener.html create mode 100644 livraison/doc/battleship/control/package-summary.html create mode 100644 livraison/doc/battleship/control/package-tree.html create mode 100644 livraison/doc/battleship/model/Direction.html create mode 100644 livraison/doc/battleship/model/Game.html create mode 100644 livraison/doc/battleship/model/Ship.html create mode 100644 livraison/doc/battleship/model/package-summary.html create mode 100644 livraison/doc/battleship/model/package-tree.html create mode 100644 livraison/doc/battleship/model/player/AbstractPlayer.html create mode 100644 livraison/doc/battleship/model/player/Computer.html create mode 100644 livraison/doc/battleship/model/player/Human.html create mode 100644 livraison/doc/battleship/model/player/Player.html create mode 100644 livraison/doc/battleship/model/player/Random.html create mode 100644 livraison/doc/battleship/model/player/package-summary.html create mode 100644 livraison/doc/battleship/model/player/package-tree.html create mode 100644 livraison/doc/battleship/package-summary.html create mode 100644 livraison/doc/battleship/package-tree.html create mode 100644 livraison/doc/battleship/utils/Pair.html create mode 100644 livraison/doc/battleship/utils/Triplet.html create mode 100644 livraison/doc/battleship/utils/package-summary.html create mode 100644 livraison/doc/battleship/utils/package-tree.html create mode 100644 livraison/doc/battleship/view/AbstractView.html create mode 100644 livraison/doc/battleship/view/Terminal.html create mode 100644 livraison/doc/battleship/view/View.html create mode 100644 livraison/doc/battleship/view/Window.Draw.html create mode 100644 livraison/doc/battleship/view/Window.html create mode 100644 livraison/doc/battleship/view/WindowListener.html create mode 100644 livraison/doc/battleship/view/package-summary.html create mode 100644 livraison/doc/battleship/view/package-tree.html create mode 100644 livraison/doc/constant-values.html create mode 100644 livraison/doc/deprecated-list.html create mode 100644 livraison/doc/element-list create mode 100644 livraison/doc/help-doc.html create mode 100644 livraison/doc/index-all.html create mode 100644 livraison/doc/index.html create mode 100644 livraison/doc/jquery-ui.overrides.css create mode 100644 livraison/doc/member-search-index.js create mode 100644 livraison/doc/module-search-index.js create mode 100644 livraison/doc/overview-summary.html create mode 100644 livraison/doc/overview-tree.html create mode 100644 livraison/doc/package-search-index.js create mode 100644 livraison/doc/resources/glass.png create mode 100644 livraison/doc/resources/x.png create mode 100644 livraison/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 livraison/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png create mode 100644 livraison/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 livraison/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 livraison/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 livraison/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 livraison/doc/script-dir/images/ui-icons_222222_256x240.png create mode 100644 livraison/doc/script-dir/images/ui-icons_2e83ff_256x240.png create mode 100644 livraison/doc/script-dir/images/ui-icons_454545_256x240.png create mode 100644 livraison/doc/script-dir/images/ui-icons_888888_256x240.png create mode 100644 livraison/doc/script-dir/images/ui-icons_cd0a0a_256x240.png create mode 100644 livraison/doc/script-dir/jquery-3.5.1.min.js create mode 100644 livraison/doc/script-dir/jquery-ui.min.css create mode 100644 livraison/doc/script-dir/jquery-ui.min.js create mode 100644 livraison/doc/script-dir/jquery-ui.structure.min.css create mode 100644 livraison/doc/script.js create mode 100644 livraison/doc/search.js create mode 100644 livraison/doc/stylesheet.css create mode 100644 livraison/doc/tag-search-index.js create mode 100644 livraison/doc/type-search-index.js create mode 100644 livraison/rapport/rapport.pdf create mode 100644 livraison/src/battleship/Main.java create mode 100644 livraison/src/battleship/control/TerminalKeyboardListener.java create mode 100644 livraison/src/battleship/control/WindowKeyboardListener.java create mode 100644 livraison/src/battleship/control/WindowMouseListener.java create mode 100644 livraison/src/battleship/control/package-info.java create mode 100644 livraison/src/battleship/model/Direction.java create mode 100644 livraison/src/battleship/model/Game.java create mode 100644 livraison/src/battleship/model/Ship.java create mode 100644 livraison/src/battleship/model/package-info.java create mode 100644 livraison/src/battleship/model/player/AbstractPlayer.java create mode 100644 livraison/src/battleship/model/player/Computer.java create mode 100644 livraison/src/battleship/model/player/Human.java create mode 100644 livraison/src/battleship/model/player/Player.java create mode 100644 livraison/src/battleship/model/player/Random.java create mode 100644 livraison/src/battleship/model/player/package-info.java create mode 100644 livraison/src/battleship/package-info.java create mode 100644 livraison/src/battleship/utils/Pair.java create mode 100644 livraison/src/battleship/utils/Triplet.java create mode 100644 livraison/src/battleship/utils/package-info.java create mode 100644 livraison/src/battleship/view/AbstractView.java create mode 100644 livraison/src/battleship/view/Terminal.java create mode 100644 livraison/src/battleship/view/View.java create mode 100644 livraison/src/battleship/view/Window.java create mode 100644 livraison/src/battleship/view/WindowListener.java create mode 100644 livraison/src/battleship/view/package-info.java create mode 100644 src/META-INF/MANIFEST.MF diff --git a/livraison/dist/BattleShip.jar b/livraison/dist/BattleShip.jar new file mode 100644 index 0000000000000000000000000000000000000000..32983f28721aa8e5ccc5372b40be8530e5bb2af6 GIT binary patch literal 31795 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 + + + + +All Classes + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
AbstractPlayer +
Abstract player class see Player to know more about this code organisation
+
AbstractView +
Abstract view class
+
Computer +
Computer super class, all player object which use an algorithm to calculate coordinates to use should extend from + this object.
+
Direction 
Game +
Main game class
+
Human +
This object do nothing itself, it just an interface to know the type of player (Human or not), + each view interact with the player with its methods
+
Main +
Main class + Given arguments are importants, please give attention to Main.parseArgs(String[]) about this
+
Pair<U,​K> +
tuple containing 2 generic type elements
+
Player +
Player interface, used as an API.
+
Random +
place its ship and choose moves randomly
+
Ship +
player's ship class
+
Terminal +
Terminal view, instanced if argument 2 equals to "nogui"
+
TerminalKeyboardListener 
Triplet<U,​K,​V> +
tuple containing 3 generic type elements
+
View +
View interface, used as an API
+
Window +
Window view, instanced if argument 2 equals to "nogui"
+
WindowKeyboardListener 
WindowListener 
WindowMouseListener 
+
+
+
+ +
+
+ + diff --git a/livraison/doc/allpackages-index.html b/livraison/doc/allpackages-index.html new file mode 100644 index 0000000..d0b0203 --- /dev/null +++ b/livraison/doc/allpackages-index.html @@ -0,0 +1,129 @@ + + + + + +All Packages + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Package Summary
PackageDescription
battleship +
Contains Main Class
+
battleship.control +
Contains keyboard and mouse listeners
+
battleship.model +
Contains all main Game classes
+
battleship.model.player +
Contains all players classes instances and theirs super classes and interface
+
battleship.utils +
Utility classes
+
battleship.view +
Contains terminal and windows view classes and theirs super class and interface
+
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/Main.html b/livraison/doc/battleship/Main.html new file mode 100644 index 0000000..fb6c48f --- /dev/null +++ b/livraison/doc/battleship/Main.html @@ -0,0 +1,304 @@ + + + + + +Main + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package battleship
+

Class Main

+
+
java.lang.Object +
battleship.Main
+
+
+
+
public class Main
+extends java.lang.Object
+
Main class + Given arguments are importants, please give attention to parseArgs(String[]) about this
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    static Gamegame 
    static Viewview 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Main() 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    static voidmain​(java.lang.String[] args) 
    private static voidparseArgs​(java.lang.String[] args) +
    Read and parse launch arguments.
    + launch arguments need to follow this syntax:
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      view

      +
      public static View view
      +
      +
    • +
    • +
      +

      game

      +
      public static Game game
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Main

      +
      public Main()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main​(java.lang.String[] args)
      +
      +
    • +
    • +
      +

      parseArgs

      +
      private static void parseArgs​(java.lang.String[] args) + throws java.lang.NoSuchMethodException, +java.lang.IllegalAccessException, +java.lang.reflect.InvocationTargetException, +java.lang.InstantiationException
      +

      Read and parse launch arguments.
      + launch arguments need to follow this syntax:

      +

      <player1_instance> <player2_instance> [nogui]

      +

      <arg> -> mandatory parameter
      + [arg] -> optional parameter
      + player_instance values are: "Human" or "Random"
      + nogui to launch the game in terminal or nothing to launch in graphical interface

      +
      +
      Parameters:
      +
      args - launch arguments
      +
      Throws:
      +
      java.lang.NoSuchMethodException - reflect exception
      +
      java.lang.IllegalAccessException - reflect exception
      +
      java.lang.reflect.InvocationTargetException - reflect exception
      +
      java.lang.InstantiationException - reflect exception
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/control/TerminalKeyboardListener.html b/livraison/doc/battleship/control/TerminalKeyboardListener.html new file mode 100644 index 0000000..07ee04e --- /dev/null +++ b/livraison/doc/battleship/control/TerminalKeyboardListener.html @@ -0,0 +1,257 @@ + + + + + +TerminalKeyboardListener + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class TerminalKeyboardListener

+
+
java.lang.Object +
battleship.control.TerminalKeyboardListener
+
+
+
+
public class TerminalKeyboardListener
+extends java.lang.Object
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private java.util.Scannerscanner 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    TerminalKeyboardListener​(java.util.Scanner scanner) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    java.lang.StringkeyboardInput() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      scanner

      +
      private final java.util.Scanner scanner
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      TerminalKeyboardListener

      +
      public TerminalKeyboardListener​(java.util.Scanner scanner)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      keyboardInput

      +
      public java.lang.String keyboardInput()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/control/WindowKeyboardListener.html b/livraison/doc/battleship/control/WindowKeyboardListener.html new file mode 100644 index 0000000..47f632c --- /dev/null +++ b/livraison/doc/battleship/control/WindowKeyboardListener.html @@ -0,0 +1,318 @@ + + + + + +WindowKeyboardListener + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class WindowKeyboardListener

+
+
java.lang.Object +
battleship.control.WindowKeyboardListener
+
+
+
+
All Implemented Interfaces:
+
java.awt.event.KeyListener, java.util.EventListener
+
+
+
public class WindowKeyboardListener
+extends java.lang.Object
+implements java.awt.event.KeyListener
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    charkeyTyped 
    intkeyTypedArrow 
    booleanrequestInput 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    WindowKeyboardListener() 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidkeyPressed​(java.awt.event.KeyEvent e) 
    voidkeyReleased​(java.awt.event.KeyEvent e) 
    voidkeyTyped​(java.awt.event.KeyEvent e) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      requestInput

      +
      public boolean requestInput
      +
      +
    • +
    • +
      +

      keyTyped

      +
      public char keyTyped
      +
      +
    • +
    • +
      +

      keyTypedArrow

      +
      public int keyTypedArrow
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      WindowKeyboardListener

      +
      public WindowKeyboardListener()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      keyTyped

      +
      public void keyTyped​(java.awt.event.KeyEvent e)
      +
      +
      Specified by:
      +
      keyTyped in interface java.awt.event.KeyListener
      +
      +
      +
    • +
    • +
      +

      keyPressed

      +
      public void keyPressed​(java.awt.event.KeyEvent e)
      +
      +
      Specified by:
      +
      keyPressed in interface java.awt.event.KeyListener
      +
      +
      +
    • +
    • +
      +

      keyReleased

      +
      public void keyReleased​(java.awt.event.KeyEvent e)
      +
      +
      Specified by:
      +
      keyReleased in interface java.awt.event.KeyListener
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/control/WindowMouseListener.html b/livraison/doc/battleship/control/WindowMouseListener.html new file mode 100644 index 0000000..cb55549 --- /dev/null +++ b/livraison/doc/battleship/control/WindowMouseListener.html @@ -0,0 +1,359 @@ + + + + + +WindowMouseListener + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class WindowMouseListener

+
+
java.lang.Object +
battleship.control.WindowMouseListener
+
+
+
+
All Implemented Interfaces:
+
java.awt.event.MouseListener, java.util.EventListener
+
+
+
public class WindowMouseListener
+extends java.lang.Object
+implements java.awt.event.MouseListener
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    Pair<java.lang.Integer,​java.lang.Integer>lastInput 
    intplayerIdLastInput 
    booleanrequestInput 
    private Windowwindow 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    WindowMouseListener​(Window view) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidmouseClicked​(java.awt.event.MouseEvent e) 
    voidmouseEntered​(java.awt.event.MouseEvent ignored) 
    voidmouseExited​(java.awt.event.MouseEvent ignored) 
    voidmousePressed​(java.awt.event.MouseEvent e) 
    voidmouseReleased​(java.awt.event.MouseEvent e) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      window

      +
      private final Window window
      +
      +
    • +
    • +
      +

      requestInput

      +
      public boolean requestInput
      +
      +
    • +
    • +
      +

      lastInput

      +
      public Pair<java.lang.Integer,​java.lang.Integer> lastInput
      +
      +
    • +
    • +
      +

      playerIdLastInput

      +
      public int playerIdLastInput
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      WindowMouseListener

      +
      public WindowMouseListener​(Window view)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      mouseClicked

      +
      public void mouseClicked​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mouseClicked in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mousePressed

      +
      public void mousePressed​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mousePressed in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mouseReleased

      +
      public void mouseReleased​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mouseReleased in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mouseEntered

      +
      public void mouseEntered​(java.awt.event.MouseEvent ignored)
      +
      +
      Specified by:
      +
      mouseEntered in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mouseExited

      +
      public void mouseExited​(java.awt.event.MouseEvent ignored)
      +
      +
      Specified by:
      +
      mouseExited in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/control/package-summary.html b/livraison/doc/battleship/control/package-summary.html new file mode 100644 index 0000000..4fb4b03 --- /dev/null +++ b/livraison/doc/battleship/control/package-summary.html @@ -0,0 +1,114 @@ + + + + + +battleship.control + + + + + + + + + + + + + + +
+ +
+
+
+

Package battleship.control

+
+
+
Contains keyboard and mouse listeners
+
+
+ +
+
+ +
+
+ + diff --git a/livraison/doc/battleship/control/package-tree.html b/livraison/doc/battleship/control/package-tree.html new file mode 100644 index 0000000..eda03f7 --- /dev/null +++ b/livraison/doc/battleship/control/package-tree.html @@ -0,0 +1,96 @@ + + + + + +battleship.control Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package battleship.control

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/livraison/doc/battleship/model/Direction.html b/livraison/doc/battleship/model/Direction.html new file mode 100644 index 0000000..768490b --- /dev/null +++ b/livraison/doc/battleship/model/Direction.html @@ -0,0 +1,448 @@ + + + + + +Direction + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Direction

+
+
java.lang.Object +
java.lang.Enum<Direction> +
battleship.model.Direction
+
+
+
+
+
All Implemented Interfaces:
+
java.io.Serializable, java.lang.Comparable<Direction>, java.lang.constant.Constable
+
+
+
public enum Direction
+extends java.lang.Enum<Direction>
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    +java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
    +
    +
  • + +
  • +
    +

    Enum Constant Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enum Constants
    Enum ConstantDescription
    DEFAULT 
    DOWN 
    LEFT 
    RIGHT 
    UP 
    +
    +
    +
  • + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private intarrow 
    private Pair<java.lang.Integer,​java.lang.Integer>direction 
    private java.lang.Stringkeyword 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + +
    Constructors
    ModifierConstructorDescription
    private Direction​(Pair<java.lang.Integer,​java.lang.Integer> ukPair, +java.lang.String keyword, +int arrow) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    intgetArrow() 
    Pair<java.lang.Integer,​java.lang.Integer>getDirection() 
    java.lang.StringgetKeyword() 
    static DirectionvalueOf​(java.lang.String name) +
    Returns the enum constant of this type with the specified name.
    +
    static Direction[]values() +
    Returns an array containing the constants of this enum type, in +the order they are declared.
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Enum

    +clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
    +
    +

    Methods inherited from class java.lang.Object

    +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • + +
    • +
    • +
      +

      LEFT

      +
      public static final Direction LEFT
      +
      +
    • +
    • +
      +

      UP

      +
      public static final Direction UP
      +
      +
    • +
    • +
      +

      DOWN

      +
      public static final Direction DOWN
      +
      +
    • +
    • +
      +

      DEFAULT

      +
      public static final Direction DEFAULT
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      direction

      +
      private final Pair<java.lang.Integer,​java.lang.Integer> direction
      +
      +
    • +
    • +
      +

      keyword

      +
      private final java.lang.String keyword
      +
      +
    • +
    • +
      +

      arrow

      +
      private final int arrow
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Direction

      +
      private Direction​(Pair<java.lang.Integer,​java.lang.Integer> ukPair, +java.lang.String keyword, +int arrow)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Direction[] values()
      +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum type, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Direction valueOf​(java.lang.String name)
      +
      Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      +
      java.lang.NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      getDirection

      +
      public Pair<java.lang.Integer,​java.lang.Integer> getDirection()
      +
      +
    • +
    • +
      +

      getKeyword

      +
      public java.lang.String getKeyword()
      +
      +
    • +
    • +
      +

      getArrow

      +
      public int getArrow()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/Game.html b/livraison/doc/battleship/model/Game.html new file mode 100644 index 0000000..91258c2 --- /dev/null +++ b/livraison/doc/battleship/model/Game.html @@ -0,0 +1,367 @@ + + + + + +Game + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Game

+
+
java.lang.Object +
battleship.model.Game
+
+
+
+
public class Game
+extends java.lang.Object
+
Main game class
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    PlayercurrentPlayer 
    Player[]players 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Game​(Player[] players) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidchangeCurrentPlayer() 
    voidcheckDrownedShips() +
    Update ship to know if they're drowned
    +
    PlayergetCurrentPlayer() 
    PlayergetOtherPlayer() 
    PlayergetOtherPlayer​(Player player) 
    PlayergetWinner() 
    voidmove​(Pair<java.lang.Integer,​java.lang.Integer> move) +
    Play the selected move from current player in grid
    +
    voidPlay​(View view) +
    game loop
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      players

      +
      public final Player[] players
      +
      +
    • +
    • +
      +

      currentPlayer

      +
      public Player currentPlayer
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Game

      +
      public Game​(Player[] players)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getCurrentPlayer

      +
      public Player getCurrentPlayer()
      +
      +
    • +
    • +
      +

      getOtherPlayer

      +
      public Player getOtherPlayer()
      +
      +
    • +
    • +
      +

      getOtherPlayer

      +
      public Player getOtherPlayer​(Player player)
      +
      +
    • +
    • +
      +

      changeCurrentPlayer

      +
      public void changeCurrentPlayer()
      +
      +
    • +
    • +
      +

      checkDrownedShips

      +
      public void checkDrownedShips()
      +
      Update ship to know if they're drowned
      +
      +
    • +
    • +
      +

      getWinner

      +
      public Player getWinner()
      +
      +
      Returns:
      +
      player 1 if player 2' ships are drowned, or player 2 if player1' ships are drowned, null otherwise
      +
      +
      +
    • +
    • +
      +

      move

      +
      public void move​(Pair<java.lang.Integer,​java.lang.Integer> move)
      +
      Play the selected move from current player in grid
      +
      +
      Parameters:
      +
      move - selected player move
      +
      +
      +
    • +
    • +
      +

      Play

      +
      public void Play​(View view)
      +
      game loop
      +
      +
      Parameters:
      +
      view - can be Terminal or Window
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/Ship.html b/livraison/doc/battleship/model/Ship.html new file mode 100644 index 0000000..f9e5344 --- /dev/null +++ b/livraison/doc/battleship/model/Ship.html @@ -0,0 +1,445 @@ + + + + + +Ship + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Ship

+
+
java.lang.Object +
battleship.model.Ship
+
+
+
+
public class Ship
+extends java.lang.Object
+
player's ship class
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private Pair<java.lang.Integer,​java.lang.Integer>coords +
    base coordinates of the ship
    +
    private Directiondirection 
    (package private) Pair<java.lang.Integer,​java.lang.Integer>[]fullCoords +
    ship full coordinates calculate thank to base coordinates, direction and size
    +
    private booleanisDrown +
    if true the ship is destroyed
    +
    private intsize +
    ship size
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Ship​(Pair<java.lang.Integer,​java.lang.Integer> coords, +int size, +Direction direction) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>getCoords() 
    DirectiongetDirection() 
    Pair<java.lang.Integer,​java.lang.Integer>[]getFullCoords() 
    intgetSize() 
    booleanisDrown() 
    voidrecalculateFullCoords() +
    recalculate all coords based on this base coords, direction and size
    +
    voidsetCoords​(Pair<java.lang.Integer,​java.lang.Integer> c) 
    voidsetDirection​(Direction d) 
    voidsetDrown() +
    set isDrown to true
    +
    java.lang.StringtoString() 
    voidupdateIsDrown​(Player player) +
    update value isDrown to true if player hit all of ship boxes
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      coords

      +
      private Pair<java.lang.Integer,​java.lang.Integer> coords
      +
      base coordinates of the ship
      +
      +
    • +
    • +
      +

      size

      +
      private final int size
      +
      ship size
      +
      +
    • +
    • +
      +

      fullCoords

      +
      final Pair<java.lang.Integer,​java.lang.Integer>[] fullCoords
      +
      ship full coordinates calculate thank to base coordinates, direction and size
      +
      +
    • +
    • +
      +

      direction

      +
      private Direction direction
      +
      +
    • +
    • +
      +

      isDrown

      +
      private boolean isDrown
      +
      if true the ship is destroyed
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Ship

      +
      public Ship​(Pair<java.lang.Integer,​java.lang.Integer> coords, +int size, +Direction direction)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setDirection

      +
      public void setDirection​(Direction d)
      +
      +
    • +
    • +
      +

      setCoords

      +
      public void setCoords​(Pair<java.lang.Integer,​java.lang.Integer> c)
      +
      +
    • +
    • +
      +

      setDrown

      +
      public void setDrown()
      +
      set isDrown to true
      +
      +
    • +
    • +
      +

      isDrown

      +
      public boolean isDrown()
      +
      +
    • +
    • +
      +

      getSize

      +
      public int getSize()
      +
      +
    • +
    • +
      +

      getDirection

      +
      public Direction getDirection()
      +
      +
    • +
    • +
      +

      getCoords

      +
      public Pair<java.lang.Integer,​java.lang.Integer> getCoords()
      +
      +
    • +
    • +
      +

      recalculateFullCoords

      +
      public void recalculateFullCoords()
      +
      recalculate all coords based on this base coords, direction and size
      +
      +
    • +
    • +
      +

      getFullCoords

      +
      public Pair<java.lang.Integer,​java.lang.Integer>[] getFullCoords()
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      +
      Overrides:
      +
      toString in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      updateIsDrown

      +
      public void updateIsDrown​(Player player)
      +
      update value isDrown to true if player hit all of ship boxes
      +
      +
      Parameters:
      +
      player - the opponent of this ship owner
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/package-summary.html b/livraison/doc/battleship/model/package-summary.html new file mode 100644 index 0000000..b73a018 --- /dev/null +++ b/livraison/doc/battleship/model/package-summary.html @@ -0,0 +1,133 @@ + + + + + +battleship.model + + + + + + + + + + + + + + +
+ +
+
+
+

Package battleship.model

+
+
+
Contains all main Game classes
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + +
    Class Summary
    ClassDescription
    Game +
    Main game class
    +
    Ship +
    player's ship class
    +
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + +
    Enum Summary
    EnumDescription
    Direction 
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/model/package-tree.html b/livraison/doc/battleship/model/package-tree.html new file mode 100644 index 0000000..b80008c --- /dev/null +++ b/livraison/doc/battleship/model/package-tree.html @@ -0,0 +1,109 @@ + + + + + +battleship.model Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package battleship.model

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • battleship.model.Game
    • +
    • battleship.model.Ship
    • +
    +
  • +
+
+
+

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) + +
    • +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/AbstractPlayer.html b/livraison/doc/battleship/model/player/AbstractPlayer.html new file mode 100644 index 0000000..d823fc5 --- /dev/null +++ b/livraison/doc/battleship/model/player/AbstractPlayer.html @@ -0,0 +1,465 @@ + + + + + +AbstractPlayer + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AbstractPlayer

+
+
java.lang.Object +
battleship.model.player.AbstractPlayer
+
+
+
+
All Implemented Interfaces:
+
Player
+
+
+
Direct Known Subclasses:
+
Computer, Human
+
+
+
public abstract class AbstractPlayer
+extends java.lang.Object
+implements Player
+
Abstract player class see Player to know more about this code organisation
+
+
See Also:
+
Player, +Human, +Computer, +Random
+
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    intid 
    (package private) java.util.ArrayList<Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean>>moves +
    reference every shot on the opponent board, left and middle side of the Triplet reference the coordinates and the + right side if this move hit or not an opponent ship
    +
    (package private) java.util.ArrayList<Ship>ships 
    +
    +
    +

    Fields inherited from interface battleship.model.player.Player

    +shipSize
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    AbstractPlayer() 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidaddMove​(Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean> move) +
    add move to the moves list
    +
    booleanareValid​(int x, +int y) +
    check if coordinates from View.chooseMove(Player)are in valids position
    +
    intgetId() 
    java.util.ArrayList<Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean>>getMoves() 
    java.util.ArrayList<Ship>getShips() 
    voidsetId​(int i) 
    booleansetShips​(Ship ship) +
    check if ship position and direction are valides and does not overlap on other vessels + add the ship to player ships list and return true if valid + false otherwise
    +
    java.lang.StringtoString() 
    java.util.ArrayList<Pair<java.lang.Integer,​java.lang.Integer>>validMoves() +
    give a list of the player possible moves, used in Player.chooseMove()
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface battleship.model.player.Player

    +chooseMove, placeShips
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      ships

      +
      final java.util.ArrayList<Ship> ships
      +
      +
    • +
    • +
      +

      moves

      +
      final java.util.ArrayList<Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean>> moves
      +
      reference every shot on the opponent board, left and middle side of the Triplet reference the coordinates and the + right side if this move hit or not an opponent ship
      +
      +
    • +
    • +
      +

      id

      +
      public int id
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AbstractPlayer

      +
      public AbstractPlayer()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setShips

      +
      public boolean setShips​(Ship ship)
      +
      Description copied from interface: Player
      +
      check if ship position and direction are valides and does not overlap on other vessels + add the ship to player ships list and return true if valid + false otherwise
      +
      +
      Specified by:
      +
      setShips in interface Player
      +
      Parameters:
      +
      ship - the ship instance we check
      +
      Returns:
      +
      true if ship data are valids, false otherwise
      +
      +
      +
    • +
    • +
      +

      addMove

      +
      public void addMove​(Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean> move)
      +
      add move to the moves list
      +
      +
      Specified by:
      +
      addMove in interface Player
      +
      Parameters:
      +
      move - the move chosen by the player
      +
      +
      +
    • +
    • +
      +

      validMoves

      +
      public java.util.ArrayList<Pair<java.lang.Integer,​java.lang.Integer>> validMoves()
      +
      Description copied from interface: Player
      +
      give a list of the player possible moves, used in Player.chooseMove()
      +
      +
      Specified by:
      +
      validMoves in interface Player
      +
      Returns:
      +
      a list of playable move
      +
      +
      +
    • +
    • +
      +

      areValid

      +
      public boolean areValid​(int x, +int y)
      +
      Description copied from interface: Player
      +
      check if coordinates from View.chooseMove(Player)are in valids position
      +
      +
      Specified by:
      +
      areValid in interface Player
      +
      Parameters:
      +
      x - the x-axis of the coordinates
      +
      y - the y-axis of the coordinates
      +
      Returns:
      +
      true if valid, false otherwise
      +
      +
      +
    • +
    • +
      +

      setId

      +
      public void setId​(int i)
      +
      +
      Specified by:
      +
      setId in interface Player
      +
      +
      +
    • +
    • +
      +

      getId

      +
      public int getId()
      +
      +
      Specified by:
      +
      getId in interface Player
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      +
      Overrides:
      +
      toString in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      getShips

      +
      public java.util.ArrayList<Ship> getShips()
      +
      +
      Specified by:
      +
      getShips in interface Player
      +
      +
      +
    • +
    • +
      +

      getMoves

      +
      public java.util.ArrayList<Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean>> getMoves()
      +
      +
      Specified by:
      +
      getMoves in interface Player
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/Computer.html b/livraison/doc/battleship/model/player/Computer.html new file mode 100644 index 0000000..19eddbb --- /dev/null +++ b/livraison/doc/battleship/model/player/Computer.html @@ -0,0 +1,249 @@ + + + + + +Computer + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Computer

+
+
java.lang.Object +
battleship.model.player.AbstractPlayer +
battleship.model.player.Computer
+
+
+
+
+
All Implemented Interfaces:
+
Player
+
+
+
Direct Known Subclasses:
+
Random
+
+
+
public abstract class Computer
+extends AbstractPlayer
+

Computer super class, all player object which use an algorithm to calculate coordinates to use should extend from + this object.

+

Random is the only algorithm include here but another algorithm can be easily implemented

+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Computer

      +
      public Computer()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      placeShipRandomly

      +
      public void placeShipRandomly()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/Human.html b/livraison/doc/battleship/model/player/Human.html new file mode 100644 index 0000000..50af7f3 --- /dev/null +++ b/livraison/doc/battleship/model/player/Human.html @@ -0,0 +1,266 @@ + + + + + +Human + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Human

+
+
java.lang.Object +
battleship.model.player.AbstractPlayer +
battleship.model.player.Human
+
+
+
+
+
All Implemented Interfaces:
+
Player
+
+
+
public class Human
+extends AbstractPlayer
+
This object do nothing itself, it just an interface to know the type of player (Human or not), + each view interact with the player with its methods
+
+
+
    + +
  • +
    +

    Field Summary

    +
    +

    Fields inherited from class battleship.model.player.AbstractPlayer

    +id, moves, ships
    +
    +

    Fields inherited from interface battleship.model.player.Player

    +shipSize
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Human() 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove() +
    Used by computer only
    +
    voidplaceShips() +
    Used by Computer instances to place ships
    +
    +
    +
    +
    +

    Methods inherited from class battleship.model.player.AbstractPlayer

    +addMove, areValid, getId, getMoves, getShips, setId, setShips, toString, validMoves
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Human

      +
      public Human()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      chooseMove

      +
      public Pair<java.lang.Integer,​java.lang.Integer> chooseMove()
      +
      Description copied from interface: Player
      +
      Used by computer only
      +
      +
      Returns:
      +
      coords in its opponent grid to play a move
      +
      See Also:
      +
      Random.chooseMove()
      +
      +
      +
    • +
    • +
      +

      placeShips

      +
      public void placeShips()
      +
      Description copied from interface: Player
      +
      Used by Computer instances to place ships
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/Player.html b/livraison/doc/battleship/model/player/Player.html new file mode 100644 index 0000000..79006ac --- /dev/null +++ b/livraison/doc/battleship/model/player/Player.html @@ -0,0 +1,379 @@ + + + + + +Player + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface Player

+
+
+
+
All Known Implementing Classes:
+
AbstractPlayer, Computer, Human, Random
+
+
+
public interface Player
+

Player interface, used as an API.

+

This model (interface -> abstract class(es) -> concrete classes) prevent hard code.

+

This is the only object which interact with other object
+ Allows an outside person from the project to easily change the code or to add a view easily without modifying + existing classes

+
+
See Also:
+
AbstractPlayer, +Computer, +Human, +Random
+
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    static int[]shipSize 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidaddMove​(Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean> move) +
    Adds coordinates of the move in the AbstractPlayer.moves list
    +
    booleanareValid​(int x, +int y) +
    check if coordinates from View.chooseMove(Player)are in valids position
    +
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove() +
    Used by computer only
    +
    intgetId() 
    java.util.ArrayList<Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean>>getMoves() 
    java.util.ArrayList<Ship>getShips() 
    voidplaceShips() +
    Used by Computer instances to place ships
    +
    voidsetId​(int i) 
    booleansetShips​(Ship ship) +
    check if ship position and direction are valides and does not overlap on other vessels + add the ship to player AbstractPlayer.ships list and return true if valid + false otherwise
    +
    java.util.ArrayList<Pair<java.lang.Integer,​java.lang.Integer>>validMoves() +
    give a list of the player possible moves, used in chooseMove()
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      shipSize

      +
      static final int[] shipSize
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      chooseMove

      +
      Pair<java.lang.Integer,​java.lang.Integer> chooseMove()
      +
      Used by computer only
      +
      +
      Returns:
      +
      coords in its opponent grid to play a move
      +
      See Also:
      +
      Random.chooseMove()
      +
      +
      +
    • +
    • +
      +

      setShips

      +
      boolean setShips​(Ship ship)
      +
      check if ship position and direction are valides and does not overlap on other vessels + add the ship to player AbstractPlayer.ships list and return true if valid + false otherwise
      +
      +
      Parameters:
      +
      ship - the ship instance we check
      +
      Returns:
      +
      true if ship data are valids, false otherwise
      +
      +
      +
    • +
    • +
      +

      getId

      +
      int getId()
      +
      +
    • +
    • +
      +

      addMove

      +
      void addMove​(Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean> move)
      +
      Adds coordinates of the move in the AbstractPlayer.moves list
      +
      +
      Parameters:
      +
      move - the move chosen by the player
      +
      +
      +
    • +
    • +
      +

      setId

      +
      void setId​(int i)
      +
      +
    • +
    • +
      +

      validMoves

      +
      java.util.ArrayList<Pair<java.lang.Integer,​java.lang.Integer>> validMoves()
      +
      give a list of the player possible moves, used in chooseMove()
      +
      +
      Returns:
      +
      a list of playable move
      +
      +
      +
    • +
    • +
      +

      placeShips

      +
      void placeShips()
      +
      Used by Computer instances to place ships
      +
      +
    • +
    • +
      +

      areValid

      +
      boolean areValid​(int x, +int y)
      +
      check if coordinates from View.chooseMove(Player)are in valids position
      +
      +
      Parameters:
      +
      x - the x-axis of the coordinates
      +
      y - the y-axis of the coordinates
      +
      Returns:
      +
      true if valid, false otherwise
      +
      +
      +
    • +
    • +
      +

      getShips

      +
      java.util.ArrayList<Ship> getShips()
      +
      +
    • +
    • +
      +

      getMoves

      +
      java.util.ArrayList<Triplet<java.lang.Integer,​java.lang.Integer,​java.lang.Boolean>> getMoves()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/Random.html b/livraison/doc/battleship/model/player/Random.html new file mode 100644 index 0000000..4064af3 --- /dev/null +++ b/livraison/doc/battleship/model/player/Random.html @@ -0,0 +1,270 @@ + + + + + +Random + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Random

+
+
java.lang.Object + +
+
+
+
All Implemented Interfaces:
+
Player
+
+
+
public class Random
+extends Computer
+
place its ship and choose moves randomly
+
+
+
    + +
  • +
    +

    Field Summary

    +
    +

    Fields inherited from class battleship.model.player.AbstractPlayer

    +id, moves, ships
    +
    +

    Fields inherited from interface battleship.model.player.Player

    +shipSize
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Random() 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove() +
    Used by computer only
    +
    voidplaceShips() +
    Used by Computer instances to place ships
    +
    +
    +
    +
    +

    Methods inherited from class battleship.model.player.Computer

    +placeShipRandomly
    +
    +

    Methods inherited from class battleship.model.player.AbstractPlayer

    +addMove, areValid, getId, getMoves, getShips, setId, setShips, toString, validMoves
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Random

      +
      public Random()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      chooseMove

      +
      public Pair<java.lang.Integer,​java.lang.Integer> chooseMove()
      +
      Description copied from interface: Player
      +
      Used by computer only
      +
      +
      Returns:
      +
      coords in its opponent grid to play a move
      +
      See Also:
      +
      chooseMove()
      +
      +
      +
    • +
    • +
      +

      placeShips

      +
      public void placeShips()
      +
      Description copied from interface: Player
      +
      Used by Computer instances to place ships
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/package-summary.html b/livraison/doc/battleship/model/player/package-summary.html new file mode 100644 index 0000000..53206c5 --- /dev/null +++ b/livraison/doc/battleship/model/player/package-summary.html @@ -0,0 +1,149 @@ + + + + + +battleship.model.player + + + + + + + + + + + + + + +
+ +
+
+
+

Package battleship.model.player

+
+
+
Contains all players classes instances and theirs super classes and interface
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary
    InterfaceDescription
    Player +
    Player interface, used as an API.
    +
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary
    ClassDescription
    AbstractPlayer +
    Abstract player class see Player to know more about this code organisation
    +
    Computer +
    Computer super class, all player object which use an algorithm to calculate coordinates to use should extend from + this object.
    +
    Human +
    This object do nothing itself, it just an interface to know the type of player (Human or not), + each view interact with the player with its methods
    +
    Random +
    place its ship and choose moves randomly
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/model/player/package-tree.html b/livraison/doc/battleship/model/player/package-tree.html new file mode 100644 index 0000000..553e51e --- /dev/null +++ b/livraison/doc/battleship/model/player/package-tree.html @@ -0,0 +1,109 @@ + + + + + +battleship.model.player Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package battleship.model.player

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • battleship.model.player.AbstractPlayer (implements battleship.model.player.Player) +
        +
      • battleship.model.player.Computer +
          +
        • battleship.model.player.Random
        • +
        +
      • +
      • battleship.model.player.Human
      • +
      +
    • +
    +
  • +
+
+
+

Interface Hierarchy

+
    +
  • battleship.model.player.Player
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/package-summary.html b/livraison/doc/battleship/package-summary.html new file mode 100644 index 0000000..b569943 --- /dev/null +++ b/livraison/doc/battleship/package-summary.html @@ -0,0 +1,109 @@ + + + + + +battleship + + + + + + + + + + + + + + +
+ +
+
+
+

Package battleship

+
+
+
Contains Main Class
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Class Summary
    ClassDescription
    Main +
    Main class + Given arguments are importants, please give attention to Main.parseArgs(String[]) about this
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/package-tree.html b/livraison/doc/battleship/package-tree.html new file mode 100644 index 0000000..97dd623 --- /dev/null +++ b/livraison/doc/battleship/package-tree.html @@ -0,0 +1,94 @@ + + + + + +battleship Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package battleship

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/utils/Pair.html b/livraison/doc/battleship/utils/Pair.html new file mode 100644 index 0000000..abc0aca --- /dev/null +++ b/livraison/doc/battleship/utils/Pair.html @@ -0,0 +1,332 @@ + + + + + +Pair + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Pair<U,​K>

+
+
java.lang.Object +
battleship.utils.Pair<U,​K>
+
+
+
+
Type Parameters:
+
U - left
+
K - right
+
+
+
public class Pair<U,​K>
+extends java.lang.Object
+
tuple containing 2 generic type elements
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private Uleft 
    private Kright 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Pair​(U left, +K right) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    booleanequals​(java.lang.Object obj) 
    UgetLeft() 
    KgetRight() 
    inthashCode() 
    java.lang.StringtoString() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      left

      +
      private final U left
      +
      +
    • +
    • + +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Pair

      +
      public Pair​(U left, +K right)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getLeft

      +
      public U getLeft()
      +
      +
    • +
    • +
      +

      getRight

      +
      public K getRight()
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals​(java.lang.Object obj)
      +
      +
      Overrides:
      +
      equals in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public int hashCode()
      +
      +
      Overrides:
      +
      hashCode in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      +
      Overrides:
      +
      toString in class java.lang.Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/utils/Triplet.html b/livraison/doc/battleship/utils/Triplet.html new file mode 100644 index 0000000..aa3dea2 --- /dev/null +++ b/livraison/doc/battleship/utils/Triplet.html @@ -0,0 +1,369 @@ + + + + + +Triplet + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Triplet<U,​K,​V>

+
+
java.lang.Object +
battleship.utils.Triplet<U,​K,​V>
+
+
+
+
Type Parameters:
+
U - left
+
K - middle
+
V - right
+
+
+
public class Triplet<U,​K,​V>
+extends java.lang.Object
+
tuple containing 3 generic type elements
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private Uleft 
    private Kmiddle 
    private Vright 
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Triplet​(Pair<U,​K> pair, +V right) 
    Triplet​(U left, +K middle, +V right) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    booleanequals​(java.lang.Object obj) 
    UgetLeft() 
    KgetMiddle() 
    VgetRight() 
    inthashCode() 
    java.lang.StringtoString() 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      left

      +
      private final U left
      +
      +
    • +
    • +
      +

      middle

      +
      private final K middle
      +
      +
    • +
    • + +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Triplet

      +
      public Triplet​(U left, +K middle, +V right)
      +
      +
    • +
    • +
      +

      Triplet

      +
      public Triplet​(Pair<U,​K> pair, +V right)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getLeft

      +
      public U getLeft()
      +
      +
    • +
    • +
      +

      getMiddle

      +
      public K getMiddle()
      +
      +
    • +
    • +
      +

      getRight

      +
      public V getRight()
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals​(java.lang.Object obj)
      +
      +
      Overrides:
      +
      equals in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public int hashCode()
      +
      +
      Overrides:
      +
      hashCode in class java.lang.Object
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      +
      Overrides:
      +
      toString in class java.lang.Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/utils/package-summary.html b/livraison/doc/battleship/utils/package-summary.html new file mode 100644 index 0000000..ef2044d --- /dev/null +++ b/livraison/doc/battleship/utils/package-summary.html @@ -0,0 +1,114 @@ + + + + + +battleship.utils + + + + + + + + + + + + + + +
+ +
+
+
+

Package battleship.utils

+
+
+
Utility classes
+
+
+
    +
  • +
    + + + + + + + + + + + + + + + + + + +
    Class Summary
    ClassDescription
    Pair<U,​K> +
    tuple containing 2 generic type elements
    +
    Triplet<U,​K,​V> +
    tuple containing 3 generic type elements
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/utils/package-tree.html b/livraison/doc/battleship/utils/package-tree.html new file mode 100644 index 0000000..4c6a66e --- /dev/null +++ b/livraison/doc/battleship/utils/package-tree.html @@ -0,0 +1,95 @@ + + + + + +battleship.utils Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package battleship.utils

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • battleship.utils.Pair<U,​K>
    • +
    • battleship.utils.Triplet<U,​K,​V>
    • +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/view/AbstractView.html b/livraison/doc/battleship/view/AbstractView.html new file mode 100644 index 0000000..714a07d --- /dev/null +++ b/livraison/doc/battleship/view/AbstractView.html @@ -0,0 +1,524 @@ + + + + + +AbstractView + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AbstractView

+
+
java.lang.Object +
battleship.view.AbstractView
+
+
+
+
All Implemented Interfaces:
+
View
+
+
+
Direct Known Subclasses:
+
Terminal, Window
+
+
+
public abstract class AbstractView
+extends java.lang.Object
+implements View
+
Abstract view class
+
+
See Also:
+
View, +Window, +Terminal
+
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    protected Gamegame 
    +
    +
    +

    Fields inherited from interface battleship.view.View

    +shipsSize
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    AbstractView​(Game game) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove​(Player player) +
    used by Computer player to play a move in the grid depending of its algorithm
    +
    protected DirectiongetDirectionFromChar() +
    ask player for keyboard input and parse it into one of Direction value
    +
    protected abstract java.lang.StringgetKeyInput() +
    ask player for keyboard input and return result
    +
    private intisPositionDrowned​(Player other, +Ship ship, +Pair<java.lang.Integer,​java.lang.Integer> pair) 
    private intisPositionDrowned​(Player other, +Pair<java.lang.Integer,​java.lang.Integer> pair) 
    private booleanisShipPosition​(Ship ship, +Pair<java.lang.Integer,​java.lang.Integer> boardsCoords) 
    protected abstract java.lang.StringkeyboardInput() +
    ask Game.currentPlayer for keyboard input
    +
    protected abstract Pair<java.lang.Integer,​java.lang.Integer>mouseInput​(Player player) +
    ask player for mouse input
    +
    voidsetShips​(Player player) +
    used if player instance of Computer
    +
    protected abstract voidsetUpperText​(java.lang.String s) +
    Display a text above the grid on Window, simply print text on Terminal
    +
    java.lang.StringtoString() +
    Used during debugging, used in terminal to display grids too
    +
    java.lang.StringtoString​(boolean debug) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface battleship.view.View

    +displayBoard, displayWinner
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      game

      +
      protected final Game game
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AbstractView

      +
      public AbstractView​(Game game)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public java.lang.String toString()
      +
      Used during debugging, used in terminal to display grids too
      +
      +
      Overrides:
      +
      toString in class java.lang.Object
      +
      Returns:
      +
      all player grids
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public java.lang.String toString​(boolean debug)
      +
      +
    • +
    • +
      +

      isShipPosition

      +
      private boolean isShipPosition​(Ship ship, +Pair<java.lang.Integer,​java.lang.Integer> boardsCoords)
      +
      +
      Returns:
      +
      true if Ship.getFullCoords() contains boardsCoords, false otherwise
      +
      +
      +
    • +
    • +
      +

      getDirectionFromChar

      +
      protected Direction getDirectionFromChar() + throws java.lang.InterruptedException
      +
      ask player for keyboard input and parse it into one of Direction value
      +
      +
      Returns:
      +
      Direction depending of player input
      +
      Throws:
      +
      java.lang.InterruptedException - caused by Window.getKeyInput()
      +
      See Also:
      +
      getDirectionFromChar()
      +
      +
      +
    • +
    • +
      +

      getKeyInput

      +
      protected abstract java.lang.String getKeyInput() + throws java.lang.InterruptedException
      +
      ask player for keyboard input and return result
      +
      +
      Returns:
      +
      String given by player
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.getKeyInput()
      +
      +
      +
    • +
    • +
      +

      setUpperText

      +
      protected abstract void setUpperText​(java.lang.String s)
      +
      Display a text above the grid on Window, simply print text on Terminal
      +
      +
      Parameters:
      +
      s - text to display
      +
      See Also:
      +
      Window.setUpperText(String), +Terminal.setUpperText(String)
      +
      +
      +
    • +
    • +
      +

      setShips

      +
      public void setShips​(Player player) + throws java.lang.InterruptedException
      +
      used if player instance of Computer
      +
      +
      Specified by:
      +
      setShips in interface View
      +
      Parameters:
      +
      player - player we ask to set position of its ships
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.setShips(Player)
      +
      +
      +
    • +
    • +
      +

      isPositionDrowned

      +
      private int isPositionDrowned​(Player other, +Ship ship, +Pair<java.lang.Integer,​java.lang.Integer> pair)
      +
      +
      Parameters:
      +
      other - other than the current player
      +
      ship - check if this ship at this position has been hit
      +
      pair - coords
      +
      Returns:
      +
      1 if ship fully drowned, 2 if only damaged, 0 if not
      +
      See Also:
      +
      isPositionDrowned(Player, Pair)
      +
      +
      +
    • +
    • +
      +

      isPositionDrowned

      +
      private int isPositionDrowned​(Player other, +Pair<java.lang.Integer,​java.lang.Integer> pair)
      +
      +
      Parameters:
      +
      other - other than the current player
      +
      pair - coords to check
      +
      Returns:
      +
      2 if player already played here, 0 otherwise
      +
      +
      +
    • +
    • +
      +

      chooseMove

      +
      public Pair<java.lang.Integer,​java.lang.Integer> chooseMove​(Player player) + throws java.lang.InterruptedException
      +
      used by Computer player to play a move in the grid depending of its algorithm
      +
      +
      Specified by:
      +
      chooseMove in interface View
      +
      Parameters:
      +
      player - Game.currentPlayer
      +
      Returns:
      +
      a couple (Pair containing the x and y coordinate (left side store Y and right side X)
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.chooseMove(Player)
      +
      +
      +
    • +
    • +
      +

      mouseInput

      +
      protected abstract Pair<java.lang.Integer,​java.lang.Integer> mouseInput​(Player player) + throws java.lang.InterruptedException
      +
      ask player for mouse input
      +
      +
      Parameters:
      +
      player - Game.currentPlayer
      +
      Returns:
      +
      coordinate of player opponent grid
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.mouseInput(Player)
      +
      See Also:
      +
      Window.mouseInput(Player)
      +
      +
      +
    • +
    • +
      +

      keyboardInput

      +
      protected abstract java.lang.String keyboardInput() + throws java.lang.InterruptedException
      +
      ask Game.currentPlayer for keyboard input
      +
      +
      Returns:
      +
      String given by player
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.keyboardInput()
      +
      See Also:
      +
      Window.keyboardInput(), +Terminal.keyboardInput(), +Terminal.keyboardInputInteger()
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/view/Terminal.html b/livraison/doc/battleship/view/Terminal.html new file mode 100644 index 0000000..4f7630c --- /dev/null +++ b/livraison/doc/battleship/view/Terminal.html @@ -0,0 +1,480 @@ + + + + + +Terminal + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Terminal

+
+
java.lang.Object +
battleship.view.AbstractView +
battleship.view.Terminal
+
+
+
+
+
All Implemented Interfaces:
+
View
+
+
+
public class Terminal
+extends AbstractView
+
Terminal view, instanced if argument 2 equals to "nogui"
+
+
See Also:
+
View, +AbstractView
+
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private TerminalKeyboardListenerkeyboardComponent 
    static java.util.Scannerscanner 
    +
    +
    +

    Fields inherited from class battleship.view.AbstractView

    +game
    +
    +

    Fields inherited from interface battleship.view.View

    +shipsSize
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Terminal​(Game game) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove​(Player player) +
    ask player to choose a coords on its opponent grid, call AbstractView.chooseMove(Player) if instance of + player is Computer + if player isn't Human instance
    +
    voiddisplayBoard() +
    print board in terminal
    +
    voiddisplayWinner​(Player winner) +
    print grid, winner player and close scanner, game automatically close after this
    +
    protected java.lang.StringgetKeyInput() +
    ask player for keyboard input and return result
    +
    protected java.lang.StringkeyboardInput() +
    ask Game.currentPlayer for keyboard input
    +
    protected intkeyboardInputInteger() 
    protected Pair<java.lang.Integer,​java.lang.Integer>mouseInput​(Player player) +
    Never call in Terminal
    +
    voidsetShips​(Player player) +
    Ask player to set position of its ships
    +
    protected voidsetUpperText​(java.lang.String s) +
    print string
    +
    +
    +
    +
    +

    Methods inherited from class battleship.view.AbstractView

    +getDirectionFromChar, toString, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      scanner

      +
      public static java.util.Scanner scanner
      +
      +
    • +
    • +
      +

      keyboardComponent

      +
      private final TerminalKeyboardListener keyboardComponent
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Terminal

      +
      public Terminal​(Game game)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/view/View.html b/livraison/doc/battleship/view/View.html new file mode 100644 index 0000000..6a6396a --- /dev/null +++ b/livraison/doc/battleship/view/View.html @@ -0,0 +1,295 @@ + + + + + +View + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface View

+
+
+
+
All Known Implementing Classes:
+
AbstractView, Terminal, Window
+
+
+
public interface View
+

View interface, used as an API

+

This model (interface -> abstract class(es) -> concrete classes) prevent hard code.

+

This is the only object which interact with other object
+ Allows an outside person easily change the code or add a view easily without modifying existing classes

+
+
See Also:
+
AbstractView, +Terminal, +Window
+
+
+
+
    + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    static int[]shipsSize 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove​(Player player) +
    ask the player the choose a position on its opponent grid
    +
    voiddisplayBoard() +
    Display all grids
    +
    voiddisplayWinner​(Player winner) +
    Display the winner of the game and then close the game
    +
    voidsetShips​(Player player) +
    Ask player to set position of its ships
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      shipsSize

      +
      static final int[] shipsSize
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setShips

      +
      void setShips​(Player player) + throws java.lang.InterruptedException
      +
      Ask player to set position of its ships
      +
      +
      Parameters:
      +
      player - player instance we ask
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.setShips(Player)
      +
      +
      +
    • +
    • +
      +

      displayBoard

      +
      void displayBoard()
      +
      Display all grids
      +
      +
    • +
    • +
      +

      chooseMove

      +
      Pair<java.lang.Integer,​java.lang.Integer> chooseMove​(Player player) + throws java.lang.InterruptedException
      +
      ask the player the choose a position on its opponent grid
      +
      +
      Parameters:
      +
      player - Game.currentPlayer
      +
      Returns:
      +
      a element containing the x and y coordinate (left side store Y and right side X)
      +
      Throws:
      +
      java.lang.InterruptedException - see Window.chooseMove(Player)
      +
      +
      +
    • +
    • +
      +

      displayWinner

      +
      void displayWinner​(Player winner)
      +
      Display the winner of the game and then close the game
      +
      +
      Parameters:
      +
      winner - the winner of the game.
      +
      See Also:
      +
      Window.displayWinner(Player), +Terminal.displayWinner(Player)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/view/Window.Draw.html b/livraison/doc/battleship/view/Window.Draw.html new file mode 100644 index 0000000..f4e0a57 --- /dev/null +++ b/livraison/doc/battleship/view/Window.Draw.html @@ -0,0 +1,321 @@ + + + + + +Window.Draw + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Window.Draw

+
+
java.lang.Object +
java.awt.Component +
java.awt.Container +
javax.swing.JComponent +
javax.swing.JPanel +
battleship.view.Window.Draw
+
+
+
+
+
+
+
+
All Implemented Interfaces:
+
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
+
+
+
Enclosing class:
+
Window
+
+
+
class Window.Draw
+extends javax.swing.JPanel
+
Panel where we paint the board
+
+
See Also:
+
JPanel
+
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class javax.swing.JPanel

    +javax.swing.JPanel.AccessibleJPanel
    +
    +

    Nested classes/interfaces inherited from class javax.swing.JComponent

    +javax.swing.JComponent.AccessibleJComponent
    +
    +

    Nested classes/interfaces inherited from class java.awt.Container

    +java.awt.Container.AccessibleAWTContainer
    +
    +

    Nested classes/interfaces inherited from class java.awt.Component

    +java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    +
    +
  • + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    private Windowwindow 
    +
    +
    +

    Fields inherited from class javax.swing.JComponent

    +listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
    +
    +

    Fields inherited from class java.awt.Component

    +accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
    +
    +

    Fields inherited from interface java.awt.image.ImageObserver

    +ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Draw​(Window window) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidpaintComponent​(java.awt.Graphics g) 
    +
    +
    +
    +

    Methods inherited from class javax.swing.JPanel

    +getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
    +
    +

    Methods inherited from class javax.swing.JComponent

    +addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
    +
    +

    Methods inherited from class java.awt.Container

    +add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
    +
    +

    Methods inherited from class java.awt.Component

    +action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      window

      +
      private final Window window
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Draw

      +
      public Draw​(Window window)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      paintComponent

      +
      public void paintComponent​(java.awt.Graphics g)
      +
      +
      Overrides:
      +
      paintComponent in class javax.swing.JComponent
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/view/Window.html b/livraison/doc/battleship/view/Window.html new file mode 100644 index 0000000..9dab4e9 --- /dev/null +++ b/livraison/doc/battleship/view/Window.html @@ -0,0 +1,603 @@ + + + + + +Window + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Window

+
+
java.lang.Object +
battleship.view.AbstractView +
battleship.view.Window
+
+
+
+
+
All Implemented Interfaces:
+
View
+
+
+
public class Window
+extends AbstractView
+
Window view, instanced if argument 2 equals to "nogui"
+
+
See Also:
+
View, +AbstractView
+
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    + + + + + + + + + + + + + + + + +
    Nested Classes
    Modifier and TypeClassDescription
    (package private) class Window.Draw +
    Panel where we paint the board
    +
    +
    +
    +
  • + +
  • +
    +

    Field Summary

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fields
    Modifier and TypeFieldDescription
    (package private) javax.swing.JFrameframe 
    intheight +
    grids height, do no represent frame size
    +
    private WindowKeyboardListenerkeyboardComponent 
    private WindowMouseListenermouseComponent 
    (package private) java.lang.StringupperSubTitle 
    (package private) java.lang.StringupperTitle 
    intwidth +
    grids width, do no represent frame size
    +
    +
    +
    +

    Fields inherited from class battleship.view.AbstractView

    +game
    +
    +

    Fields inherited from interface battleship.view.View

    +shipsSize
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    Window​(Game game) 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    Pair<java.lang.Integer,​java.lang.Integer>chooseMove​(Player player) +
    ask player to choose a position in its opponent grid
    +
    voiddisplayBoard() +
    refresh windows to display updated content
    +
    voiddisplayWinner​(Player winner) +
    open a dialog to display the winner and exit the program when window is closed
    +
    protected java.lang.StringgetKeyInput() +
    ask player for keyboard input and return result
    +
    protected java.lang.StringkeyboardInput() +
    ask Game.currentPlayer for keyboard input
    +
    protected Pair<java.lang.Integer,​java.lang.Integer>mouseInput​(Player player) +
    ask player for mouse input
    +
    voidopenDialog​(java.lang.String message) +
    Open a window with message as content and with a "OK" button
    +
    voidopenDialog​(java.lang.String message, +boolean exitOnClose) +
    Open a window with message as content and with a "OK" button
    +
    voidsetShips​(Player player) +
    Ask player to set position of its ships
    +
    protected voidsetUpperText​(java.lang.String s) +
    Display a text above the grid
    +
    +
    +
    +
    +

    Methods inherited from class battleship.view.AbstractView

    +getDirectionFromChar, toString, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      frame

      +
      final javax.swing.JFrame frame
      +
      +
    • +
    • +
      +

      height

      +
      public final int height
      +
      grids height, do no represent frame size
      +
      +
      See Also:
      +
      Constant Field Values
      +
      +
      +
    • +
    • +
      +

      width

      +
      public final int width
      +
      grids width, do no represent frame size
      +
      +
      See Also:
      +
      Constant Field Values
      +
      +
      +
    • +
    • +
      +

      mouseComponent

      +
      private final WindowMouseListener mouseComponent
      +
      +
    • +
    • +
      +

      keyboardComponent

      +
      private final WindowKeyboardListener keyboardComponent
      +
      +
    • +
    • +
      +

      upperTitle

      +
      java.lang.String upperTitle
      +
      +
    • +
    • +
      +

      upperSubTitle

      +
      java.lang.String upperSubTitle
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Window

      +
      public Window​(Game game)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getKeyInput

      +
      protected java.lang.String getKeyInput() + throws java.lang.InterruptedException
      +
      Description copied from class: AbstractView
      +
      ask player for keyboard input and return result
      +
      +
      Specified by:
      +
      getKeyInput in class AbstractView
      +
      Returns:
      +
      String given by player
      +
      Throws:
      +
      java.lang.InterruptedException - see getKeyInput()
      +
      +
      +
    • +
    • +
      +

      setUpperText

      +
      protected void setUpperText​(java.lang.String s)
      +
      Display a text above the grid
      +
      +
      Specified by:
      +
      setUpperText in class AbstractView
      +
      Parameters:
      +
      s - text to display
      +
      See Also:
      +
      setUpperText(String), +Terminal.setUpperText(String)
      +
      +
      +
    • +
    • +
      +

      setShips

      +
      public void setShips​(Player player) + throws java.lang.InterruptedException
      +
      Ask player to set position of its ships
      +
      +
      Specified by:
      +
      setShips in interface View
      +
      Overrides:
      +
      setShips in class AbstractView
      +
      Parameters:
      +
      player - player we ask
      +
      Throws:
      +
      java.lang.InterruptedException - see mouseInput(Player) and AbstractView.getDirectionFromChar()
      +
      +
      +
    • +
    • +
      +

      keyboardInput

      +
      protected java.lang.String keyboardInput() + throws java.lang.InterruptedException
      +
      ask Game.currentPlayer for keyboard input
      +
      +
      Specified by:
      +
      keyboardInput in class AbstractView
      +
      Returns:
      +
      String given by player
      +
      Throws:
      +
      java.lang.InterruptedException - throw if this Thread is interrupted while sleeping
      +
      See Also:
      +
      keyboardInput(), +Terminal.keyboardInput(), +Terminal.keyboardInputInteger()
      +
      +
      +
    • +
    • +
      +

      mouseInput

      +
      protected Pair<java.lang.Integer,​java.lang.Integer> mouseInput​(Player player) + throws java.lang.InterruptedException
      +
      ask player for mouse input
      +
      +
      Specified by:
      +
      mouseInput in class AbstractView
      +
      Parameters:
      +
      player - Game.currentPlayer
      +
      Returns:
      +
      coordinate of player opponent grid
      +
      Throws:
      +
      java.lang.InterruptedException - throw if this Thread is interrupted while sleeping
      +
      See Also:
      +
      mouseInput(Player)
      +
      +
      +
    • +
    • +
      +

      openDialog

      +
      public void openDialog​(java.lang.String message, +boolean exitOnClose)
      +
      Open a window with message as content and with a "OK" button
      +
      +
      Parameters:
      +
      message - message to display
      +
      exitOnClose - true if when user close this window, the program exit, false otherwise
      +
      +
      +
    • +
    • +
      +

      openDialog

      +
      public void openDialog​(java.lang.String message)
      +
      Open a window with message as content and with a "OK" button
      +
      +
      Parameters:
      +
      message - message to display
      +
      See Also:
      +
      openDialog(String, boolean)
      +
      +
      +
    • +
    • +
      +

      displayBoard

      +
      public void displayBoard()
      +
      refresh windows to display updated content
      +
      +
    • +
    • +
      +

      chooseMove

      +
      public Pair<java.lang.Integer,​java.lang.Integer> chooseMove​(Player player) + throws java.lang.InterruptedException
      +
      ask player to choose a position in its opponent grid
      +
      +
      Specified by:
      +
      chooseMove in interface View
      +
      Overrides:
      +
      chooseMove in class AbstractView
      +
      Parameters:
      +
      player - Game.currentPlayer
      +
      Returns:
      +
      a couple (Pair containing the x and y coordinate (left side store Y and right side X)
      +
      Throws:
      +
      java.lang.InterruptedException - see mouseInput(Player)
      +
      +
      +
    • +
    • +
      +

      displayWinner

      +
      public void displayWinner​(Player winner)
      +
      open a dialog to display the winner and exit the program when window is closed
      +
      +
      Parameters:
      +
      winner - the winner of the game.
      +
      See Also:
      +
      displayWinner(Player), +Terminal.displayWinner(Player)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/view/WindowListener.html b/livraison/doc/battleship/view/WindowListener.html new file mode 100644 index 0000000..2040c75 --- /dev/null +++ b/livraison/doc/battleship/view/WindowListener.html @@ -0,0 +1,287 @@ + + + + + +WindowListener + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class WindowListener

+
+
java.lang.Object +
battleship.view.WindowListener
+
+
+
+
All Implemented Interfaces:
+
java.awt.event.MouseListener, java.util.EventListener
+
+
+
public class WindowListener
+extends java.lang.Object
+implements java.awt.event.MouseListener
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    + + + + + + + + + + + + + + +
    Constructors
    ConstructorDescription
    WindowListener() 
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Modifier and TypeMethodDescription
    voidmouseClicked​(java.awt.event.MouseEvent e) 
    voidmouseEntered​(java.awt.event.MouseEvent e) 
    voidmouseExited​(java.awt.event.MouseEvent e) 
    voidmousePressed​(java.awt.event.MouseEvent e) 
    voidmouseReleased​(java.awt.event.MouseEvent e) 
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      WindowListener

      +
      public WindowListener()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      mouseClicked

      +
      public void mouseClicked​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mouseClicked in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mousePressed

      +
      public void mousePressed​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mousePressed in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mouseReleased

      +
      public void mouseReleased​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mouseReleased in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mouseEntered

      +
      public void mouseEntered​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mouseEntered in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    • +
      +

      mouseExited

      +
      public void mouseExited​(java.awt.event.MouseEvent e)
      +
      +
      Specified by:
      +
      mouseExited in interface java.awt.event.MouseListener
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/livraison/doc/battleship/view/package-summary.html b/livraison/doc/battleship/view/package-summary.html new file mode 100644 index 0000000..47ebe07 --- /dev/null +++ b/livraison/doc/battleship/view/package-summary.html @@ -0,0 +1,145 @@ + + + + + +battleship.view + + + + + + + + + + + + + + +
+ +
+
+
+

Package battleship.view

+
+
+
Contains terminal and windows view classes and theirs super class and interface
+
+
+
    +
  • +
    + + + + + + + + + + + + + + +
    Interface Summary
    InterfaceDescription
    View +
    View interface, used as an API
    +
    +
    +
  • +
  • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary
    ClassDescription
    AbstractView +
    Abstract view class
    +
    Terminal +
    Terminal view, instanced if argument 2 equals to "nogui"
    +
    Window +
    Window view, instanced if argument 2 equals to "nogui"
    +
    WindowListener 
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/battleship/view/package-tree.html b/livraison/doc/battleship/view/package-tree.html new file mode 100644 index 0000000..d4dde33 --- /dev/null +++ b/livraison/doc/battleship/view/package-tree.html @@ -0,0 +1,123 @@ + + + + + +battleship.view Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package battleship.view

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • battleship.view.AbstractView (implements battleship.view.View) + +
    • +
    • java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • java.awt.Container +
          +
        • javax.swing.JComponent (implements java.io.Serializable) +
            +
          • javax.swing.JPanel (implements javax.accessibility.Accessible) + +
          • +
          +
        • +
        +
      • +
      +
    • +
    • battleship.view.WindowListener (implements java.awt.event.MouseListener)
    • +
    +
  • +
+
+
+

Interface Hierarchy

+
    +
  • battleship.view.View
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/constant-values.html b/livraison/doc/constant-values.html new file mode 100644 index 0000000..192bd07 --- /dev/null +++ b/livraison/doc/constant-values.html @@ -0,0 +1,117 @@ + + + + + +Constant Field Values + + + + + + + + + + + + + + +
+ +
+
+
+

Constant Field Values

+
+

Contents

+ +
+
+
+

battleship.view.*

+
    +
  • +
    + + + + + + + + + + + + + + + + + + + + + +
    battleship.view.Window
    Modifier and TypeConstant FieldValue
    public final intheight600
    public final intwidth1200
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/deprecated-list.html b/livraison/doc/deprecated-list.html new file mode 100644 index 0000000..3036f2c --- /dev/null +++ b/livraison/doc/deprecated-list.html @@ -0,0 +1,81 @@ + + + + + +Deprecated List + + + + + + + + + + + + + + +
+ +
+
+
+

Deprecated API

+

Contents

+
+
+ +
+
+ + diff --git a/livraison/doc/element-list b/livraison/doc/element-list new file mode 100644 index 0000000..b8f57aa --- /dev/null +++ b/livraison/doc/element-list @@ -0,0 +1,6 @@ +battleship +battleship.control +battleship.model +battleship.model.player +battleship.utils +battleship.view diff --git a/livraison/doc/help-doc.html b/livraison/doc/help-doc.html new file mode 100644 index 0000000..09e0ce0 --- /dev/null +++ b/livraison/doc/help-doc.html @@ -0,0 +1,181 @@ + + + + + +API Help + + + + + + + + + + + + + + +
+ +
+
+
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enums
  • +
  • Exceptions
  • +
  • Errors
  • +
  • Annotation Types
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
+
+
    +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Annotation Type

+

Each annotation type has its own separate page with the following sections:

+
    +
  • Annotation Type Declaration
  • +
  • Annotation Type Description
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
  • Element Details
  • +
+
+
+

Enum

+

Each enum has its own separate page with the following sections:

+
    +
  • Enum Declaration
  • +
  • Enum Description
  • +
  • Enum Constant Summary
  • +
  • Enum Constant Details
  • +
+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on "Tree" displays the hierarchy for only that package.
  • +
+
+
+

Deprecated API

+

The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to shortcomings, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.

+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

Constant Field Values

+

The Constant Field Values page lists the static final fields and their values.

+
+
+

Search

+

You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camel-case" abbreviations. For example:

+
    +
  • j.l.obj will match "java.lang.Object"
  • +
  • InpStr will match "java.io.InputStream"
  • +
  • HM.cK will match "java.util.HashMap.containsKey(Object)"
  • +
+

Refer to the Javadoc Search Specification for a full description of search features.

+
+
+This help file applies to API documentation generated by the standard doclet.
+ +
+
+ + diff --git a/livraison/doc/index-all.html b/livraison/doc/index-all.html new file mode 100644 index 0000000..1ef3823 --- /dev/null +++ b/livraison/doc/index-all.html @@ -0,0 +1,697 @@ + + + + + +Index + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I K L M O P R S T U V W 
All Classes|All Packages +

A

+
+
AbstractPlayer - Class in battleship.model.player
+
+
Abstract player class see Player to know more about this code organisation
+
+
AbstractPlayer() - Constructor for class battleship.model.player.AbstractPlayer
+
 
+
AbstractView - Class in battleship.view
+
+
Abstract view class
+
+
AbstractView(Game) - Constructor for class battleship.view.AbstractView
+
 
+
addMove(Triplet<Integer, Integer, Boolean>) - Method in class battleship.model.player.AbstractPlayer
+
+
add move to the AbstractPlayer.moves list
+
+
addMove(Triplet<Integer, Integer, Boolean>) - Method in interface battleship.model.player.Player
+
+
Adds coordinates of the move in the AbstractPlayer.moves list
+
+
areValid(int, int) - Method in class battleship.model.player.AbstractPlayer
+
 
+
areValid(int, int) - Method in interface battleship.model.player.Player
+
+
check if coordinates from View.chooseMove(Player)are in valids position
+
+
arrow - Variable in enum battleship.model.Direction
+
 
+
+

B

+
+
battleship - package battleship
+
+
Contains Main Class
+
+
battleship.control - package battleship.control
+
+
Contains keyboard and mouse listeners
+
+
battleship.model - package battleship.model
+
+
Contains all main Game classes
+
+
battleship.model.player - package battleship.model.player
+
+
Contains all players classes instances and theirs super classes and interface
+
+
battleship.utils - package battleship.utils
+
+
Utility classes
+
+
battleship.view - package battleship.view
+
+
Contains terminal and windows view classes and theirs super class and interface
+
+
+

C

+
+
changeCurrentPlayer() - Method in class battleship.model.Game
+
 
+
checkDrownedShips() - Method in class battleship.model.Game
+
+
Update ship to know if they're drowned
+
+
chooseMove() - Method in class battleship.model.player.Human
+
 
+
chooseMove() - Method in interface battleship.model.player.Player
+
+
Used by computer only
+
+
chooseMove() - Method in class battleship.model.player.Random
+
 
+
chooseMove(Player) - Method in class battleship.view.AbstractView
+
+
used by Computer player to play a move in the grid depending of its algorithm
+
+
chooseMove(Player) - Method in class battleship.view.Terminal
+
+
ask player to choose a coords on its opponent grid, call AbstractView.chooseMove(Player) if instance of + player is Computer + if player isn't Human instance
+
+
chooseMove(Player) - Method in interface battleship.view.View
+
+
ask the player the choose a position on its opponent grid
+
+
chooseMove(Player) - Method in class battleship.view.Window
+
+
ask player to choose a position in its opponent grid
+
+
Computer - Class in battleship.model.player
+
+
Computer super class, all player object which use an algorithm to calculate coordinates to use should extend from + this object.
+
+
Computer() - Constructor for class battleship.model.player.Computer
+
 
+
coords - Variable in class battleship.model.Ship
+
+
base coordinates of the ship
+
+
currentPlayer - Variable in class battleship.model.Game
+
 
+
+

D

+
+
DEFAULT - battleship.model.Direction
+
 
+
direction - Variable in enum battleship.model.Direction
+
 
+
direction - Variable in class battleship.model.Ship
+
 
+
Direction - Enum in battleship.model
+
 
+
Direction(Pair<Integer, Integer>, String, int) - Constructor for enum battleship.model.Direction
+
 
+
displayBoard() - Method in class battleship.view.Terminal
+
+
print board in terminal
+
+
displayBoard() - Method in interface battleship.view.View
+
+
Display all grids
+
+
displayBoard() - Method in class battleship.view.Window
+
+
refresh windows to display updated content
+
+
displayWinner(Player) - Method in class battleship.view.Terminal
+
+
print grid, winner player and close scanner, game automatically close after this
+
+
displayWinner(Player) - Method in interface battleship.view.View
+
+
Display the winner of the game and then close the game
+
+
displayWinner(Player) - Method in class battleship.view.Window
+
+
open a dialog to display the winner and exit the program when window is closed
+
+
DOWN - battleship.model.Direction
+
 
+
Draw(Window) - Constructor for class battleship.view.Window.Draw
+
 
+
+

E

+
+
equals(Object) - Method in class battleship.utils.Pair
+
 
+
equals(Object) - Method in class battleship.utils.Triplet
+
 
+
+

F

+
+
frame - Variable in class battleship.view.Window
+
 
+
fullCoords - Variable in class battleship.model.Ship
+
+
ship full coordinates calculate thank to base coordinates, direction and size
+
+
+

G

+
+
game - Static variable in class battleship.Main
+
 
+
game - Variable in class battleship.view.AbstractView
+
 
+
Game - Class in battleship.model
+
+
Main game class
+
+
Game(Player[]) - Constructor for class battleship.model.Game
+
 
+
getArrow() - Method in enum battleship.model.Direction
+
 
+
getCoords() - Method in class battleship.model.Ship
+
 
+
getCurrentPlayer() - Method in class battleship.model.Game
+
 
+
getDirection() - Method in enum battleship.model.Direction
+
 
+
getDirection() - Method in class battleship.model.Ship
+
 
+
getDirectionFromChar() - Method in class battleship.view.AbstractView
+
+
ask player for keyboard input and parse it into one of Direction value
+
+
getFullCoords() - Method in class battleship.model.Ship
+
 
+
getId() - Method in class battleship.model.player.AbstractPlayer
+
 
+
getId() - Method in interface battleship.model.player.Player
+
 
+
getKeyInput() - Method in class battleship.view.AbstractView
+
+
ask player for keyboard input and return result
+
+
getKeyInput() - Method in class battleship.view.Terminal
+
 
+
getKeyInput() - Method in class battleship.view.Window
+
 
+
getKeyword() - Method in enum battleship.model.Direction
+
 
+
getLeft() - Method in class battleship.utils.Pair
+
 
+
getLeft() - Method in class battleship.utils.Triplet
+
 
+
getMiddle() - Method in class battleship.utils.Triplet
+
 
+
getMoves() - Method in class battleship.model.player.AbstractPlayer
+
 
+
getMoves() - Method in interface battleship.model.player.Player
+
 
+
getOtherPlayer() - Method in class battleship.model.Game
+
 
+
getOtherPlayer(Player) - Method in class battleship.model.Game
+
 
+
getRight() - Method in class battleship.utils.Pair
+
 
+
getRight() - Method in class battleship.utils.Triplet
+
 
+
getShips() - Method in class battleship.model.player.AbstractPlayer
+
 
+
getShips() - Method in interface battleship.model.player.Player
+
 
+
getSize() - Method in class battleship.model.Ship
+
 
+
getWinner() - Method in class battleship.model.Game
+
 
+
+

H

+
+
hashCode() - Method in class battleship.utils.Pair
+
 
+
hashCode() - Method in class battleship.utils.Triplet
+
 
+
height - Variable in class battleship.view.Window
+
+
grids height, do no represent frame size
+
+
Human - Class in battleship.model.player
+
+
This object do nothing itself, it just an interface to know the type of player (Human or not), + each view interact with the player with its methods
+
+
Human() - Constructor for class battleship.model.player.Human
+
 
+
+

I

+
+
id - Variable in class battleship.model.player.AbstractPlayer
+
 
+
isDrown - Variable in class battleship.model.Ship
+
+
if true the ship is destroyed
+
+
isDrown() - Method in class battleship.model.Ship
+
 
+
isPositionDrowned(Player, Ship, Pair<Integer, Integer>) - Method in class battleship.view.AbstractView
+
 
+
isPositionDrowned(Player, Pair<Integer, Integer>) - Method in class battleship.view.AbstractView
+
 
+
isShipPosition(Ship, Pair<Integer, Integer>) - Method in class battleship.view.AbstractView
+
 
+
+

K

+
+
keyboardComponent - Variable in class battleship.view.Terminal
+
 
+
keyboardComponent - Variable in class battleship.view.Window
+
 
+
keyboardInput() - Method in class battleship.control.TerminalKeyboardListener
+
 
+
keyboardInput() - Method in class battleship.view.AbstractView
+
+
ask Game.currentPlayer for keyboard input
+
+
keyboardInput() - Method in class battleship.view.Terminal
+
 
+
keyboardInput() - Method in class battleship.view.Window
+
+
ask Game.currentPlayer for keyboard input
+
+
keyboardInputInteger() - Method in class battleship.view.Terminal
+
 
+
keyPressed(KeyEvent) - Method in class battleship.control.WindowKeyboardListener
+
 
+
keyReleased(KeyEvent) - Method in class battleship.control.WindowKeyboardListener
+
 
+
keyTyped - Variable in class battleship.control.WindowKeyboardListener
+
 
+
keyTyped(KeyEvent) - Method in class battleship.control.WindowKeyboardListener
+
 
+
keyTypedArrow - Variable in class battleship.control.WindowKeyboardListener
+
 
+
keyword - Variable in enum battleship.model.Direction
+
 
+
+

L

+
+
lastInput - Variable in class battleship.control.WindowMouseListener
+
 
+
left - Variable in class battleship.utils.Pair
+
 
+
left - Variable in class battleship.utils.Triplet
+
 
+
LEFT - battleship.model.Direction
+
 
+
+

M

+
+
main(String[]) - Static method in class battleship.Main
+
 
+
Main - Class in battleship
+
+
Main class + Given arguments are importants, please give attention to Main.parseArgs(String[]) about this
+
+
Main() - Constructor for class battleship.Main
+
 
+
middle - Variable in class battleship.utils.Triplet
+
 
+
mouseClicked(MouseEvent) - Method in class battleship.control.WindowMouseListener
+
 
+
mouseClicked(MouseEvent) - Method in class battleship.view.WindowListener
+
 
+
mouseComponent - Variable in class battleship.view.Window
+
 
+
mouseEntered(MouseEvent) - Method in class battleship.control.WindowMouseListener
+
 
+
mouseEntered(MouseEvent) - Method in class battleship.view.WindowListener
+
 
+
mouseExited(MouseEvent) - Method in class battleship.control.WindowMouseListener
+
 
+
mouseExited(MouseEvent) - Method in class battleship.view.WindowListener
+
 
+
mouseInput(Player) - Method in class battleship.view.AbstractView
+
+
ask player for mouse input
+
+
mouseInput(Player) - Method in class battleship.view.Terminal
+
+
Never call in Terminal
+
+
mouseInput(Player) - Method in class battleship.view.Window
+
+
ask player for mouse input
+
+
mousePressed(MouseEvent) - Method in class battleship.control.WindowMouseListener
+
 
+
mousePressed(MouseEvent) - Method in class battleship.view.WindowListener
+
 
+
mouseReleased(MouseEvent) - Method in class battleship.control.WindowMouseListener
+
 
+
mouseReleased(MouseEvent) - Method in class battleship.view.WindowListener
+
 
+
move(Pair<Integer, Integer>) - Method in class battleship.model.Game
+
+
Play the selected move from current player in grid
+
+
moves - Variable in class battleship.model.player.AbstractPlayer
+
+
reference every shot on the opponent board, left and middle side of the Triplet reference the coordinates and the + right side if this move hit or not an opponent ship
+
+
+

O

+
+
openDialog(String) - Method in class battleship.view.Window
+
+
Open a window with message as content and with a "OK" button
+
+
openDialog(String, boolean) - Method in class battleship.view.Window
+
+
Open a window with message as content and with a "OK" button
+
+
+

P

+
+
paintComponent(Graphics) - Method in class battleship.view.Window.Draw
+
 
+
Pair<U,​K> - Class in battleship.utils
+
+
tuple containing 2 generic type elements
+
+
Pair(U, K) - Constructor for class battleship.utils.Pair
+
 
+
parseArgs(String[]) - Static method in class battleship.Main
+
+
Read and parse launch arguments.
+ launch arguments need to follow this syntax:
+
+
placeShipRandomly() - Method in class battleship.model.player.Computer
+
 
+
placeShips() - Method in class battleship.model.player.Human
+
 
+
placeShips() - Method in interface battleship.model.player.Player
+
+
Used by Computer instances to place ships
+
+
placeShips() - Method in class battleship.model.player.Random
+
 
+
Play(View) - Method in class battleship.model.Game
+
+
game loop
+
+
Player - Interface in battleship.model.player
+
+
Player interface, used as an API.
+
+
playerIdLastInput - Variable in class battleship.control.WindowMouseListener
+
 
+
players - Variable in class battleship.model.Game
+
 
+
+

R

+
+
Random - Class in battleship.model.player
+
+
place its ship and choose moves randomly
+
+
Random() - Constructor for class battleship.model.player.Random
+
 
+
recalculateFullCoords() - Method in class battleship.model.Ship
+
+
recalculate all coords based on this base coords, direction and size
+
+
requestInput - Variable in class battleship.control.WindowKeyboardListener
+
 
+
requestInput - Variable in class battleship.control.WindowMouseListener
+
 
+
right - Variable in class battleship.utils.Pair
+
 
+
right - Variable in class battleship.utils.Triplet
+
 
+
RIGHT - battleship.model.Direction
+
 
+
+

S

+
+
scanner - Variable in class battleship.control.TerminalKeyboardListener
+
 
+
scanner - Static variable in class battleship.view.Terminal
+
 
+
setCoords(Pair<Integer, Integer>) - Method in class battleship.model.Ship
+
 
+
setDirection(Direction) - Method in class battleship.model.Ship
+
 
+
setDrown() - Method in class battleship.model.Ship
+
+
set Ship.isDrown to true
+
+
setId(int) - Method in class battleship.model.player.AbstractPlayer
+
 
+
setId(int) - Method in interface battleship.model.player.Player
+
 
+
setShips(Player) - Method in class battleship.view.AbstractView
+
+
used if player instance of Computer
+
+
setShips(Player) - Method in class battleship.view.Terminal
+
+
Ask player to set position of its ships
+
+
setShips(Player) - Method in interface battleship.view.View
+
+
Ask player to set position of its ships
+
+
setShips(Player) - Method in class battleship.view.Window
+
+
Ask player to set position of its ships
+
+
setShips(Ship) - Method in class battleship.model.player.AbstractPlayer
+
 
+
setShips(Ship) - Method in interface battleship.model.player.Player
+
+
check if ship position and direction are valides and does not overlap on other vessels + add the ship to player AbstractPlayer.ships list and return true if valid + false otherwise
+
+
setUpperText(String) - Method in class battleship.view.AbstractView
+
+
Display a text above the grid on Window, simply print text on Terminal
+
+
setUpperText(String) - Method in class battleship.view.Terminal
+
+
print string
+
+
setUpperText(String) - Method in class battleship.view.Window
+
+
Display a text above the grid
+
+
Ship - Class in battleship.model
+
+
player's ship class
+
+
Ship(Pair<Integer, Integer>, int, Direction) - Constructor for class battleship.model.Ship
+
 
+
ships - Variable in class battleship.model.player.AbstractPlayer
+
 
+
shipSize - Static variable in interface battleship.model.player.Player
+
 
+
shipsSize - Static variable in interface battleship.view.View
+
 
+
size - Variable in class battleship.model.Ship
+
+
ship size
+
+
+

T

+
+
Terminal - Class in battleship.view
+
+
Terminal view, instanced if argument 2 equals to "nogui"
+
+
Terminal(Game) - Constructor for class battleship.view.Terminal
+
 
+
TerminalKeyboardListener - Class in battleship.control
+
 
+
TerminalKeyboardListener(Scanner) - Constructor for class battleship.control.TerminalKeyboardListener
+
 
+
toString() - Method in class battleship.model.player.AbstractPlayer
+
 
+
toString() - Method in class battleship.model.Ship
+
 
+
toString() - Method in class battleship.utils.Pair
+
 
+
toString() - Method in class battleship.utils.Triplet
+
 
+
toString() - Method in class battleship.view.AbstractView
+
+
Used during debugging, used in terminal to display grids too
+
+
toString(boolean) - Method in class battleship.view.AbstractView
+
 
+
Triplet<U,​K,​V> - Class in battleship.utils
+
+
tuple containing 3 generic type elements
+
+
Triplet(Pair<U, K>, V) - Constructor for class battleship.utils.Triplet
+
 
+
Triplet(U, K, V) - Constructor for class battleship.utils.Triplet
+
 
+
+

U

+
+
UP - battleship.model.Direction
+
 
+
updateIsDrown(Player) - Method in class battleship.model.Ship
+
+
update value Ship.isDrown to true if player hit all of ship boxes
+
+
upperSubTitle - Variable in class battleship.view.Window
+
 
+
upperTitle - Variable in class battleship.view.Window
+
 
+
+

V

+
+
validMoves() - Method in class battleship.model.player.AbstractPlayer
+
 
+
validMoves() - Method in interface battleship.model.player.Player
+
+
give a list of the player possible moves, used in Player.chooseMove()
+
+
valueOf(String) - Static method in enum battleship.model.Direction
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum battleship.model.Direction
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
view - Static variable in class battleship.Main
+
 
+
View - Interface in battleship.view
+
+
View interface, used as an API
+
+
+

W

+
+
width - Variable in class battleship.view.Window
+
+
grids width, do no represent frame size
+
+
window - Variable in class battleship.control.WindowMouseListener
+
 
+
window - Variable in class battleship.view.Window.Draw
+
 
+
Window - Class in battleship.view
+
+
Window view, instanced if argument 2 equals to "nogui"
+
+
Window(Game) - Constructor for class battleship.view.Window
+
 
+
Window.Draw - Class in battleship.view
+
+
Panel where we paint the board
+
+
WindowKeyboardListener - Class in battleship.control
+
 
+
WindowKeyboardListener() - Constructor for class battleship.control.WindowKeyboardListener
+
 
+
WindowListener - Class in battleship.view
+
 
+
WindowListener() - Constructor for class battleship.view.WindowListener
+
 
+
WindowMouseListener - Class in battleship.control
+
 
+
WindowMouseListener(Window) - Constructor for class battleship.control.WindowMouseListener
+
 
+
+A B C D E F G H I K L M O P R S T U V W 
All Classes|All Packages
+ +
+
+ + diff --git a/livraison/doc/index.html b/livraison/doc/index.html new file mode 100644 index 0000000..b3c3a04 --- /dev/null +++ b/livraison/doc/index.html @@ -0,0 +1,127 @@ + + + + + +Overview + + + + + + + + + + + + + + +
+ +
+
+
BattleShip package
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Packages
PackageDescription
battleship +
Contains Main Class
+
battleship.control +
Contains keyboard and mouse listeners
+
battleship.model +
Contains all main Game classes
+
battleship.model.player +
Contains all players classes instances and theirs super classes and interface
+
battleship.utils +
Utility classes
+
battleship.view +
Contains terminal and windows view classes and theirs super class and interface
+
+
+
+ +
+
+ + diff --git a/livraison/doc/jquery-ui.overrides.css b/livraison/doc/jquery-ui.overrides.css new file mode 100644 index 0000000..1abff95 --- /dev/null +++ b/livraison/doc/jquery-ui.overrides.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; +} diff --git a/livraison/doc/member-search-index.js b/livraison/doc/member-search-index.js new file mode 100644 index 0000000..8c5ebc0 --- /dev/null +++ b/livraison/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"battleship.model.player","c":"AbstractPlayer","l":"AbstractPlayer()","u":"%3Cinit%3E()"},{"p":"battleship.view","c":"AbstractView","l":"AbstractView(Game)","u":"%3Cinit%3E(battleship.model.Game)"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"addMove(Triplet)","u":"addMove(battleship.utils.Triplet)"},{"p":"battleship.model.player","c":"Player","l":"addMove(Triplet)","u":"addMove(battleship.utils.Triplet)"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"areValid(int, int)","u":"areValid(int,int)"},{"p":"battleship.model.player","c":"Player","l":"areValid(int, int)","u":"areValid(int,int)"},{"p":"battleship.model","c":"Direction","l":"arrow"},{"p":"battleship.model","c":"Game","l":"changeCurrentPlayer()"},{"p":"battleship.model","c":"Game","l":"checkDrownedShips()"},{"p":"battleship.model.player","c":"Human","l":"chooseMove()"},{"p":"battleship.model.player","c":"Player","l":"chooseMove()"},{"p":"battleship.model.player","c":"Random","l":"chooseMove()"},{"p":"battleship.view","c":"AbstractView","l":"chooseMove(Player)","u":"chooseMove(battleship.model.player.Player)"},{"p":"battleship.view","c":"Terminal","l":"chooseMove(Player)","u":"chooseMove(battleship.model.player.Player)"},{"p":"battleship.view","c":"View","l":"chooseMove(Player)","u":"chooseMove(battleship.model.player.Player)"},{"p":"battleship.view","c":"Window","l":"chooseMove(Player)","u":"chooseMove(battleship.model.player.Player)"},{"p":"battleship.model.player","c":"Computer","l":"Computer()","u":"%3Cinit%3E()"},{"p":"battleship.model","c":"Ship","l":"coords"},{"p":"battleship.model","c":"Game","l":"currentPlayer"},{"p":"battleship.model","c":"Direction","l":"DEFAULT"},{"p":"battleship.model","c":"Direction","l":"direction"},{"p":"battleship.model","c":"Ship","l":"direction"},{"p":"battleship.model","c":"Direction","l":"Direction(Pair, String, int)","u":"%3Cinit%3E(battleship.utils.Pair,java.lang.String,int)"},{"p":"battleship.view","c":"Terminal","l":"displayBoard()"},{"p":"battleship.view","c":"View","l":"displayBoard()"},{"p":"battleship.view","c":"Window","l":"displayBoard()"},{"p":"battleship.view","c":"Terminal","l":"displayWinner(Player)","u":"displayWinner(battleship.model.player.Player)"},{"p":"battleship.view","c":"View","l":"displayWinner(Player)","u":"displayWinner(battleship.model.player.Player)"},{"p":"battleship.view","c":"Window","l":"displayWinner(Player)","u":"displayWinner(battleship.model.player.Player)"},{"p":"battleship.model","c":"Direction","l":"DOWN"},{"p":"battleship.view","c":"Window.Draw","l":"Draw(Window)","u":"%3Cinit%3E(battleship.view.Window)"},{"p":"battleship.utils","c":"Pair","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"battleship.utils","c":"Triplet","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"battleship.view","c":"Window","l":"frame"},{"p":"battleship.model","c":"Ship","l":"fullCoords"},{"p":"battleship","c":"Main","l":"game"},{"p":"battleship.view","c":"AbstractView","l":"game"},{"p":"battleship.model","c":"Game","l":"Game(Player[])","u":"%3Cinit%3E(battleship.model.player.Player[])"},{"p":"battleship.model","c":"Direction","l":"getArrow()"},{"p":"battleship.model","c":"Ship","l":"getCoords()"},{"p":"battleship.model","c":"Game","l":"getCurrentPlayer()"},{"p":"battleship.model","c":"Direction","l":"getDirection()"},{"p":"battleship.model","c":"Ship","l":"getDirection()"},{"p":"battleship.view","c":"AbstractView","l":"getDirectionFromChar()"},{"p":"battleship.model","c":"Ship","l":"getFullCoords()"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"getId()"},{"p":"battleship.model.player","c":"Player","l":"getId()"},{"p":"battleship.view","c":"AbstractView","l":"getKeyInput()"},{"p":"battleship.view","c":"Terminal","l":"getKeyInput()"},{"p":"battleship.view","c":"Window","l":"getKeyInput()"},{"p":"battleship.model","c":"Direction","l":"getKeyword()"},{"p":"battleship.utils","c":"Pair","l":"getLeft()"},{"p":"battleship.utils","c":"Triplet","l":"getLeft()"},{"p":"battleship.utils","c":"Triplet","l":"getMiddle()"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"getMoves()"},{"p":"battleship.model.player","c":"Player","l":"getMoves()"},{"p":"battleship.model","c":"Game","l":"getOtherPlayer()"},{"p":"battleship.model","c":"Game","l":"getOtherPlayer(Player)","u":"getOtherPlayer(battleship.model.player.Player)"},{"p":"battleship.utils","c":"Pair","l":"getRight()"},{"p":"battleship.utils","c":"Triplet","l":"getRight()"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"getShips()"},{"p":"battleship.model.player","c":"Player","l":"getShips()"},{"p":"battleship.model","c":"Ship","l":"getSize()"},{"p":"battleship.model","c":"Game","l":"getWinner()"},{"p":"battleship.utils","c":"Pair","l":"hashCode()"},{"p":"battleship.utils","c":"Triplet","l":"hashCode()"},{"p":"battleship.view","c":"Window","l":"height"},{"p":"battleship.model.player","c":"Human","l":"Human()","u":"%3Cinit%3E()"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"id"},{"p":"battleship.model","c":"Ship","l":"isDrown"},{"p":"battleship.model","c":"Ship","l":"isDrown()"},{"p":"battleship.view","c":"AbstractView","l":"isPositionDrowned(Player, Pair)","u":"isPositionDrowned(battleship.model.player.Player,battleship.utils.Pair)"},{"p":"battleship.view","c":"AbstractView","l":"isPositionDrowned(Player, Ship, Pair)","u":"isPositionDrowned(battleship.model.player.Player,battleship.model.Ship,battleship.utils.Pair)"},{"p":"battleship.view","c":"AbstractView","l":"isShipPosition(Ship, Pair)","u":"isShipPosition(battleship.model.Ship,battleship.utils.Pair)"},{"p":"battleship.view","c":"Terminal","l":"keyboardComponent"},{"p":"battleship.view","c":"Window","l":"keyboardComponent"},{"p":"battleship.control","c":"TerminalKeyboardListener","l":"keyboardInput()"},{"p":"battleship.view","c":"AbstractView","l":"keyboardInput()"},{"p":"battleship.view","c":"Terminal","l":"keyboardInput()"},{"p":"battleship.view","c":"Window","l":"keyboardInput()"},{"p":"battleship.view","c":"Terminal","l":"keyboardInputInteger()"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"keyPressed(KeyEvent)","u":"keyPressed(java.awt.event.KeyEvent)"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"keyReleased(KeyEvent)","u":"keyReleased(java.awt.event.KeyEvent)"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"keyTyped"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"keyTyped(KeyEvent)","u":"keyTyped(java.awt.event.KeyEvent)"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"keyTypedArrow"},{"p":"battleship.model","c":"Direction","l":"keyword"},{"p":"battleship.control","c":"WindowMouseListener","l":"lastInput"},{"p":"battleship.utils","c":"Pair","l":"left"},{"p":"battleship.utils","c":"Triplet","l":"left"},{"p":"battleship.model","c":"Direction","l":"LEFT"},{"p":"battleship","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"battleship","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"battleship.utils","c":"Triplet","l":"middle"},{"p":"battleship.control","c":"WindowMouseListener","l":"mouseClicked(MouseEvent)","u":"mouseClicked(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"WindowListener","l":"mouseClicked(MouseEvent)","u":"mouseClicked(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"Window","l":"mouseComponent"},{"p":"battleship.control","c":"WindowMouseListener","l":"mouseEntered(MouseEvent)","u":"mouseEntered(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"WindowListener","l":"mouseEntered(MouseEvent)","u":"mouseEntered(java.awt.event.MouseEvent)"},{"p":"battleship.control","c":"WindowMouseListener","l":"mouseExited(MouseEvent)","u":"mouseExited(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"WindowListener","l":"mouseExited(MouseEvent)","u":"mouseExited(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"AbstractView","l":"mouseInput(Player)","u":"mouseInput(battleship.model.player.Player)"},{"p":"battleship.view","c":"Terminal","l":"mouseInput(Player)","u":"mouseInput(battleship.model.player.Player)"},{"p":"battleship.view","c":"Window","l":"mouseInput(Player)","u":"mouseInput(battleship.model.player.Player)"},{"p":"battleship.control","c":"WindowMouseListener","l":"mousePressed(MouseEvent)","u":"mousePressed(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"WindowListener","l":"mousePressed(MouseEvent)","u":"mousePressed(java.awt.event.MouseEvent)"},{"p":"battleship.control","c":"WindowMouseListener","l":"mouseReleased(MouseEvent)","u":"mouseReleased(java.awt.event.MouseEvent)"},{"p":"battleship.view","c":"WindowListener","l":"mouseReleased(MouseEvent)","u":"mouseReleased(java.awt.event.MouseEvent)"},{"p":"battleship.model","c":"Game","l":"move(Pair)","u":"move(battleship.utils.Pair)"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"moves"},{"p":"battleship.view","c":"Window","l":"openDialog(String)","u":"openDialog(java.lang.String)"},{"p":"battleship.view","c":"Window","l":"openDialog(String, boolean)","u":"openDialog(java.lang.String,boolean)"},{"p":"battleship.view","c":"Window.Draw","l":"paintComponent(Graphics)","u":"paintComponent(java.awt.Graphics)"},{"p":"battleship.utils","c":"Pair","l":"Pair(U, K)","u":"%3Cinit%3E(U,K)"},{"p":"battleship","c":"Main","l":"parseArgs(String[])","u":"parseArgs(java.lang.String[])"},{"p":"battleship.model.player","c":"Computer","l":"placeShipRandomly()"},{"p":"battleship.model.player","c":"Human","l":"placeShips()"},{"p":"battleship.model.player","c":"Player","l":"placeShips()"},{"p":"battleship.model.player","c":"Random","l":"placeShips()"},{"p":"battleship.model","c":"Game","l":"Play(View)","u":"Play(battleship.view.View)"},{"p":"battleship.control","c":"WindowMouseListener","l":"playerIdLastInput"},{"p":"battleship.model","c":"Game","l":"players"},{"p":"battleship.model.player","c":"Random","l":"Random()","u":"%3Cinit%3E()"},{"p":"battleship.model","c":"Ship","l":"recalculateFullCoords()"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"requestInput"},{"p":"battleship.control","c":"WindowMouseListener","l":"requestInput"},{"p":"battleship.utils","c":"Pair","l":"right"},{"p":"battleship.utils","c":"Triplet","l":"right"},{"p":"battleship.model","c":"Direction","l":"RIGHT"},{"p":"battleship.control","c":"TerminalKeyboardListener","l":"scanner"},{"p":"battleship.view","c":"Terminal","l":"scanner"},{"p":"battleship.model","c":"Ship","l":"setCoords(Pair)","u":"setCoords(battleship.utils.Pair)"},{"p":"battleship.model","c":"Ship","l":"setDirection(Direction)","u":"setDirection(battleship.model.Direction)"},{"p":"battleship.model","c":"Ship","l":"setDrown()"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"setId(int)"},{"p":"battleship.model.player","c":"Player","l":"setId(int)"},{"p":"battleship.view","c":"AbstractView","l":"setShips(Player)","u":"setShips(battleship.model.player.Player)"},{"p":"battleship.view","c":"Terminal","l":"setShips(Player)","u":"setShips(battleship.model.player.Player)"},{"p":"battleship.view","c":"View","l":"setShips(Player)","u":"setShips(battleship.model.player.Player)"},{"p":"battleship.view","c":"Window","l":"setShips(Player)","u":"setShips(battleship.model.player.Player)"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"setShips(Ship)","u":"setShips(battleship.model.Ship)"},{"p":"battleship.model.player","c":"Player","l":"setShips(Ship)","u":"setShips(battleship.model.Ship)"},{"p":"battleship.view","c":"AbstractView","l":"setUpperText(String)","u":"setUpperText(java.lang.String)"},{"p":"battleship.view","c":"Terminal","l":"setUpperText(String)","u":"setUpperText(java.lang.String)"},{"p":"battleship.view","c":"Window","l":"setUpperText(String)","u":"setUpperText(java.lang.String)"},{"p":"battleship.model","c":"Ship","l":"Ship(Pair, int, Direction)","u":"%3Cinit%3E(battleship.utils.Pair,int,battleship.model.Direction)"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"ships"},{"p":"battleship.model.player","c":"Player","l":"shipSize"},{"p":"battleship.view","c":"View","l":"shipsSize"},{"p":"battleship.model","c":"Ship","l":"size"},{"p":"battleship.view","c":"Terminal","l":"Terminal(Game)","u":"%3Cinit%3E(battleship.model.Game)"},{"p":"battleship.control","c":"TerminalKeyboardListener","l":"TerminalKeyboardListener(Scanner)","u":"%3Cinit%3E(java.util.Scanner)"},{"p":"battleship.model","c":"Ship","l":"toString()"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"toString()"},{"p":"battleship.utils","c":"Pair","l":"toString()"},{"p":"battleship.utils","c":"Triplet","l":"toString()"},{"p":"battleship.view","c":"AbstractView","l":"toString()"},{"p":"battleship.view","c":"AbstractView","l":"toString(boolean)"},{"p":"battleship.utils","c":"Triplet","l":"Triplet(Pair, V)","u":"%3Cinit%3E(battleship.utils.Pair,V)"},{"p":"battleship.utils","c":"Triplet","l":"Triplet(U, K, V)","u":"%3Cinit%3E(U,K,V)"},{"p":"battleship.model","c":"Direction","l":"UP"},{"p":"battleship.model","c":"Ship","l":"updateIsDrown(Player)","u":"updateIsDrown(battleship.model.player.Player)"},{"p":"battleship.view","c":"Window","l":"upperSubTitle"},{"p":"battleship.view","c":"Window","l":"upperTitle"},{"p":"battleship.model.player","c":"AbstractPlayer","l":"validMoves()"},{"p":"battleship.model.player","c":"Player","l":"validMoves()"},{"p":"battleship.model","c":"Direction","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"battleship.model","c":"Direction","l":"values()"},{"p":"battleship","c":"Main","l":"view"},{"p":"battleship.view","c":"Window","l":"width"},{"p":"battleship.control","c":"WindowMouseListener","l":"window"},{"p":"battleship.view","c":"Window.Draw","l":"window"},{"p":"battleship.view","c":"Window","l":"Window(Game)","u":"%3Cinit%3E(battleship.model.Game)"},{"p":"battleship.control","c":"WindowKeyboardListener","l":"WindowKeyboardListener()","u":"%3Cinit%3E()"},{"p":"battleship.view","c":"WindowListener","l":"WindowListener()","u":"%3Cinit%3E()"},{"p":"battleship.control","c":"WindowMouseListener","l":"WindowMouseListener(Window)","u":"%3Cinit%3E(battleship.view.Window)"}];updateSearchResults(); \ No newline at end of file diff --git a/livraison/doc/module-search-index.js b/livraison/doc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/livraison/doc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/livraison/doc/overview-summary.html b/livraison/doc/overview-summary.html new file mode 100644 index 0000000..9ca7954 --- /dev/null +++ b/livraison/doc/overview-summary.html @@ -0,0 +1,26 @@ + + + + + +Generated Documentation (Untitled) + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/livraison/doc/overview-tree.html b/livraison/doc/overview-tree.html new file mode 100644 index 0000000..a706400 --- /dev/null +++ b/livraison/doc/overview-tree.html @@ -0,0 +1,161 @@ + + + + + +Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • battleship.model.player.AbstractPlayer (implements battleship.model.player.Player) +
        +
      • battleship.model.player.Computer +
          +
        • battleship.model.player.Random
        • +
        +
      • +
      • battleship.model.player.Human
      • +
      +
    • +
    • battleship.view.AbstractView (implements battleship.view.View) + +
    • +
    • java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • java.awt.Container +
          +
        • javax.swing.JComponent (implements java.io.Serializable) +
            +
          • javax.swing.JPanel (implements javax.accessibility.Accessible) + +
          • +
          +
        • +
        +
      • +
      +
    • +
    • battleship.model.Game
    • +
    • battleship.Main
    • +
    • battleship.utils.Pair<U,​K>
    • +
    • battleship.model.Ship
    • +
    • battleship.control.TerminalKeyboardListener
    • +
    • battleship.utils.Triplet<U,​K,​V>
    • +
    • battleship.control.WindowKeyboardListener (implements java.awt.event.KeyListener)
    • +
    • battleship.view.WindowListener (implements java.awt.event.MouseListener)
    • +
    • battleship.control.WindowMouseListener (implements java.awt.event.MouseListener)
    • +
    +
  • +
+
+
+

Interface Hierarchy

+
    +
  • battleship.model.player.Player
  • +
  • battleship.view.View
  • +
+
+
+

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable) + +
    • +
    +
  • +
+
+
+ +
+
+ + diff --git a/livraison/doc/package-search-index.js b/livraison/doc/package-search-index.js new file mode 100644 index 0000000..ac4ea41 --- /dev/null +++ b/livraison/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"battleship"},{"l":"battleship.control"},{"l":"battleship.model"},{"l":"battleship.model.player"},{"l":"battleship.utils"},{"l":"battleship.view"}];updateSearchResults(); \ No newline at end of file diff --git a/livraison/doc/resources/glass.png b/livraison/doc/resources/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e GIT binary patch literal 499 zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI; zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6 z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5 zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/livraison/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..34abd18f32d3a55a297fdcf93409bd033ae573e7 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12TF&T^vI^j=w#x$i?I+((tf;UXnmgbH|3oY>pC!)f}(GR!16S-u+#{ ze6YEqRkW=8vGl=5qArKM<9}TC-}iEvB{zdaTcX5$wyRTK&ALRXUCGx5b?-VBQkUm|IuXOmYJrBRJgj{Vx zMbNnqUkncy+qa2-mWYc>swkcIuvGK#>(0d)B7)5f`@$Ei28nH~0h*~=;u=wsl30>z zm0Xkxq!^403@vmGjdTsnLJUl-Obo4zO|=aStPBhe<(7X!(U6;;l9^VCTf=69^L{`L N44$rjF6*2UngDu&PXPb` literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/livraison/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..a90afb8bf8028404d206114965669b023dcb85ea GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z#PD=+46!(!TrvH)L6@80)r*_cdCvDr%)6ghVL16=s@mbz7H!uRdGeDa z?kzLg)16i!f8fKx84s0>4hES%`s&m5HI1v5B^Uft7(lid2moiiX_$l+3hB+!{pPkNg5^ OVDNPHb6Mw<&;$T*0!_~V literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/livraison/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe091f6dc036fc1dc11b005738e951e27a43f7a GIT binary patch literal 332 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�_j6WK+Gj+xJRxVvl#lh7y-4uY);t)n47k4ot z9YsU`HVk7fg4;r{;)FHk7ZHyZJ+W|$aKwj=g&_$VCVFn5%XzSA`|z}+4ItZ|`hB}R z>h-6Be`d>nmv8;kQHJg!HMr^cCGG=T5;3HhZ_JRq0_4a3TsY7Pz{V+}z>;!R^U4*c zJ>wRI59B-)92Vi?b&EWvH(`<(G5A?W)z>EuDMG@VENAb7aHa`I#tKw{0uUc3(#J8& z*_S%A_ZxCIY385{%qN-b1K)TWmCjUA4nWKx_ZnKLSvEf0($&_0@DS~ zN8JOXJXXcaFm^OCYrz(R7N5DQkXKGnnt}yzfw^8s%=A?7hxza;ylJ;XQ&XtC`pM%b z6$5Ff0{(ALcSlTKvIbr@mR`0Z)*iM`2EfO|E5OMk$jQsE!^mat*drqV literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/images/ui-icons_2e83ff_256x240.png b/livraison/doc/script-dir/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5f49756ca64bd20a1048bd7a3a584457d4bf00 GIT binary patch literal 4549 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 literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/images/ui-icons_888888_256x240.png b/livraison/doc/script-dir/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5e33f27235d1b5cf0259f63f3894a6be33c679 GIT binary patch literal 6999 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 literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/images/ui-icons_cd0a0a_256x240.png b/livraison/doc/script-dir/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8ebc180a2d2a74739059799407b8b7b57a9092 GIT binary patch literal 4549 zcmeHK2U8PFw@yL`geFb85=9ZD1*F$df}vOGyaXvKy$K2df>fnT5l|3bse%xZCPhLK zq(s2bG?a)Sy-1T5a?x+*n|uGmeP(CR*`0mn>^?hl=A6f-#y6Q6_!s~H0J9!S#~c6v zp1FW6dYZF&QcwTzY=gzr&=N^tVEF&>Uj<|d!K-Hi*#?;#TL5@jZ-D7d+aKjhUB2ay za7XiT$P6-HQsvS@8Ne>u30;%65Ra9O$98#q8tPF*3bZzTz*N?kB)u+wBUmd+0T!5D z*<^r#Xj1>ZovB|~<30Q0ri+GeWcuAh#6Q2zf&gzD+|&Ui&|W~DEuelV+rTsX$43El z`#jYFfOD>TI+~UbzO6elx{w;!AbqIU%Q;US-y3k0y&ZS`{PXJ9%GKuT? zA=YB~_}-7h}grk~UMM~1{IJu5z36&nH&VPs=tlLlQ$TWf}@j0@_1Mr{7PN}kZ@ zU@9N%V%HL9eSE z*BdLzdW%d9Pf1SA5`lAsx?6C@pGL*pIra&^83Gx%WYG^8aT%R?OG4Ou=0P3R5)KZ5 z2&PGFszDp$u%zsXBYLrEImJ}xFS--_mkY=#l)@OKCnEoMOo8S*eqcoB^(_J&4tmM< zs4&xp4^NNgy&HVP!O(^_6JQclp)V-Ib9=q9aWcaz*Gx~fED_HM%LFsYU%*S)OnQwc zjLYYoLk)hxsCi6qp^!9HRp8G%b|f68yfB?n<^DBz9!E*WgJ2gV*g5_E7alHp*g2_wbc8Pw7*-B9ToxV53c2rO-Vs4Px{7M!NqIXUcMSHv1cqfD&&RnMQs) z8771gCX+j09M{&*+~vB&SSU^b{}8I6?+$$T9I*OL*{LYxAHX;*iW?dX43jc> zp~TZQLjbC#e#FPvV$ou|K+q=`%KR&iGq0m)&%Qcc{(18s?cH)B<=dn&oKq#&CVm$KVlo#Io;OGBX$ckfqw0sl%9n2giktQ~NFXr`I; z@h650el?%I!6y~!d;+G2vdswoOkzni?&A=OT9T`SipWyQFEyIunl_G*e?HE^ zx7hkb*WF(Q-{^pB`|k8FH76TXH6UL4I}2h>bLnbqDDskSJx^zYBqL{y$Sn($8Qire zMAVY2aEEb~T~WwSd>Zm#SF3TtfRem42m@SaPkNC3#AX)UgT%TW=5u7S=dxp|3h~tk+8yZee}?!M9HI@f1WTU?%HqiNq#8O^RmBZ`M8nW z4|fZvl;5BN{Lb=BYDGdiZ)y8 zAJE}UL0VRg6Y7k--*#>qd}SW1`t(XXl);%iKi{ne!56tAR#KrNk#?YdO;$EPr~Ghg zL?F4G51g8yyaYA|gz0Frg48>AICegIAO6!sUwFPVn!UV}NVFIh?iYutyf9vPz5yy( z6DHSbg~R&3N2@w%ro3d+aztG`xPRDrWGn*Y&;syq!6%Nw=lpy*v1>S; zz{fdE9!dF+My~C&wlU5dQQi|liohaCEU{7=clSmk*wsDU+doSXunDD0ppEf~z7_WK zr+{Ip?==2A3sWeggPH~cD#9z$y`Scm$bJE%)>E|H9P>`Q=3WWq&5Gckv?(2+idix- z=}@U*Mw5z1u`6g?w5skq?WtvLzqBse`dg0I`$C5Hc0=;s zkPHED_%Qv>At$X$ZQoAYc=|i@^yMF^9@eeSh=MAFRi5FHuyr-LC*Z!C9W%qiV99!$ z+O4V2zvRN1wsMwg1WGvGv~LqgOA2pQZi~E#pY5Lj`j`sW1jcRidq&GPu(oq7&iz*W zKqyJ$uZ1uC=#zeW>zJF-nx-gt-}Ak+qN{)H+eFKjl(8fvzoS10rN}hbM=2ZHn7&EW z&8^#HYV0+@3zAc}_pVhH22dU+MW5s4HwjodZU|T(EZaZ2D1Vuc&fO1}CSck5&kdJ% zi5gTPGKuKSk8XiGTl>tjIdMWO%>rJ^?&*|Ie1H+ zQLN{pqOrow2FVb%V>X_jBIhzH6s6~oS_oYp;iE>C%Z8w|lf!Ev?jfhYkP?FOAJ=__ zr3Ndn*>IP;iK|Ccxw##$W6H7snuYuHC7o)bP}ir&X4B|!Zd3cDm`a244dW*}1CN%5 zXbw16r3xZMsYF85zpYIaVr} z?@&!YCHZY9Dhmzcwq`}f17^3P{$})GtY|@wRkgs2TGgSwUV|As8%gAY&4}SLTG6V7 zW4_tEA;9}Q!A@(ZaEcrzDlf2bSL%{R)ka6gH9z06;tUEGAxQhi>~Q}sg1^506i46bzM;PHOzX~mY*`jhIiS}ZN2&$pmjO9S=Mj>^wMj=hEu zl~8}2{%}WDK+?okXRZA{H+!LjL{Qw9wi7vK1jiPkap+~_ak9^lCE_h!OeGWGGC-f1 zVRpAm`}*sOCzi+Ga`RF(!KxOX_nSKFZ%-ou%u?^0ue8}s6S?Xo-QGlc{EYuH{+mQ} z>M!OEuy)pxcgz<<{Cz|GC0u}FhbpDfLsov{TnAe9J`HN1 za$1aaKcULuO}iD`>6xOm$wW+_K_~{}#cJyGb!F&r_u_WE*8>}sUhJ6ueSj+chaBTO z_5$EOo-Ic;$S9Ktg;7Yrv0}eqi8w*$7sq2td!fj=Cb#w8?(xBoqj;W#K&Bk`$}tA3 z9AGH_)V?G6ZC=jUdQlN6RDFWODgd0RQQ;0q(jfFwegfKM0~6S+>;@7olQV~&k49?f4c6ReTPQa($S^cob|b_kZ$#iX{C8Kz*x0%0 zo>cBW9N_VWlazSRa?1##MXSou-fxeD!_&QLemU3-p!Hs?V4m6Uct-_K_|&bHnK!W$ zV;63=dGgzIvcKFCOuQk~(75AeyWPI#G+g@N6{x%iJmUeHX;4Zap?8EBjG*?Rg>>ai z2KP;zLI>J)rrvOVNW5NFP3LK%e~$B;2#8-H>%?dKvqQey7_%N$0BA{1=_#M`>JpGj zx^=X=@Ue4rw&8wAx+E@QbDpFk)D;j9<|OP%PJua#2WVcDDKfA63c=(IOQ-ItOLyLj z#xi9OEcg{vTTL1PH0YM4?khk(&TzrkU^aY+ypr5 z{jp4uL+LRby+u5hgmq)J$>w4X_2hrqq;M%gOnCFRl<7qk=J7~NV(r#;uVaI=;k)yH z3s|;iNg&Le8;yH+`qw4sWA#bWtE1?ftr!s26wPW{TB4{eZ7}vcT{CttS+z#yeHZD` z!Dm{7xPVwM1jvxV5cImPfv~WUzB0lD0V?KmAfl1#yl9`E3o(FJ-W+yQ`0C&D)y6G7Fqei&raMZE$9ts7fa z4f4?J_L;XiwLe#tFZPq{Hi=d2HL_a#J6156HfF@TAh; z*?Y}c7mP70lKYjiy#yEAjAE=?L_%I!DCR2DHw8zdS^Oe`Q{pKe%3AToxCN@8lKi~y z{NBUBt1t6X6V9;2e1t)uN}rcE_dBkxip3*do}=#z;&-%u?-?GxK;Dbzs!>Q^*6ptj zm^eD>*BoA?nOOnx9cmrMao0O|mq-wu>SauA6^XMeyN#cZXde*AQjDKU-aV#`nCYM! zK93Mnh)oEUJD3C2u*7fg1Z6u(rIWt=TFIqI@vO6HP*2{$Nfzqqt)jply2Pr`P1<{K zAJze>9Iexn7%VzWXJ<9dI_s1qgpT?U{aFjU?#mtfXwP1}`wno0q-!-Ch4te$o&7NO zv0K{_tOX8j$%GwNi1XUiA4V4r(b+)i-C0MYc`g)V`!_Vllu=)fmSLWy3MWmjV{~>( z2}Qmx;l8gN7vOQhu1Ct|e;v2u<}Z#5f0Ri`pg-r)`~A!ONc0I6kHauS0UE#sMlq4I z%K6CTTyOG<7_>u(<5A(mz`ps}+2ji&AfFQ+KjMEIGm>t=ebp$kBvqJzq Mq_Ix57W&cu0AIB!=l}o! literal 0 HcmV?d00001 diff --git a/livraison/doc/script-dir/jquery-3.5.1.min.js b/livraison/doc/script-dir/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/livraison/doc/script-dir/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
    ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
      ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
      ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/livraison/doc/script-dir/jquery-ui.structure.min.css b/livraison/doc/script-dir/jquery-ui.structure.min.css new file mode 100644 index 0000000..e880892 --- /dev/null +++ b/livraison/doc/script-dir/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.12.1 - 2018-12-06 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/livraison/doc/script.js b/livraison/doc/script.js new file mode 100644 index 0000000..bc21e45 --- /dev/null +++ b/livraison/doc/script.js @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(type) { + count = 0; + for (var key in data) { + var row = document.getElementById(key); + if ((data[key] & type) !== 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) { + var firstRow = document.getElementById(Object.keys(data)[0]); + var table = firstRow.closest('table'); + for (var value in tabs) { + var tab = document.getElementById(tabs[value][0]); + if (value == type) { + tab.className = activeTableTab; + tab.innerHTML = tabs[value][1]; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + table.setAttribute('aria-labelledby', tabs[value][0]); + } + else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + tab.setAttribute('onclick', "show("+ value + ")"); + tab.innerHTML = tabs[value][1]; + } + } +} + +function switchTab(e) { + if (e.keyCode == 37 || e.keyCode == 38) { + $("[aria-selected=true]").prev().click().focus(); + e.preventDefault(); + } + if (e.keyCode == 39 || e.keyCode == 40) { + $("[aria-selected=true]").next().click().focus(); + e.preventDefault(); + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} diff --git a/livraison/doc/search.js b/livraison/doc/search.js new file mode 100644 index 0000000..246cfd7 --- /dev/null +++ b/livraison/doc/search.js @@ -0,0 +1,378 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Types"; +var catMembers = "Members"; +var catSearchTags = "SearchTags"; +var highlight = "$&"; +var searchPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MAX_RESULTS_PER_CATEGORY = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher) { + var escapedItem = escapeHtml(item); + return escapedItem.replace(matcher, highlight); +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + return urlPrefix; + } + return urlPrefix; +} +function makeCamelCaseRegex(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + $("#search").val(''); + $("#search").prop("disabled", false); + $("#reset").prop("disabled", false); + $("#search").val(watermark).addClass('watermark'); + $("#search").blur(function() { + if ($(this).val().length == 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + $("#search").on('click keydown paste', function() { + if ($(this).val() == watermark) { + $(this).val('').removeClass('watermark'); + } + }); + $("#reset").click(function() { + $("#search").val(''); + $("#search").focus(); + }); + $("#search").focus(); + $("#search")[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
    • " + item.category + "
    • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher) + : getHighlightedText(item.l, matcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher) + : getHighlightedText(item.c + "." + item.l, matcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher); + } else { + label = item.l; + } + var li = $("
    • ").appendTo(ul); + var div = $("
      ").appendTo(li); + if (item.category === catSearchTags) { + if (item.d) { + div.html(label + " (" + item.h + ")
      " + + item.d + "
      "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + var delta = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index - 1] || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input)) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var endOfName = leftParen > -1 ? leftParen : input.length; + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + var newResults = []; + + searchPattern = makeCamelCaseRegex(request.term); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var boundaryMatcher = createMatcher("\\b" + searchPattern, ""); + + function concatResults(a1, a2) { + a2.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }); + a1 = a1.concat(a2.map(function(e) { return e.item; })); + a2.length = 0; + return a1; + } + + if (moduleSearchIndex) { + $.each(moduleSearchIndex, function(index, item) { + item.category = catModules; + var ranking = rankMatch(boundaryMatcher.exec(item.l), catModules); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ ranking: ranking, item: item }); + } + return newResults.length < MAX_RESULTS_PER_CATEGORY; + }); + result = concatResults(result, newResults); + } + if (packageSearchIndex) { + $.each(packageSearchIndex, function(index, item) { + item.category = catPackages; + var name = (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) + : item.l; + var ranking = rankMatch(boundaryMatcher.exec(name), catPackages); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ ranking: ranking, item: item }); + } + return newResults.length < MAX_RESULTS_PER_CATEGORY; + }); + result = concatResults(result, newResults); + } + if (typeSearchIndex) { + $.each(typeSearchIndex, function(index, item) { + item.category = catTypes; + var name = request.term.indexOf(".") > -1 + ? item.p + "." + item.l + : item.l; + var ranking = rankMatch(camelCaseMatcher.exec(name), catTypes); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ ranking: ranking, item: item }); + } + return newResults.length < MAX_RESULTS_PER_CATEGORY; + }); + result = concatResults(result, newResults); + } + if (memberSearchIndex) { + $.each(memberSearchIndex, function(index, item) { + item.category = catMembers; + var name = request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l + : item.l; + var ranking = rankMatch(camelCaseMatcher.exec(name), catMembers); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ ranking: ranking, item: item }); + } + return newResults.length < MAX_RESULTS_PER_CATEGORY; + }); + result = concatResults(result, newResults); + } + if (tagSearchIndex) { + $.each(tagSearchIndex, function(index, item) { + item.category = catSearchTags; + var ranking = rankMatch(boundaryMatcher.exec(item.l), catSearchTags); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ ranking: ranking, item: item }); + } + return newResults.length < MAX_RESULTS_PER_CATEGORY; + }); + result = concatResults(result, newResults); + } + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search").focus(); + } + } + }); +}); diff --git a/livraison/doc/stylesheet.css b/livraison/doc/stylesheet.css new file mode 100644 index 0000000..79a9d97 --- /dev/null +++ b/livraison/doc/stylesheet.css @@ -0,0 +1,792 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.about-language { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottom-nav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list, ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited, .bottom-nav a:link, .bottom-nav a:active, .bottom-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover, .bottom-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* + * Styles for tables. + */ +.overview-summary table, .member-summary table, .type-summary table, .use-summary table, .constants-summary table, .deprecated-summary table, +.requires-summary table, .packages-summary table, .provides-summary table, .uses-summary table, .system-properties-summary table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overview-summary table, .member-summary table, .requires-summary table, .packages-summary table, +.provides-summary table, .uses-summary table, .system-properties-summary table { + padding:0px; +} +.overview-summary caption, .member-summary caption, .type-summary caption, +.use-summary caption, .constants-summary caption, .deprecated-summary caption, +.requires-summary caption, .packages-summary caption, .provides-summary caption, +.uses-summary caption, .system-properties-summary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.constants-summary caption a:link, .constants-summary caption a:visited, +.use-summary caption a:link, .use-summary caption a:visited { + color:#1f389c; +} +.overview-summary caption a:link, .member-summary caption a:link, .type-summary caption a:link, +.deprecated-summary caption a:link, +.requires-summary caption a:link, .packages-summary caption a:link, .provides-summary caption a:link, +.uses-summary caption a:link, +.overview-summary caption a:hover, .member-summary caption a:hover, .type-summary caption a:hover, +.use-summary caption a:hover, .constants-summary caption a:hover, .deprecated-summary caption a:hover, +.requires-summary caption a:hover, .packages-summary caption a:hover, .provides-summary caption a:hover, +.uses-summary caption a:hover, +.overview-summary caption a:active, .member-summary caption a:active, .type-summary caption a:active, +.use-summary caption a:active, .constants-summary caption a:active, .deprecated-summary caption a:active, +.requires-summary caption a:active, .packages-summary caption a:active, .provides-summary caption a:active, +.uses-summary caption a:active, +.overview-summary caption a:visited, .member-summary caption a:visited, .type-summary caption a:visited, +.deprecated-summary caption a:visited, +.requires-summary caption a:visited, .packages-summary caption a:visited, .provides-summary caption a:visited, +.uses-summary caption a:visited { + color:#FFFFFF; +} +.overview-summary caption span, .member-summary caption span, .type-summary caption span, +.use-summary caption span, .constants-summary caption span, .deprecated-summary caption span, +.requires-summary caption span, .packages-summary caption span, .provides-summary caption span, +.uses-summary caption span, .system-properties-summary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} + +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} + +.row-color th, +.alt-color th { + font-weight:normal; +} +.overview-summary td, .member-summary td, .type-summary td, +.use-summary td, .constants-summary td, .deprecated-summary td, +.requires-summary td, .packages-summary td, .provides-summary td, +.uses-summary td, .system-properties-summary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.col-first, th.col-second, th.col-last, th.col-constructor-name, th.col-deprecated-item-name, .use-summary th, +.constants-summary th, .packages-summary th, td.col-first, td.col-second, td.col-last, .use-summary td, +.constants-summary td, .system-properties-summary th { + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.col-first, th.col-second, th.col-last, th.col-constructor-name, th.col-deprecated-item-name, .constants-summary th, +.packages-summary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.col-first, th.col-first { + font-size:13px; +} +td.col-second, th.col-second, td.col-last, th.col-constructor-name, th.col-deprecated-item-name, th.col-last { + font-size:13px; +} +.constants-summary th, .packages-summary th { + font-size:13px; +} +.provides-summary th.col-first, .provides-summary th.col-last, .provides-summary td.col-first, +.provides-summary td.col-last { + white-space:normal; + font-size:13px; +} +.overview-summary td.col-first, .overview-summary th.col-first, +.requires-summary td.col-first, .requires-summary th.col-first, +.packages-summary td.col-first, .packages-summary td.col-second, .packages-summary th.col-first, .packages-summary th, +.uses-summary td.col-first, .uses-summary th.col-first, +.provides-summary td.col-first, .provides-summary th.col-first, +.member-summary td.col-first, .member-summary th.col-first, +.member-summary td.col-second, .member-summary th.col-second, .member-summary th.col-constructor-name, +.type-summary td.col-first, .type-summary th.col-first { + vertical-align:top; +} +.packages-summary th.col-last, .packages-summary td.col-last { + white-space:normal; +} +td.col-first a:link, td.col-first a:visited, +td.col-second a:link, td.col-second a:visited, +th.col-first a:link, th.col-first a:visited, +th.col-second a:link, th.col-second a:visited, +th.col-constructor-name a:link, th.col-constructor-name a:visited, +th.col-deprecated-item-name a:link, th.col-deprecated-item-name a:visited, +.constant-values-container td a:link, .constant-values-container td a:visited, +.all-classes-container td a:link, .all-classes-container td a:visited, +.all-packages-container td a:link, .all-packages-container td a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.alt-color, .alt-color th { + background-color:#FFFFFF; +} +.row-color, .row-color th { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.description pre { + margin-top:0; +} +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +td.col-last div { + padding-top:0px; +} +td.col-last a { + padding-bottom:3px; +} +div.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +div.member-signature span.annotations { + white-space: pre-wrap; +} +div.member-signature span.type-parameters-long, +div.member-signature span.parameters, +div.member-signature span.exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +div.member-signature span.type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .interface-name { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment, div.block div.block span.emphasized-phrase, +div.block div.block span.interface-name { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +#search { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} diff --git a/livraison/doc/tag-search-index.js b/livraison/doc/tag-search-index.js new file mode 100644 index 0000000..0367dae --- /dev/null +++ b/livraison/doc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/livraison/doc/type-search-index.js b/livraison/doc/type-search-index.js new file mode 100644 index 0000000..d394da7 --- /dev/null +++ b/livraison/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"p":"battleship.model.player","l":"AbstractPlayer"},{"p":"battleship.view","l":"AbstractView"},{"l":"All Classes","u":"allclasses-index.html"},{"p":"battleship.model.player","l":"Computer"},{"p":"battleship.model","l":"Direction"},{"p":"battleship.view","l":"Window.Draw"},{"p":"battleship.model","l":"Game"},{"p":"battleship.model.player","l":"Human"},{"p":"battleship","l":"Main"},{"p":"battleship.utils","l":"Pair"},{"p":"battleship.model.player","l":"Player"},{"p":"battleship.model.player","l":"Random"},{"p":"battleship.model","l":"Ship"},{"p":"battleship.view","l":"Terminal"},{"p":"battleship.control","l":"TerminalKeyboardListener"},{"p":"battleship.utils","l":"Triplet"},{"p":"battleship.view","l":"View"},{"p":"battleship.view","l":"Window"},{"p":"battleship.control","l":"WindowKeyboardListener"},{"p":"battleship.view","l":"WindowListener"},{"p":"battleship.control","l":"WindowMouseListener"}];updateSearchResults(); \ No newline at end of file diff --git a/livraison/rapport/rapport.pdf b/livraison/rapport/rapport.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1d8ef8fe858b5e9a75c2f9fa6829d8384872c2e8 GIT binary patch literal 463104 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
      %SmS?#~znzbi4HJ&Wd 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 z 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%0A95Z=`}`26}3&)W?m^(H-6$xh)d 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

      WBmn@uqG!|1$Cr^5BV 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

      *SwnW!{hH&;?5?!)Q9%8$bl{&rC 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�PCkN@KzFJLhZ2`R|4ATjb$f3bNw*hLrD*kD4W>+D`=3d+ zNGU|BCSf0^3=5qccVMN2f43H&%9?_FQEfGW=Ob2YXOkkDY zL2hC;Ox#(0P zr>vx=m?c4m^)(Y<1iKwp%v!ngrhX-+Y87a*9wU6mJI1cBC$aKgs3~7Yg{Guy?#?5v z7|G*8?SD4xK)xi|91J;-;c+&Q5AR@Q$5YAY`<}xh*(7;{?)8gsbGQxy@!ZL|&GG~J z_cE%*Je)~ZmvnIBJIVZYPT4J_LbdYjD_B&=rAh=&DKRveK&lfiD=!5v`sMb|ers+lgJkWW6!S4i2S z_8+)Xo${+oLW#wRJQ?N(0^yDbw8rDTg)8QNYzMdd{bEr!RG)m}2vErb5F;~=(4wpl2hbz1coCvql3C71E{8xN}wtJsJlW-kkd6nX#zbGQsYrp z0H9WlL}7Xskn%ar9aH*@cwP3wMI?rfTjlp+nO7&!XX5HcwciEHS-rY`!p+?|{L@g~ z7lv~rKBE?dXedM7>Ci9v#5JDTVbC2QoX60kp=)h|*tLfd(Dxr;tDEY0RBqTL=v&u3 zE#SZFG4iZ3DXsHt(Gs}#z*M}t=N#JfPHZemjzHIshu_>pm0@RG;i2;aovJ{{26th8 zokGd1LuYqIPZUSfNS=n8rZb>53dbEYNuYYhG5#Bmho@AHBBrw zit4qe_z*nJ9qgVMlp4DWwX9PAM~efF_cyJ}GO6}==6k_h|BE#dEh9wG!8w9zMTFKR z8Nx=Ikl;NzA@XE&Pv}`B(@gNA#PLB^YPcE@63Qw{nQHkkitH~hy(u9n;O)eqD22u2 z0zL&EW9LD(I3DanKj5Es)!r8s`zcR6++AP?I>J8k9cW#!h3fJ;-ewq=Q(<*_MiPhj z5C<)3l}GAXd{rM2%Slf$!pw=j6C6k75E%@?xkJt(Zh0!T5RohEE3T znB5bc-|=p)cx)I!>2&qx;CP4d?4HTMCr%US)BYu@EIvsn=#>v!RM2R}`S$d!AL% zhy!t?9j$-%zq+M`eC2EQc$8bBr2qrq+`Ei>kW_sq^Tm(q#q$3gD%gTFGb+Fq*L6fj}nhU+r;a0bjj=Ykq z7voI1#CgXl9fOpKp^Ea*butl=2}xkq1?;ZM!ubt5qS7F)4a0&Mq_KX+x^12HEev2Q zwQ`zmd9K&+DucmGGf2xDN^%r}Oi}S<_yvkroJ%732%F+$9aAh&#U`B#xhe5Ffr;LN z{>4gW%e>XsUZoL(opWQi>wMv*2a}#O6W3+yZCzPjJSaG#4LaUmZ`o5u!rVx9vC8BH@JUfF{Rq~7@G``yo%#}rb{&KxuQqxm;eT19+D9dQfI_IN0q*&~ zEAoQzjfHYga+6eJT|4%FC|e&*{B~?4Ak_;*l$h}|#=6t}lwobxE*9c@wO7?^Zm?oG zw43`}8rF>xnax+s^913#VMcH5-wJfauOc!_sdVc!(d|Kd@ zLFj7Zby7;!;V4zE%;NN_UkH+A3Q@WiuUMiO;69&cZTw_*@9ggtC|p%4s@fEi8i)Yt zZUO!21NeXif8@IDcecPkDMVKUn4m~fw*dW+#3m6FP>B*^?ZdXuylb8t_EUkyXu&?C z*pGx%`w28{QzccB{G10TQorcI>{qwH8jm?l7uA$|vON#1p?EfR&EJh4av}kUZC104 z3^LgBq4wN&Rd?u&=-8d%#H=MaDp>89E2~B3+QV@SGF=KQEaMw46QQq7}RJVVr_SKwJ)CyMkZ*iMYMzeDiUOYwz&r*?R}pE-sC zN5df;n@-kZVrph#Y%WRe;bCB!(ZJ!+et_ubTe4g34Zph4c!(FDY;Fm26Ofuzwr_0= zPm_1+$LOPm(4}H!+{i@E#4k!U?_@_-bngYlqbWJ?54MLbZ$eWjg4)Mo6xQ7s00oK+ zm)S1Suho>GAE)?UN##WPCt;26pw=PpFsI+t=Ck8_#du zq1Y9a(pd%7@tdob@K$jC00s>7e*5FMA9a@NQvwR`uQi;v(!!6Prq~A^^(5u~BV)y0 zo(2GlNBZ>!iX85p<`Vp2A|&2}YSt}OCs4c$3X$NrX)=OU9~Gukd)W_PDI!`n$K6Wh zKbx&R?!_{Lff$On?^nHBphjL7&7Y};&lP}ULH4I*$6B|1Vt4oM%t1O@9(#7^Y@g2t zp)}@Z2(aOnFRupFljP*KRJB=p-}*g)#ffsHGwokbmeo9c3LMSkbPj}OAFPAu9zeODYa)qnLhD|hC937I86TL)AG)g*bc?WahJ z(Kk)4%4D&eepI)OCW>c$sPNuH+ ziZz3Ppbl|)=W6@$SGj_PmTu*{R^<;Swcq02F_4&5 zXq`x<`tn&!xqzap@sMUR&2)>a#Gn5|lN-xq|Hqg7~^ArNo3R#$tnl zDD1@!Pm0@wx1~1nm2e*(=D=+6XgQNQiUc~Y^d8t%jn-m09gTj~S6Q>$+en1Lb(xrzC58mS9b~<;8qLOQZG(|5)F@M1<2%Zn zLFP9-(f)MyTLt34h-O~|95|mN3ZX-caIX<7a0E8@J_+tZ3*J1i5(ZbUC)u=bFs^J) zr`cGk**gp#)TiW3rQD=gQ=LiyO%?(%s90Zqu`wy>7t?2BXinGRM5{173{n<(b=Sb7 zrLWk~g@sz&BFoN%`5kIK-g=;&WbM0D5(0Cg5Lts-j~KOU><>}W<{ih%cRadpZVKVZ zMkU{q8i#_K=o2`uXR$Jr$9ybx5yFG6kdlhw;%Rgo6|HJ0_s=aKHfE>BD$x-FG4vcP&c7f3W zFl97_6+=S<0|3TlrlG8;C!U|*7@Sobp2r*qRRGTfNDh1j5F-OX1_makp%hr3-5pvO zoZiM1FqHYQCl#34oF5(>9YoCk59n}aWoQGp@964^>fq{B;Oufx^hGX#2?4^91q@h< zwki-%-yKw1oXrs+q$7t)0M`u4g{1|Iq7z+B8x6>WHY%V^PC(kfJd0@XlLy?tKD#=6 zsGpvF{tMf`ih6$j4bPw~&W#;VT^^aA-kl94ppvd9ieX@34HTd7PQJam5pjiYpWl%5 z)mK>r$nh6vV*AdYxbP?OXYA_o7bgNfH4eehz~Bak0XRcrV|ej5l2u$&fg5ncZ-tEh z^_Tezc>D~{2Qb2qqXZ-qQ2OW5rJ+5Axd{M>GU&$kN;fMY9#EYFIlq9GZ)0)w3{M=3 zRtiAKZH*jI-o-q>3S#lNCm@UsZ5{V#fByFp@51&SjwPtwNjQ^WgfKj?q?>CWZl$jAxm$$9yg@y|a? z)HdcuhQ?+FU~={^-um3)kw4Nu3l)a;ms##F^l|S2h~c-dsk)%4D3n_uEAUqTY4E=8 zt}pTS?+FR1(fO^=)aVpoo{6~u5Q9@g10WkFo9_?0wjrvBcz*R`5BI$+^)L62S5qLL zdmh8hc4Ic3d!4D}#J!`=;=pDE{&K?-SoP9WY(Ayp7TXpjO3)ekXNWr68#SAU-J?4L zfOvOj3U}hmjA%%M;QL|N1jR7@mT6X+(J?f`er7ex=-1jeeU~+4Qy$xx^Iz6I_u2DH zivVb)Wa@PG6BcE-k{*iVC`E8%Y%l)!mSYt(eCuIy=W#ivmi~Re@1@nT=2Lu-HSup+ z4{QB=cfRgB_F~@WDd-8{Yk0wbft>z)O3bc>;d7YavYkK z!R6FcLW8n|2PF+(tk}ewj4bVYO;|-YeB!&&k8uGrWss}&!?UB*rMOFLWhD@gGJ<#fsg&ZV`bv@0L==Hkul?Sw%5KH>DxtimL-Xf4VPW(YDc@%9w#`ibqsFz+|GHoff`qtt>v_o&HOuvin)11f3Fpm2Z%3oZAT`S)bw!k;45r@2NxQk8f`Pm^0L(FB;#(E}cH=jtk z{xG~o-lR3b;91Gs55t#h7Q#F?#X4<4r7uGXvl&;1bY&ztEfM2Yv_V3N&v08YpNU;E z^wmN}(wg+WTg0cgGc@$FgvVu(R`Co4#~h1af~Y5nLQHZjIn_aou;(hN9g}XoC_olfoQ?K6IF+l1iPBeUyq_e z2f)r3(Bpl}IHW3wEmfybr#**na9E~q&v)o}q7nvfm6W`(27wky{%HM>LIR@=V;vyc zdhXtoxD`MCczNUq&v6FR z!RPbrg5mLztO;mxPpODcbJk^}4NZ>gSbchrJC>Ar5`m}_$MT~;QJ1RxZRXKq!meVL z4s>qooh~6XGGvvx2yzhT1PZw|&N`K;ppfNX#`GnFZl<$oHR8VrpdDO$(W527 zVAh&trE*)NO4)~PyWEi#7iUCGvR~;Tj|Uq-e^@vrGMiZrqqg^dr&U9Y2x2I`lv+icKpAF9|by5l-WI? z($h$yvqV^7LI3KCE?qBdT)TU}<+CDW9ifX#)h*!hwJQcd@v078-Kcxu zE}QK2JEuvz*3nA*>Yu7R-ne)Q#=M%*BgM8_)m5=P` zSSOp{=2$A0AWM4sIfitS@WUwnNrmMaAM zbb4NN??O(ddJ;`x-CG%G{Saj|N2s=fJ=hEsc51@SxPv_PrgdlzrDvnBN;iDhx_>v` z%R3OK3u$QEjk7tfn1WPwY{i$&k|S7H$y2Y^w@(`3pXtQjzIO`J8XUXo1aT##d$hV| z&ceUw9XoPD0e09lip=t7`6Jz;Mx!2~m*?p2TMvmN!B4`6v0@WMVC=MSSJ585GI46@>30><6fZ*Bf0s%&aw@E3YK=2XhPRLmHX;UI~f}qD66?nH4vLs^|vK55oF% zKBc0$I_RJ{U1lnqMJ%F2s<`|jwt376=G_l6M@P&Sz=x*1rKx~r{qHast?COCd)fP! zhXyS28?AbXo}p#-Ptmd;P0jkxa`5*(mtAOvF_f3w!4=9HCD9-Dukru9px<5TpAe~#3#?JpQ6HE|<|3{43iM+G9LubGbf zpnnm_sqD6VKvDTs?_8om(T_FWIEVh@uqjE>On9C~KDz;2*oVvCPFQc6J45-{qNAgn zlXRGHva2N)%XCZAPczmu+3KlURO1Ye5F0{#lA+5>tq=JbwJunh>o=>ZFuSb3X$bDz z&d(__1ar(9069Cj<-+m+0+BUvR}_@!FEl+qVF>D37eJ~-liNX*S%kb;k+zCs6$AJJ z&~$?v4IiKUOdfw$^`bS`%5tBYJ+7^J5#{`VrwVzW&f}~G3 z9QI~im(iz4lID2ky#ho!AC3f@#x5gN27k>K%bX*>ZS%_7nL^hD59g;#)V&gx#J=w>7Fnr(1ttn%X%LNNKOh{s7>yZ`y|G$jS6s> zN8vKNvi0#dnQ1Zy>$5Kcqi=-3@7Ej-I^uL&u$Ue>kLK$8bgOrEcX23$#t(y(M}Tgq zD&n@ql+=)pArU~1T5m%37AbLUp4eb!Fd(rj0=I$ylLKz|mqY~phlanq_IW}6x%ccN19}VkD8B@Q z6q=@XwQZ<)e!+z@bs}Y@Ci++qLv_^9#+Sli7hf%gO*1oI1+^Fj804$L6eG1^?@JjD zuegR5d4Jo@Y{R+AZ_(L|bd9*X+O&i)KZ~Y+V{E_1HQq!Ujm&_yCOcLqIK+?c$CWILaVjal!^Qya~*9x$WWM*mLLj>OPSCa zQf1YuxD*vg`C`B`DZLv9q76NXeYb8=dEg%E8#Lt)mir5$Oaf|$U&YoHOUQS2iU{ic z^{4m{|25wsm?$I&0?47m^0v&9?=TV!uCxzk1%NRQ@2(43pZLCMvJM$nr zn=H7Fu<~Vo0H2^kbc{XgZ>&IcT2;?jeH=0D0m?-=A-J*jXN zQ!ORaD5lHi(Eq4re;aV$AJS(2A!6xC=8F-iQ~cYKMt5|eQTQ=VcW8afjZp`J*+L3H z!FzpO!lnqmJ(#j-?r#bQR%G&$(g?~OBPBKGiS*_Y%qezCod$ol=8;=gIptg2O7Mq= zcumKf!Rdd?lRD;zB7h(`(ZQn*E8MXG%8>YT$k);!bq{q(|A5h(sevJ_fYI$j+|!i% zQ-^51pO4Fcm&?o#-I-AN-TiM_t8uW?-U8Ipd|TR`<<$gw9MVM2UXFXAt-3r{7@qM- z;0e+XLF#%q1?~X-(KffWE6|e-+O85b)$XG)kKOuteYs!eQkf|MG6H?p36gPtT=jjJ z9gT1!uTx^B{CX#X@<)}WP{sjo3f9u%C$C;K~U0(fBdNowNb?qj5*>oAS; zMIA!NpTZ}Iu`jYQ&`rd#0W19CBu-_b2 z309?3TijB=i;li)s@4bJMCK&p&y9uSb zSHKdAFr%^wb^bP$q1keNa9K$;PlpKs+*nBguN8U`w_p` zh=QS)IVkhcCf!&SjY^^k^{jNDxGI_n5SUs7SA08lHzi65C)S{6(!QCa}SSK znL55SAaI+rQQFc1zF3ZLurJ#w?zM}B5iiB`|KtmyeG6=rc`QatsX8b$H!T9AEb(Ef zSIXkCm068Xi>rd^Dp;V0ll`UxPc6&Boh^q(Eqev=FC`cBvU%F6#U+dT9^~l(|EBt@ zHfR<4;_cwC51w8WTIy*4CTp*UiaFhWnQ)Kf4cO?sKP^%Iio&(s@$G#3m{P0{sL5$m z(IYL6`e=c(Bvc{0k$-b7;|)Mq}HyZQD*xY}>YN+c~jq+qP}n zNuS%*_pP5+?OH!z*ZSr+=BPaJyt<0j;LCpRM;o-ZnZFyS>{4RZcMyvS5OG~hmZ4lB zd+bPtyuj$&s=ReIG-k-6(c5k^%k`e2uCsF_Sw-z}8=nLDM#-#z|HD)u=xOZvib}9s zTXZ{!IUTA`+O%de==kB(KDY*T{_|I}*77}-zwhLVXsPU?^j^toq^z;;7)Mz$ZtF(T$NmLaviORPi>;W|DYh%lk?Y-VMTzD-)57)OS%i}Rebm5OClhy1aq zokSg1jNDCy?`-XHQU>S25`!ZAAYgYFr_mk>seps&djeZSMnD^+<}ezVgKt=)mdHrykBKqbaPJ}s z+2p`T@<(i0h(UqMqD?Y&F6^0OfH$4`1}$GcT5EEZfd;BJ74|Y~XI9qe@);GkTcIqf z*{kuDF~t($hnDVU1Q{S9%@#N4qA=T-tKpSh<(938Yyyj$gom?i711kclEsk$|0p@+ z&f_8e@2ltS9nC#uGyRkuoUnoyYga8$0AG7~Uxsh>tSz4GRy}qfC6nn~vxP>w6}&z1 z@bwa`z?B#&i?&CJLaCNX1pHS@lwqClsCt; z7cY{74c2KOt<~EGR@ar^GuSFitqcc{vi zcw>WXJl}$bNBm)@FX57Xeu?al(Gbg&C#dTDT=N3_{AAay3M1i=t!y#`+Bn?+F8UVG z9nha-?Vn5E3nkCI2u}YUksXKXlzkA==N{JJeTVeF5wQy09Q)~s)pu5yJuik2GjH** z??E;u`e13Q^cCA{AM`ha=KKz%*7rbEN}1RNG2Xr%LbMB zAH>IYxLcvKrDe%{cWh9x5MnVYrzU)2jgag+mvh_o&sd)vUYhOp%9Nb+z1UP%4M!AW zQ0wi*$YLqm*nhWt+C`#P_8sPrq4uL)FSn$^L1z^>;mlAMyeS`RtM9rC;VyYF9+8=J z)G`FbopurxCv58YL8h# z2xKk}KRQ#M@Bh|kh8c$L|4huv8ff_jQGL!wqB1i@GdAU|sN-J^bv(Jg`f6#Ues0HU zoz0H7)z!>xUtY~Gty4H7DnIh>hx?3Q&H}hk6l$*5m4jJUAZ0Y?__(yxJ#{A~CW!!S zzktsVAx1`ewF0T11(OlM7SkT zgNMcg)%F)2p5$d?BmPOvo53=`p1KecmCaMl?<2b#Gx)NAlFT{+BuO}xsx{khRwXhK z5Ijx0GPNDyp^YQO9tU4p1*{i57*@#A#b2|>R);xOsO8{^l=Mon$CERN%3ky=va5F) zW^Z5-Uy(7C@M8n(1T%dR*1%DHx=9ck3H_KSw3q}o_5D&6cV5xztNHj2`qLnUq5sl!N2`Qq>^z)3ldxge61y6e6CV_& zI}EX_=lc1I-PwD5tJmyc7?4*O{*^i4HVfYEcM{2zI*gc&z?B;C&Xnr2JuGd<>lYyj zRQASMP?X(k82?mfO?E|<$*`PFg~ifmu*~yk>PWvox5knh!)SwH2-BFH{@$QwL9iO(dS!yIAc+j6|Kd+3Xm-#x;BgLL)XsxIt_ zyyR1T57YM{FOg8G*S;V0eO~qoBy|7nDGKz#XxFNu0m3z#%O$a zXwz0MQyPZk`N;}+3)wS-N$fm2Eyt-I$;I1D%B*IJ=Ow9vpw(9w+=}DzA87HL#8Se{ zv`)G^5pF4uB0|3tfyM}Zef8k%%Q3mn$D4;~ks}Rf1Z+6#p|t`RY!p;=5npPj$6vz` zlMP6ky|7`#*?Y$J8sHUuz60@A5o2dHR-XQw2Zc-RSM}Clj|e<_Swedz&@4VtjWrkn zlM_R0VDoDt=?YS|NbC96L3)nb-SD)aic6ZHd@sEdN`*EZwE6*tCmSYWxL$g#5UfI_ zzUxqCfzP3~7A>MWZ&t-5@`dfIGD+!4TOgG9>B%KEM~=YYN1G<&ox5n0AG@y1N8u-REp2^WcJNE{*{3us3ZEd!0Q z{pK98ulta2{N>Z;S2Kuhw#Z2?nHfFQuxi# zpQ|uUP1Er?We+2Upm`rF)z+Ia2)%Lu1~rR9sk$tH)boyX<`AY-S^%!C8;`a|48`#G`E1aqk-d6!NcV zS*RnZledU1u(5-)p?qWhgpg7yxx;eXlqK(GF_uW#9``j%?6HEH#Z1}iIowtY_uhT6 z`Bh>LVRW_;f6U2Os-H1!6|VK-JhuYp{Rb?uQlzWcm^Fyl7D9b})2}sipWvKEz6p_E zk9aOHR4r)WOK!(lA8ozG>WwC2fC(}tY$X&dbXi<#n|&8p0W&^43IepBs_;OfSXl~z z?S7{yD=Mtb=%hN#st_`K0Br$gU+>ED5ySWzEAP>wp#IjaClqfWuBwZ+K);qMxqlJt z$j9JnW!>BbmRJ);R##_`%Sow0iIWFU9t^O1E-dO#_!54<{*_f6ESfYM;Dm<18gbwy z)KbJlxjj>>dA3f$yrX zHK0GYo?@@Fn?S>41Gx_Goi5oYj#1$FU&}`q8>o9_*uX!FGR-gXsfXH#d2F!JEK&Y1Fn@x4W8m{6FNvFD_ZNfGXdX>eZs8NS~%bi&sz(Z(Mx7q z&UJk$nh3LxI|`CNd8(1U^NgMb8XyTtQw!|q>ce|$$PChWq5Ttky5NINZ!Pxq6S0#I z7=Qk&c0b~iXlMDi9X(Y-#elaMV@KRy|^P@38HWF~oO53nkdh{+D zZa;+s?_9y03-bS1fP2*dY&eef@vEt;Ry=rpbdfMQ@^LbHQ2b5UDWtCaE5e%xr9@P< zjx~A8Q(MkJHb#S6dI62x=vcRJ*<@0cFs94HfVvcNMVl^=+9e%g_Oi>4f9z0y4x5>9 zwlh=r*sCqabbLwqy~t>~OWV*a>b*ZXxIs#+Dfe~nFQ#7#$XrA!xDg$`=NYObCR#uB zDG*7k_W3Qt%d)TnP z9d<%xrm7p%!IC=Z!U2ghS?kycFTAICoMZIs#T{G2?MbR|<=Lr35GsgF>qwFs zals#@KFeDlOGdmz-FzZu`TMme%E+T?RO*?&!el##jUd}c8|b8-n;~8_$@)piw9QME zkNW1-VP<)3(0md*SMrF%m{Dl_O}U@OC+=Uj-MwX?Wq3v9s0Ft-@XNabxn1#4aSUtB zDryWRP;_T>9%ZFrCB*EbC||`J7{udEKCy1#wfR%o&&lq5g^aN@l7h@M{e1Vva9nuV znQzd-(wl3fTZBjR?DatN0t*({_0_iWH9>?Kp`4tdWy0&!H}X_%@K@oEd}iv`7o8DP zm9rTE4t{prhC8Ru`KSoOii?CoR0>toAjGUSDxYni+Qk3`&Sfbljz?p zmL?X6UXAegO^(Q=X&^}t=GnjvGrlt>U}?tg$WCurfcxf|DpO_t#(ur5gs|JdPED3D z8f4pE&7}cIIu5S1gpN^jv#R5SX48P$ozgDc*Q$yx>*n9E0bXg0A*c0+X9>VzTTalj zlGNlP>381!^>WfMn;z)+y7;-T_)PU)tS*x>&ORf3Kn-{qIUS1WNOaII`Y2 z=gy>fPrF$tj4D+VNI;a-y_nf<@h9i6{YpE-n$BdLKOoWaO}NZ^EJ6MHk}#NK*b^UI z)epQQ>X8jkuzE0cscN-|Hd-Y$eYWy(vfYeL0{m({dx^Z39kfK$3?IE_yVY4!u?lWb z<<-kPY7A`i;C%TQkeN{B?!Z7K;E6X_GEkZ5FBQ0v^9$q;1Ql{x(PoKS(Rzm{uMlfC z8uNA*&p{n1{a9$Cf7=JVmjk^@#f*$A5HCVG`iqlY*_z2+MJ6F!gx=Ga^NMVq&v(L;UbsE6o{n^JnZ(#!VD(I;#qrrB3SeDL=wv_^;S2Vp#6bM zm!6sFuxZwgV!BhrhWWC!=NhVp@5bONuh5X_%369qSmbzXIyV8LQtcy;yi?6MUB!xm z4LW7fcpkoa@6d~}*R)kmbDM03&Sv68_QrT%&|xeDDd5??I0d}Mkv_^nGwg`PdOt@KiBk$iS!clS$*#sq?$Wxk`k6DnkJ1`=z!pW-|j)90yTtNWf&;5?OdBD<0931WNKDVY*pznX#C4WrA_GzbiT zA%1ALzi2tHp1Pu=GP!^Bd3(hkkWb`}h2j0*7wKTOH-rZa%F->Wba@6txf5B8-rZ2&tFT9*H8h+RVn-cZ7h7TT-D86 z`D`ilc>(Q}KC}GYdWJ++avfJj{iE_k5C_Vh!n5_hq^Yf#nZv%|8#~9+igr`Gjg}>WPRuMjAl<0w8x9Tmk!?p+Ar zPHQVV-pJ<=w8_@II#0bYZD~j#77leE`2FyOwkn1D4*eX?`ERd{98AnhzyfD;*OvV_ zi}3VswLR@S7*%#7tPF$OQp{A=EO)p&)!GXl#iAF?KeNPHuMOnRlnF{Pas{BuM?0b$ zuNG`eYF@YZBA&LY^s-+pbsOIJ|C?x!ey{SHrn;nBXE-0@1je!H)n5n#5E$5h$YW@pdRVO*aXHOn#Bs<#!_rD!6`H0H0kK-bq)Tq4D!< z%a0ThYlKp(#u^8;?r&WMucIdPlMU4hg3FB#g?aDAI3k+%*hD|yOXYpU)bQkvk6{qz z6}PE8KTopn)%$#ck!jHGm`$VJY{EQj=duzPYWRt@(eGNShtY?exnfUN6EUlFO=Ytu zjWjN@eboy+4bC7knIvIeOY1aX_nafuCRDuXByB|THUpfanUttFMfR1JbJ{~~%v8dF zRRsOpP~0DeK2)jrL7>~0#>g-?MuDMvqDBl2YwYW?TK=YGL%gbe2evp1!4vMKe@RWazub>Sdr`v6B6@5F)S|)$$l2mbadI&MFRWf6%qWTh&A-dgOXBm z>AqqZFSwxuk2Sv}D3#eFt$xd!l#1-FoFqjGZfn8Xg%sM}U9YwH_hA&FRuqmO34DDg zELH&SZMn3{8TRVVimrNDSMQ`PMw6PC1|MG@#Q75cva!C~**@zcOe(`$C%Lz{o$Azodn$ueYuMYm!6^b#M zR*Ll}SLN`dDDP5$81(Y9`3t!NA;QAnDcTbz!+Hm4va=1hLcu$Ud>SFMI2>c#Rvz&= zN#tZ<5gX0WDUv2_j-px<$(TyCuX5_1E434tgO8X(HtaAM#BrE#4_bDn?4>1$>9-j9 zg85Yv2>7iDrGHWgPM!(v7EOMVC!&y)?;WnhUHp0qvy*e8ufr+H&!oagg8m8_YiLa$ z8uXhigm5z3%@pf1yLgWfDzF|?+SKhZJ<3!pb-T7AJ~sa>zjgyOVNsM zqn+gB@9A$s>!=|Qfdw*oTE2Z37R2vJ&cAkU;jdye{zHjj!D1bedt%#5#dJcgav+-PXR~T<$<*MXo~Gv0nEckVox;%Xs;na*%Z=Lv4{WZS z<&m7!!(h7^d$zqZ=Mjx{?Y|vW9L7C?p{#@+NRo_#xajbz*LnbFsAev|2d?)(VHkOF zXO#U3gueE^{;P6$u=fmUt5*TFTvV~*eo7q)DSJWSpCL{Hc_fB>J5fEe#)l~^HNi)Z zQ3uQT4vVP|uEB8hm)nS%wlCR2>wYU_5wtY9$8NFdal+(XXksnsyB@ajLMbF5*!Qqb z$i5w4XA#9xHvbCQ=ml9t?`_@34F_+)yB|Za@uTTe?LfmO`&#Af-js9Q#0n;@E4iA< zO1OJtu6|PXCUNyuKSd*hz$lhHt{z1 z+1Ikx0b|ek4QDusO!)E>#OdNb5q;tkl$)0syd}`b3Er$7)Hnq%YN0dK6i=SdQjlkw zuR1bl?^#eHZ!_Wz{8U8r_QmWt*Gb72#5Y&FeULjP686xm>7{esRkuAZTX+@%QCJw43L20l@|rq?6|CN zM+?}3`g7=@>uHI_ zIhA@?@wY=d*G_h~(J$wq{Y{6l*~f0&OEp%*&d5*iyeOu(FDfaO2X}O4#C#$AbTe^3>dIDb!q)wzH z1qAv!pVN3PMo-(jiYh;R`?^?@>`gb*Y_Dq;WqzMA10Xv4bxd?%E|Hv_6uo5z?Ldng zV=7-gjg~$E#IW=DZC0I4)6zmG%Ui&7HHy)IZD=`?)p6tbiN{yPh@E!rW^0nfXBgKZ zwe8N7zrKA5HxQ>g2eN0)HL5#hCC${MBxlu@KzYQ*;pinEnqDJ6hL%F$Yj)Nc`aNn&I~J5RxfQYUV0xIolhX}v zz*cQs7e)B~3=r|{WnM~n8m+4%ZS$t0oAP|65$-Puy!1iQ|MevFU2Ko9aW zoE9|IhIWSi7G=A6}U{@8-LQqh?74{tE&db3Zm9qGH+FV z2p8I|%f$I&@R+^NuDxvbOX)WkB?dUdPp-<10wXw}2#b>IJJKyiBkun2mX|%hzOZ;@ z5|C8ADOXE>{0ooGo1&Lq@%1CBTts?W4cNAt?ml`?MIp6X0iMt0MwJAbbliGO)^9RS zDpd{MXF{#=5o7N6+!vcnj`?W(h|NN36o2?`NCw9!r)dM1<<09Q4L#3BCA|Ekt4z#$ zQV@6%0Fimrq<8vvG-|4*%m%6VtK+6YSP2)vUE|p&Fm_L2L@Q%~ji@i?U^%X@Vq!mX z>R^GKQmuDwM#w2Up>Pv7=e8mDVfmXkD^UY2K9(k;qPe9V#-jyTv<|LcNmeLMDfpc%ReMt)qaGbicXZD01S#)8nN5^&-p9PMp@$Z2fB;#&D``|Y zNbA*ypB-wRKxBV1Mf)|H{($RqM3vgcWiX7nRK(vwtb;eld+*NIL_naX$~ba)RKp=2 zZ`l7xPq9I{3o15cC90n?jV$*M0g*m+S4E_BakNx$#DxW{lb(Y|OfOK^xCdtbi&W2V zXXYjQ@+um}VL_iW6^Ds6)_pMYx<(JwobXwI;Rb!*ia|~DiP)(<(H}wDw)azt3DD-h zWnxPWCFN)R!^9~Rox1|Av{4AA;L!(|7ICbDkUriS9wW{a(Y)6Qq84{3uy-*<{lJNe zwY&lAhyP$F^ejR`kl%8R{-iiostx%_Un-wjqr(BA%FRg^*75TwHR7f#hMynF$f7wf zDKF(mCJs*>9#>MIhe-5LS=P0E-P|t-)#8KHZg2pSH8`8p;euuFYBcePh-icx^*LS2 zVsf$a2b^>r7fwXyFI%zIpW5f5LSFP^yh)jcj~b@hyF%^EpNrLMiMFa4G<4)E#*BVl zeq<1rss3Dh+W#rw{sO|l3~h3b94^64zvb>Cf#%mQEV|Gnh_F`cv6g57x%eW zBtLmk_?g@OS&aj`fayibumP-LC#=?Cjz z`$x>6*;iP0bbl4idx8Cw(+(&s7AQYWiqBml#*Krk%==mono;JZv70B*R{Sy07?x@y zXL6etNye2qNk zG|8Da7N(;%vNc|dBMB?c1o}L9!g90bMMv#TvGprvAh2cP^MRwjf~PMI!R{K8sJ=w5 z#@)Ge)Vc-~qLY{eTw}LG7^5d`$q>8e`OyMIO1^|>#XQO8Z`(P#3ldos!-BbA@&TY`>rCv?yh=^1&0YWwSBs00Vw)W+=dlmEY}L+jsT#V~s28 zUPxD@Q~)QpczXXFiP+m2DV20Y#eK}vW#2m~a<2(=JPv8gLPJg7TWY(~^9q%^hC@le z*k?+2-$YX@2BSAJjF%$Dk%kDeOTXs2vH^jbv}7Bv9kELUXxSX&{mjyVZI;J_^)Zk( zC8c&d)3e2@*8Pbqf;;>wqrq3ZJOWm)rNOfd`yObs${mf8F^!t1%|eWNZgG#q5qE#o zd(W>^%3Zk%ke&{AMf|Vryq^M&9|0Fr>L8??VX@jxF0l9OFW3e!kc|=)n+&hhJWq#v zrD*19{c))Hwno*X%NFf6j34xaf!%*K*o$%>z4TxTXbgj)d^ z_Bs-zRjfGIR`Lx|imX9uUp4s1@OLHy0EIud1DUML(J4mbw+%v~^{^Y&o-2Ig886Ox>1y05(~ZhYH2Uhw8zUFgTs06q=P(*r9xY9)v!Ik5-duF z@w1}sgQy$kYaJEb+}gS&lGJVFm#6@P5^LPQ-W0*yr$yZ`g7(Y~zgq@#F(PAUBu~3{ zf~#7gZr^QqgrbRW?9|O5udMvO?xd)Jw~`+%SKjrN8X?XCv{)7= zUR&pYGrT{E{VDzj#!DJJVIRGUpGF8t6Ufj_FJIOUy*vZ$!(n<7(-HsD?vwfUKBAnO z&6F2a0AAYn%Z25&i`TX4o^B=h@o*q{-3s;hda;Hk;p76vN+y1*SNEM!bjY<&B7CJp z3s(s+y2h#Cg7}g*L|EhLTxhbp$nNssm@Z>l?qxJgIC#oetNZl|qT2kFaMJ!htit`_ zK6u+!4wB8(Wa;Rs`X^dyo`tQtzYK zf-8GWW0)6r;2Hxe$!`L)kre_($W2iuU-=*W?xUQl|A)>04_I$!XbHu`LqIQPVeM?< z`0unfa5fP!F|so@`7eLZNWjj_@!t<70!C&Aj{l#{XJ-3%!N&*XF9-7)pnZpZaWnh zBr7?treeMfc#ILh-(g{0J;H~ zt^q(JBQs@>0`NzR+YKC=*@+yWnQ@w5%s;fbAR;6t1Xy5jWn*P{U=645^x%N#=-_N> zZ;z($j$IP;P*(poio#5aJ_KW+_@s|4 zI7i2$cWhV|SLaVPw_O0a-;^rYUuw*6wU64>{_9;NU>s)VzM+9NNPQ5NMu2|CpD1>V z_;OnR!(CHkv(DePA0WrCD0qSIG+``%$hjxGrpD&xzyeqV0a{Bdqth!8XMnNIOaNQ~ z02Sf*Lp?DZ8W}*MmK8Dp2X=CTv43QKp2&a5{MTQ*i(e55Zp@!zF%09EG?@~=EE*hA znk|1aDKt61b#~UKpUDmWm)kzSxC_0IpPcVjl)c+Pbq2hsh^W~gYc|~f%y`wnE_eDb^ffc8`gg!| zx=LwjJ*)lA(VraSD^IMa-xp6Yj%A^+xeO6okJicP1(sYmQ!FU9@*@CnJNGS^N(VpI z!+_+wt`Z790<$L8R@}SDI!$|DzYa4${nXdv3MRhWolbVVf}f$`Q;5^I>}E&7>&JhB ziPMLIPwspwDd4v50pt6lZZ~w0yDQ6)epoX93btMSM2{7GM?WFb7>wzRy6&NWP(_q8 zMlr4+ruN9xx$# zUw+LLwFp6<8wSez^h}2DM<#e(8K_1lPZjoe1;+2CMK`vfG2TA(a`8t8fT%aepJ&0Jff2;Rt{Mm?pU{FlUnJh${g9jpRw#h(_V zQf@wvRLD^l9*>nwueb&BIzq>vKpjDwr)UN;td5r!bLp1Ko4*bP6 zj107Jh}d7;3EjoVgoUj9kJD$ov8eRHHFVzBIE3OC#zKw$Dk`fa=1ZXV9pGS@`#&xzNualzna%AdYfR z*4NCv^P-wrMTechTo4-dR(A;rIJK<KA4d~W@ny4cg3k2ju=6{Pe4Tg z@9i~rv|Y9WbwCh0{a&USXR zEoTKZNrN$kd8+RpQrR$>$bEQlsG+!9h4u#(^WwH^K%kQ0AE)D4aAitvvF_${v>S64 z^)A^l`4bd&7tQ^iaz>I&Ib^SB!EH$e8n$(a2J3Fx%Y{!ZX7w{`l^5)6|wbGR` z{jhuNkZfW{2#6XBmR=X*T38btbZ}Tfg*h2TZKhuFUk+|Ka)v4n^f=D-Si?sW=ibtgz;%*^GixfIb zP1Km#Vae0z0cN&!BSxTfITT+n-#|iBowhSaaA(p^elTNH7LgBp4jbCI6FhT+kLo6D z!KYocAqcrj5{uR}J?K#%nj@F*OCzUBNVjW@H__D}C%JUR z#>_b%k5EP~MtThLxD_nbPO@>P6!somtqDjdS#N9+x;d>higEZkgpa>%yDyW}7@Z$& z?ZVL?PF3e?XZ3Ep@ma>GnJrjwdsg#JKH;IEp&#CZZl}qJmduDIP(Jmdt~Z zKN`Hzp`bJW_9)`qvcj~T?X#7a7;9UA7!Gd+z}y|I941UJ#{e-TEDOMOWqxa%PPs+j z;R7%15|}r{%jNQ?muXlGl~yxT**wRvtdT{99dkVDdsvk>l~SkX)Z`J^^NSU2FGK@n zVb~f?9Ac-fYE0k}+m^9DsVD zR!erzQS73~1y#>P79j{EyyM*C7O!0xb&qJ>!c&__=&hXk5>%_VmpVu3U53`ID}1Qd zYZ65NxG(&Zgm8s1gn&*1+vyhyR@1j3)7s#7VkFpm7*zb2R!KEv+l)kb;;Z+I=IPddH8)eAy;PFX$m&~wV zUz_{qM|A-At9llh;MQQ}vre}{c$4r)+K|!eg+pyS5tD?VDGXmwmCYNYn4y~MFwRvR zYtAJwwocBlUCB5!ZCEYOt?PPg#u_<9Eo3>iXF3&3!3}{FWvo5~bbF-(sXM=wjrp%^ z>v4~%Tr)knX9tKS`awzS@7|fji)ZZ6sI8IKt2nG`kP3qh^l1h9x@@rC7G&-$e(;p>Y;K70$4SZ?!_Fl`kFVo#mJM`jydgEgWMpsA z;C1eEI$y#yt=eo*A>>;~9~g+}J;1}SK3oYW+-#OnB^v?GI``sOOl7(-L;+Br%k%sj z1FhclH)Zq(!QafPt@gg*QRTv#{Hbj8$Vse3&$$ZnD^859mEvvD_*^gXcrmJE%fod& zz0qp;(+4^;M?F1DMJ(-(uF|8-V9*LUT!#8Y)RON-;a;jwbv2g>%uJzwLK=Y9ULH=O zxK-jK2CpzL`=vQA5peBH(LXvWf5FX6z;B<0H-7tZHxvH0#mCQb1{)W8a}WuU!M|wl zlnrN=?Vw1QIVB+aAqbCtOcJRt)_2xD5+x7luPT4kgMq37d)0A=WGRw)hAFyj^s;k^ z6<_+4rUfShEgSQ5;^r_{UEXl2f@o1rF{c8*R1D^0U-pHPpV*Sr&<&v13ARrJ&O<Tm_MKZ zdfSj!6xqdR0ivBqB~mNA<-$`VkR1ZdL>dI`tiQIX@BnT7dYWP}`X|k*%-O0;T!mVT z#@*jn&S6Xm6z21980yZUU5*(a9@8R#fL5cT{&f>Z$|Ujw;h#JObT$(#oWf#unLPe# zJ+R}6xy0-Submi&hN4E9ES+@5)qK?^rx_gy0cJ7}N-4Q6TYf0vePaX5_kR^IX_JH{ z+rKl)Az@3aPf29OHGwB~nmy=3I;&b6`_ynn!aF6MJnCpW&CiF<%*usqXtSm=!Ms(K zIat0Gqd`A-HJ4ncgmtXykYFFz1aE5MjWIZ*^KgQ66hqG4)h~mo()QMmqpNIypKx{c z!1+VZls)7-^?30<%z@x6u7tU>ovX9-A(zfjCy~M8nuH1(AY)ehr`b;C%l9x&zHeum z;ct&DSbBo~h#*%v^Lc+2(LYTVb?w#-lH1s{bN9^W-hxEREhQOsYANxXDxyRG;Q{d_ z)E3KseQx-jUu2)E=eJ)vGY$=SJjy0omuLgy$eCUXF@E2QqAxKjc8}|Wo4;-Y)TQ#& zpcU7(2s*SIb3YFuq(k;*Um@01>OZC&ET^%NixN~kz7p5o1OyS70hH zZ@n(3aE6DZ63>0(A6+FaJ&GSu(?EER(*}$tia>2|mOtTsa{hF7vVvJRbZ_7-88jsC zCydZ-(0Bd98;ReV9Ef-XJ8wo>Gs9xs9J;cTZu!4=+IcQmt5^;MeBg* ziJbIiO_U9LGu;fn>HM5yM;`j^fVBxX(y}h_=fKA6$(`0PS4G|03+Bi@r?2VA5TZys z7g3Aysi8NK!O8(Ly}vo>q>iYAMF z;Vt$}BB9{50_2E}e%YBaddc1WprTiS=$@pCpW}J$->u{uOLp#id<-y2U+u&d&GLmf zvMu}Qbh_+{vN2MrI&C;}a?HAz+%aIB`U)gO4#=PzG@!XtaRG*A=#v;ZUgF(rd4rLl zolU9f!*XU1QMxgxN?=Oi+;jeB4$iU2t*#pTa<+(j9|bIN-Zf;%NGvem@hl_Z(R$@b zsZBXZZ*I7B|2tLec@@(5;H%s;f{@t9AkMI&yJ_;h!&+xF;*o}>!jr@v1Nt@6s2`YQ zDVOeh4<@t{W}!2M>Y0Ew-_7)S87DMlJ=o9z2`D>nD9Vfd0+(5X=DuDGe>%*c@HVL| zMs&pnjnW>VBF$L6FJ{Tm?%ssU4?;@cVa=Va))E>a9v1}5ZoOPkI>^GzYW%7{yQ~+Y zW(ns;2t@6HKT}MV+xQ z4cOHC$H0anPcq>gCgX_kA_+v;`vcIWN+y1ka1>R)eBCGfcr z^7QhKeK2pfQXO6<;sUlOqVaQfB5Vef%17qyHkK?m&o#7a zYw592O`$6dLamwnpQ&Dn3U#@}3aViERsp#2`1}z1#dEDAQQKCXS}h8qR7C4aWnfqO zhRU^f@i5Xu+MU~rpzvhXc6~O`aoa);5l@kv3nI$$OVXcY#^7-2I zj@y|&t#eFcU`)O~;>2Ivx&?~`kC9H@@^93cGzI1fiu?XwE|@+m(Ggx3BR|5rp5@{> zb2LTtNd6Vy0dkf&&FUJ?yeJ4#;%0D5(|hUULy&oc6S){~vxw)o%5IK@34U`S8?ISo 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 literal 0 HcmV?d00001 diff --git a/livraison/src/battleship/Main.java b/livraison/src/battleship/Main.java new file mode 100644 index 0000000..76f53b6 --- /dev/null +++ b/livraison/src/battleship/Main.java @@ -0,0 +1,86 @@ +package battleship; + +import battleship.model.Game; +import battleship.model.player.AbstractPlayer; +import battleship.model.player.Human; +import battleship.model.player.Player; +import battleship.model.player.Random; +import battleship.utils.Pair; +import battleship.view.Terminal; +import battleship.view.View; +import battleship.view.Window; + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.NoSuchElementException; + +/** + * Main class + * Given arguments are importants, please give attention to {@link Main#parseArgs(String[])} about this + */ +public class Main { + + public static View view; + public static Game game; + + public static void main(String[] args) { + try { + parseArgs(args); + } catch (NoSuchElementException e) { + System.out.println("Pas assez d'arguments, veuillez donner des arguments de cette forme:"); + System.out.println("java -jar battleship [nogui]"); + System.out.println(": paramètre obligatoire"); + System.out.println("[param]: paramètre optionnel"); + System.exit(2); + } catch (InstantiationException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) { + e.printStackTrace(); + System.exit(1); + } + game.Play(view); + } + + /** + *

      Read and parse launch arguments.
      + * launch arguments need to follow this syntax:

      + *

      {@code [nogui]}

      + *

      <arg> -> mandatory parameter
      + * [arg] -> optional parameter
      + * player_instance values are: "Human" or "Random"
      + * nogui to launch the game in terminal or nothing to launch in graphical interface

      + * @param args launch arguments + * @throws NoSuchMethodException reflect exception + * @throws IllegalAccessException reflect exception + * @throws InvocationTargetException reflect exception + * @throws InstantiationException reflect exception + */ + private static void parseArgs(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { + Player[] players = new Player[2]; + ArrayList>> playerClass = new ArrayList<>(2); + playerClass.add(new Pair<>("human", Human.class)); + playerClass.add(new Pair<>("random", Random.class)); + if(args.length >= 2) { + for(int i = 0; i < 2; ++i) { + for (Pair> pair : playerClass) { + if(args[i].equalsIgnoreCase(pair.getLeft())) { + players[i] = pair.getRight().getDeclaredConstructor().newInstance(); + } + } + } + if(players[0] != null && players[1] != null) { + game = new Game(players); + } else + throw new IllegalArgumentException("Arguments incorrects: " + Arrays.toString(args)); + if(args.length >= 3) { + // arguments > 3 ignorés + if(args[2].equalsIgnoreCase("nogui")) + view = new Terminal(game); + else + view = new Window(game); + } else { + view = new Window(game); + } + } else + throw new NoSuchElementException("Pas assez d'arguments"); + } +} diff --git a/livraison/src/battleship/control/TerminalKeyboardListener.java b/livraison/src/battleship/control/TerminalKeyboardListener.java new file mode 100644 index 0000000..00e56fa --- /dev/null +++ b/livraison/src/battleship/control/TerminalKeyboardListener.java @@ -0,0 +1,16 @@ +package battleship.control; + +import java.util.Scanner; + +public class TerminalKeyboardListener { + + private final Scanner scanner; + + public TerminalKeyboardListener(Scanner scanner) { + this.scanner = scanner; + } + + public String keyboardInput() { + return scanner.next(); + } +} diff --git a/livraison/src/battleship/control/WindowKeyboardListener.java b/livraison/src/battleship/control/WindowKeyboardListener.java new file mode 100644 index 0000000..04555a9 --- /dev/null +++ b/livraison/src/battleship/control/WindowKeyboardListener.java @@ -0,0 +1,34 @@ +package battleship.control; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +public class WindowKeyboardListener implements KeyListener { + + public boolean requestInput = false; + public char keyTyped = KeyEvent.CHAR_UNDEFINED; + public int keyTypedArrow = KeyEvent.VK_UNDEFINED; + + @Override + public void keyTyped(KeyEvent e) { + if(requestInput) { + if(e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) + keyTyped = e.getKeyChar(); + if(e.getKeyCode() != KeyEvent.VK_UNDEFINED) { + System.out.println(e.getKeyCode()); + keyTypedArrow = e.getKeyCode(); + } + + } + } + + @Override + public void keyPressed(KeyEvent e) { + + } + + @Override + public void keyReleased(KeyEvent e) { + + } +} diff --git a/livraison/src/battleship/control/WindowMouseListener.java b/livraison/src/battleship/control/WindowMouseListener.java new file mode 100644 index 0000000..4b1c140 --- /dev/null +++ b/livraison/src/battleship/control/WindowMouseListener.java @@ -0,0 +1,58 @@ +package battleship.control; + +import battleship.utils.Pair; +import battleship.view.Window; + +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +public class WindowMouseListener implements MouseListener { + + private final Window window; + public boolean requestInput = false; + public Pair lastInput = null; + public int playerIdLastInput = 0; + + public WindowMouseListener(Window view) { + this.window = view; + } + + @Override + public void mouseClicked(MouseEvent e) { + if(requestInput) { + int x = e.getX() - 7; + int y = e.getY() - 30; + int initialHeight = window.height / 12; + int initialWidth = window.width / 23; + if(y >= initialHeight * 2 && y <= window.height) { + y -= initialHeight * 2; + if(x >= initialWidth && x <= initialWidth * 11) { + x -= initialWidth; + lastInput = new Pair<>((y + 2) / initialHeight, (x + 2) / initialWidth); + playerIdLastInput = 1; + } else if(x >= initialHeight * 13 && x <= window.width) { + x -= initialWidth * 13; + lastInput = new Pair<>((y + 2) / initialHeight, (x + 2) / initialWidth); + playerIdLastInput = 2; + } + } + } + } + + @Override + public void mousePressed(MouseEvent e) { + + } + + @Override + public void mouseReleased(MouseEvent e) { + + } + + @Override + public void mouseEntered(MouseEvent ignored) {} + + @Override + public void mouseExited(MouseEvent ignored) {} + +} diff --git a/livraison/src/battleship/control/package-info.java b/livraison/src/battleship/control/package-info.java new file mode 100644 index 0000000..c1cc5f0 --- /dev/null +++ b/livraison/src/battleship/control/package-info.java @@ -0,0 +1,4 @@ +/** + * Contains keyboard and mouse listeners + */ +package battleship.control; \ No newline at end of file diff --git a/livraison/src/battleship/model/Direction.java b/livraison/src/battleship/model/Direction.java new file mode 100644 index 0000000..f9b63fd --- /dev/null +++ b/livraison/src/battleship/model/Direction.java @@ -0,0 +1,36 @@ +package battleship.model; + +import battleship.utils.Pair; + +import java.awt.event.KeyEvent; + +public enum Direction { + + RIGHT(new Pair<>(0, 1), "D", KeyEvent.VK_RIGHT), + LEFT(new Pair<>(0,-1), "G", KeyEvent.VK_LEFT), + UP(new Pair<>(-1,0), "H", KeyEvent.VK_UP), + DOWN(new Pair<>(1,0), "B", KeyEvent.VK_DOWN), + DEFAULT(new Pair<>(-1,-1), null, KeyEvent.VK_UNDEFINED); + + private final Pair direction; + private final String keyword; + private final int arrow; + + Direction(Pair ukPair, String keyword, int arrow) { + this.direction = ukPair; + this.keyword = keyword; + this.arrow = arrow; + } + + public Pair getDirection() { + return direction; + } + + public String getKeyword() { + return keyword; + } + + public int getArrow() { + return arrow; + } +} diff --git a/livraison/src/battleship/model/Game.java b/livraison/src/battleship/model/Game.java new file mode 100644 index 0000000..a0d52a6 --- /dev/null +++ b/livraison/src/battleship/model/Game.java @@ -0,0 +1,111 @@ +package battleship.model; + +import battleship.model.player.Player; +import battleship.utils.Pair; +import battleship.utils.Triplet; +import battleship.view.View; + +/** + * Main game class + */ +public class Game { + + public final Player[] players; + public Player currentPlayer; + + public Game(Player[] players) { + this.players = players; + this.currentPlayer = players[0]; + players[0].setId(1); + players[1].setId(2); + } + + public Player getCurrentPlayer(){ + return this.currentPlayer; + } + + public Player getOtherPlayer() { + return this.currentPlayer == players[0] ? players[1] : players[0]; + } + + public Player getOtherPlayer(Player player) { + return this.currentPlayer == player ? getOtherPlayer() : currentPlayer; + } + + public void changeCurrentPlayer(){ + currentPlayer = getOtherPlayer(); + } + + /** + * Update ship to know if they're drowned + */ + public void checkDrownedShips(){ + Player otherPlayer = getOtherPlayer(); + for(Ship ship : otherPlayer.getShips()){ + if(!ship.isDrown()) + ship.updateIsDrown(currentPlayer); + } + } + + /** + * @return player 1 if player 2' ships are drowned, or player 2 if player1' ships are drowned, null otherwise + */ + public Player getWinner(){ + Ship remainingShip = players[0].getShips().parallelStream().filter(ship -> !ship.isDrown()).findFirst().orElse(null); + if(remainingShip == null) + return players[1]; + remainingShip = players[1].getShips().parallelStream().filter(ship -> !ship.isDrown()).findFirst().orElse(null); + if(remainingShip == null) + return players[0]; + return null; + + } + + /** + * Play the selected move from current player in grid + * @param move selected player move + */ + public void move(Pair move){ + boolean bool = false; + Player otherPlayer = getOtherPlayer(); + for (Ship ship : otherPlayer.getShips()) { + for(Pair coords : ship.getFullCoords()){ + if ((coords.getRight().equals(move.getRight())) && (coords.getLeft().equals(move.getLeft()))) { + bool = true; + break; + } + } + if(bool) + break; + } + currentPlayer.addMove(new Triplet<>(move, bool)); + } + + /** + * game loop + * @param view can be {@link battleship.view.Terminal} or {@link battleship.view.Window} + */ + public void Play(View view) { + try { + view.setShips(players[0]); + changeCurrentPlayer(); + view.setShips(players[1]); + changeCurrentPlayer(); + Player winner = null; + while (winner == null) { + System.out.println("Au tour du joueur " + currentPlayer.getId()); + view.displayBoard(); + move(view.chooseMove(currentPlayer)); + checkDrownedShips(); + changeCurrentPlayer(); + winner = getWinner(); + } + view.displayWinner(winner); + } catch (InterruptedException e) { + System.out.println("Une erreur est survenue"); + e.printStackTrace(); + System.exit(1); + } + + } +} diff --git a/livraison/src/battleship/model/Ship.java b/livraison/src/battleship/model/Ship.java new file mode 100644 index 0000000..00fcf76 --- /dev/null +++ b/livraison/src/battleship/model/Ship.java @@ -0,0 +1,107 @@ +package battleship.model; + +import battleship.model.player.Player; +import battleship.utils.Pair; +import battleship.utils.Triplet; + +/** + * player's ship class + */ +public class Ship { + + /** + * base coordinates of the ship + */ + private Pair coords; + /** + * ship size + */ + private final int size; + /** + * ship full coordinates calculate thank to base coordinates, direction and size + */ + final Pair[] fullCoords; + private Direction direction; + /** + * if true the ship is destroyed + */ + private boolean isDrown; + + @SuppressWarnings("unchecked") + public Ship(Pair coords, int size, Direction direction) { + this.coords = coords; + this.size = size; + this.fullCoords = new Pair[this.size]; + this.direction = direction; + isDrown = false; + recalculateFullCoords(); + } + + public void setDirection(Direction d){ + this.direction = d; + } + + public void setCoords(Pair c){ + this.coords = c; + } + + /** + * set {@link Ship#isDrown} to true + */ + public void setDrown(){ + isDrown = true; + } + + public boolean isDrown(){ + return isDrown; + } + + public int getSize(){ + return this.size; + } + + public Direction getDirection(){ + return this.direction; + } + + public Pair getCoords(){ + return this.coords; + } + + /** + * recalculate all coords based on this base coords, direction and size + */ + public void recalculateFullCoords() { + for(int i = 0; i < size; ++i){ + fullCoords[i] = new Pair<>(coords.getLeft() + i * direction.getDirection().getLeft(),coords.getRight() + i * direction.getDirection().getRight()); + } + } + + public Pair[] getFullCoords(){ + return fullCoords; + } + + @Override + public String toString() { + return super.toString() + ", coords=" + coords.toString() + ", size=" + size + ", direction=" + direction.toString(); + } + + /** + * update value {@link Ship#isDrown} to true if {@code player} hit all of ship boxes + * @param player the opponent of this ship owner + */ + public void updateIsDrown(Player player) { + int cpt = 0; + for(Pair coords : getFullCoords()) { + for(Triplet move : player.getMoves()) { + if(move.getRight() && move.getLeft().equals(coords.getLeft()) && move.getMiddle().equals(coords.getRight())){ + ++cpt; + break; + } + } + } + if(cpt == getSize()) { + setDrown(); + } + } +} diff --git a/livraison/src/battleship/model/package-info.java b/livraison/src/battleship/model/package-info.java new file mode 100644 index 0000000..ddd86bc --- /dev/null +++ b/livraison/src/battleship/model/package-info.java @@ -0,0 +1,4 @@ +/** + * Contains all main Game classes + */ +package battleship.model; \ No newline at end of file diff --git a/livraison/src/battleship/model/player/AbstractPlayer.java b/livraison/src/battleship/model/player/AbstractPlayer.java new file mode 100644 index 0000000..11ec9c0 --- /dev/null +++ b/livraison/src/battleship/model/player/AbstractPlayer.java @@ -0,0 +1,98 @@ +package battleship.model.player; + +import battleship.model.Direction; +import battleship.model.Ship; +import battleship.utils.Pair; +import battleship.utils.Triplet; + +import java.util.ArrayList; + +/** + * Abstract player class see {@link Player} to know more about this code organisation + * @see Player + * @see Human + * @see Computer + * @see Random + */ +public abstract class AbstractPlayer implements Player { + + final ArrayList ships = new ArrayList<>(); + /** + * reference every shot on the opponent board, left and middle side of the Triplet reference the coordinates and the + * right side if this move hit or not an opponent ship + */ + final ArrayList> moves = new ArrayList<>(); + public int id; + + public boolean setShips(Ship ship) { + if(ship.getDirection() == Direction.DEFAULT) + return false; + for(Pair coords : ship.getFullCoords()) { + if(coords.getLeft() > 9 || coords.getLeft() < 0 || coords.getRight() > 9 || coords.getRight() < 0) + return false; + for(Ship ship1 : this.ships) { + for (Pair coords1 : ship1.getFullCoords()) { + if (coords1.getLeft().equals(coords.getLeft()) && coords1.getRight().equals(coords.getRight())) + return false; + } + } + } + this.ships.add(ship); + return true; + } + + /** + * add {@code move} to the {@link AbstractPlayer#moves} list + */ + public void addMove(Triplet move){ + moves.add(move); + } + + public ArrayList> validMoves() { + ArrayList> validMovesList = new ArrayList<>(); + for(int x = 0; x < 10; x++){ + for(int y = 0; y < 10; y++) { + Pair coords = new Pair<>(x,y); + if(!(moves.contains(new Triplet<>(coords, true)) || moves.contains(new Triplet<>(coords, false)))){ + validMovesList.add(new Pair<>(x,y)); + } + } + } + return validMovesList; + + } + + public boolean areValid(int x, int y){ + if(x < 0 || x > 10 || y < 0 || y > 10) + return false; + for(Triplet move : moves){ + if(move.getLeft() == x && move.getMiddle() == y) + return false; + } + return true; + } + + @Override + public void setId(int i) { + id = i; + } + + public int getId() { + return id; + } + + @Override + public String toString() { + return getClass().getSimpleName() + " " + id; + } + + @Override + public ArrayList getShips() { + return ships; + } + + @Override + public ArrayList> getMoves() { + return moves; + } +} diff --git a/livraison/src/battleship/model/player/Computer.java b/livraison/src/battleship/model/player/Computer.java new file mode 100644 index 0000000..ea9832a --- /dev/null +++ b/livraison/src/battleship/model/player/Computer.java @@ -0,0 +1,28 @@ +package battleship.model.player; + +import battleship.model.Direction; +import battleship.model.Ship; +import battleship.utils.Pair; + +import java.util.Random; + +/** + *

      Computer super class, all player object which use an algorithm to calculate coordinates to use should extend from + * this object.

      + *

      Random is the only algorithm include here but another algorithm can be easily implemented

      + */ +public abstract class Computer extends AbstractPlayer { + + public void placeShipRandomly() { + java.util.Random rand = new Random(); + for(int i : shipSize) { + Ship ship = new Ship(new Pair<>(-1, -1), i, Direction.DEFAULT); + while(!setShips(ship)) { + ship.setCoords(new Pair<>(rand.nextInt(10), rand.nextInt(10))); + ship.setDirection(Direction.values()[rand.nextInt(Direction.values().length)]); + ship.recalculateFullCoords(); + } + } + } + +} diff --git a/livraison/src/battleship/model/player/Human.java b/livraison/src/battleship/model/player/Human.java new file mode 100644 index 0000000..0a94e8d --- /dev/null +++ b/livraison/src/battleship/model/player/Human.java @@ -0,0 +1,19 @@ +package battleship.model.player; + +import battleship.utils.Pair; + +/** + * This object do nothing itself, it just an interface to know the type of player (Human or not), + * each view interact with the player with its methods + */ +public class Human extends AbstractPlayer { + + @Override + public Pair chooseMove() { + return null; + } + + @Override + public void placeShips() {} + +} diff --git a/livraison/src/battleship/model/player/Player.java b/livraison/src/battleship/model/player/Player.java new file mode 100644 index 0000000..f97f2c8 --- /dev/null +++ b/livraison/src/battleship/model/player/Player.java @@ -0,0 +1,73 @@ +package battleship.model.player; + +import battleship.model.Ship; +import battleship.utils.Pair; +import battleship.utils.Triplet; + +import java.util.ArrayList; + +/** + *

      Player interface, used as an API.

      + *

      This model (interface -> abstract class(es) -> concrete classes) prevent hard code.

      + *

      This is the only object which interact with other object
      + * Allows an outside person from the project to easily change the code or to add a view easily without modifying + * existing classes

      + * @see AbstractPlayer + * @see Computer + * @see Human + * @see Random + */ +public interface Player { + + int[] shipSize = { 5, 4, 3, 3, 2 }; + + /** + * Used by computer only + * @see Random#chooseMove() + * @return coords in its opponent grid to play a move + */ + Pair chooseMove(); + + /** + * check if ship position and direction are valides and does not overlap on other vessels + * add the ship to player {@link AbstractPlayer#ships} list and return {@code true} if valid + * {@code false} otherwise + * @param ship the ship instance we check + * @return {@code true} if ship data are valids, {@code false} otherwise + */ + boolean setShips(Ship ship); + + int getId(); + + /** + * Adds coordinates of the {@code move} in the {@link AbstractPlayer#moves} list + * @param move the move chosen by the player + */ + void addMove(Triplet move); + + + void setId(int i); + + /** + * give a list of the player possible moves, used in {@link Player#chooseMove()} + * @return a list of playable move + */ + ArrayList> validMoves(); + + /** + * Used by {@link Computer} instances to place ships + */ + void placeShips(); + + /** + * check if coordinates from {@link battleship.view.View#chooseMove(Player)}are in valids position + * @param x the x-axis of the coordinates + * @param y the y-axis of the coordinates + * @return {@code true} if valid, {@code false} otherwise + */ + boolean areValid(int x, int y); + + ArrayList getShips(); + + ArrayList> getMoves(); +} diff --git a/livraison/src/battleship/model/player/Random.java b/livraison/src/battleship/model/player/Random.java new file mode 100644 index 0000000..a6dfcfb --- /dev/null +++ b/livraison/src/battleship/model/player/Random.java @@ -0,0 +1,21 @@ +package battleship.model.player; + +import battleship.utils.Pair; + +/** + * place its ship and choose moves randomly + */ +public class Random extends Computer { + + @Override + public Pair chooseMove() { + java.util.Random rand = new java.util.Random(); + return validMoves().get(rand.nextInt(validMoves().size())); + } + + @Override + public void placeShips() { + placeShipRandomly(); + } + +} diff --git a/livraison/src/battleship/model/player/package-info.java b/livraison/src/battleship/model/player/package-info.java new file mode 100644 index 0000000..1ff58cc --- /dev/null +++ b/livraison/src/battleship/model/player/package-info.java @@ -0,0 +1,4 @@ +/** + * Contains all players classes instances and theirs super classes and interface + */ +package battleship.model.player; \ No newline at end of file diff --git a/livraison/src/battleship/package-info.java b/livraison/src/battleship/package-info.java new file mode 100644 index 0000000..e8d3bd2 --- /dev/null +++ b/livraison/src/battleship/package-info.java @@ -0,0 +1,4 @@ +/** + * Contains Main Class + */ +package battleship; \ No newline at end of file diff --git a/livraison/src/battleship/utils/Pair.java b/livraison/src/battleship/utils/Pair.java new file mode 100644 index 0000000..16de05f --- /dev/null +++ b/livraison/src/battleship/utils/Pair.java @@ -0,0 +1,53 @@ +package battleship.utils; + +import java.util.Objects; + +/** + * tuple containing 2 generic type elements + * + * @param left + * @param right + */ +public class Pair { + + private final U left; + private final K right; + + public Pair(U left, K right) { + this.left = left; + this.right = right; + } + + public U getLeft() { + return left; + } + + public K getRight() { + return right; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Pair other = (Pair) obj; + return this.left.equals(other.getLeft()) && this.right.equals(other.getRight()); + } + + @Override + public int hashCode() { + return Objects.hash(left.hashCode(), right.hashCode()); + } + + @Override + public String toString() { + return "(" + left + ", " + right + ")"; + } +} diff --git a/livraison/src/battleship/utils/Triplet.java b/livraison/src/battleship/utils/Triplet.java new file mode 100644 index 0000000..961a335 --- /dev/null +++ b/livraison/src/battleship/utils/Triplet.java @@ -0,0 +1,64 @@ +package battleship.utils; + +import java.util.Objects; + +/** + * tuple containing 3 generic type elements + * + * @param left + * @param middle + * @param right + */ +public class Triplet { + + private final U left; + private final K middle; + private final V right; + + public Triplet(U left, K middle, V right) { + this.left = left; + this.middle = middle; + this.right = right; + } + + public Triplet(Pair pair, V right) { + this(pair.getLeft(), pair.getRight(), right); + } + + public U getLeft() { + return left; + } + + public K getMiddle() { + return middle; + } + + public V getRight() { + return right; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Triplet other = (Triplet) obj; + return this.left.equals(other.getLeft()) && this.middle.equals(other.getMiddle()) && this.right.equals(other.getRight()); + } + + @Override + public int hashCode() { + return Objects.hash(left, middle, right); + } + + @Override + public String toString() { + return "(" + left + ", " + middle + ", " + right + ")"; + } +} diff --git a/livraison/src/battleship/utils/package-info.java b/livraison/src/battleship/utils/package-info.java new file mode 100644 index 0000000..abd472d --- /dev/null +++ b/livraison/src/battleship/utils/package-info.java @@ -0,0 +1,4 @@ +/** + * Utility classes + */ +package battleship.utils; \ No newline at end of file diff --git a/livraison/src/battleship/view/AbstractView.java b/livraison/src/battleship/view/AbstractView.java new file mode 100644 index 0000000..bcf2a26 --- /dev/null +++ b/livraison/src/battleship/view/AbstractView.java @@ -0,0 +1,192 @@ +package battleship.view; + +import battleship.model.Direction; +import battleship.model.Game; +import battleship.model.Ship; +import battleship.model.player.Player; +import battleship.utils.Pair; +import battleship.utils.Triplet; + +import java.util.ArrayList; + +/** + * Abstract view class + * @see View + * @see Window + * @see Terminal + */ +public abstract class AbstractView implements View { + + protected final Game game; + + public AbstractView(Game game) { + this.game = game; + } + + /** + * Used during debugging, used in terminal to display grids too + * @return all player grids + */ + @Override + public String toString() { + return toString(true); + } + + public String toString(boolean debug) { + StringBuilder chain = new StringBuilder(); + for(int u = 0; u < 2; ++u) { + Player player = game.players[u]; + ArrayList ships = game.players[u].getShips(); + chain.append("Joueur ").append(player.getId()).append(" :\n"); + chain.append("+ 0 1 2 3 4 5 6 7 8 9 +\n"); + for(int x = 0; x < 10; ++x) { + chain.append(x); + for(int y = 0; y < 10; ++y) { + Pair pair = new Pair<>(x, y); + boolean isPosition = false; + for(Ship ship : ships) { + if(isShipPosition(ship, pair)) { + isPosition = true; + int result = isPositionDrowned(game.players[u == 0 ? 1 : 0], ship, pair); + if(result == 1) { + chain.append(" X"); + } else if (result == 2){ + chain.append(" !"); + } else if(debug || game.getCurrentPlayer() == player) { + chain.append(" ."); + } else { + chain.append(" _"); + } + break; + } + } + if(!isPosition) { + if(isPositionDrowned(game.players[u == 0 ? 1 : 0], pair) == 2) { + chain.append(" ?"); + } else { + chain.append(" _"); + } + } + + } + chain.append(" |\n"); + } + chain.append("+ - - - - - - - - - - +\n"); + } + + return chain.toString(); + } + + /** + * + * @return {@code true} if {@link Ship#getFullCoords()} contains {@code boardsCoords}, {@code false} otherwise + */ + private boolean isShipPosition(Ship ship, Pair boardsCoords) { + for(Pair coords : ship.getFullCoords()) { + if(boardsCoords.equals(coords)) + return true; + } + return false; + } + + /** + * ask player for keyboard input and parse it into one of {@link Direction} value + * @return Direction depending of player input + * @throws InterruptedException caused by {@link Window#getKeyInput()} + * @see Window#getDirectionFromChar() + */ + protected Direction getDirectionFromChar() throws InterruptedException { + String dir; + while (true) { + setUpperText("Veuillez indiquer la direction de placement de votre bateau (d droite, h haut, b bas, g gauche)"); + dir = getKeyInput(); + for (Direction direction : Direction.values()) { + if (direction.getKeyword() != null && direction.getKeyword().equals(dir)) { + return direction; + } + } + } + } + + /** + * ask player for keyboard input and return result + * @return String given by player + * @throws InterruptedException see {@link Window#getKeyInput()} + */ + protected abstract String getKeyInput() throws InterruptedException; + + /** + * Display a text above the grid on {@link Window}, simply print text on {@link Terminal} + * @param s text to display + * @see Window#setUpperText(String) + * @see Terminal#setUpperText(String) + */ + protected abstract void setUpperText(String s); + + /** + * used if {@code player} instance of {@link battleship.model.player.Computer} + * @param player player we ask to set position of its ships + * @throws InterruptedException see {@link Window#setShips(Player)} + */ + @Override + public void setShips(Player player) throws InterruptedException { + player.placeShips(); + } + + /** + * @param other other than the current player + * @param ship check if this ship at this position has been hit + * @param pair coords + * @return 1 if ship fully drowned, 2 if only damaged, 0 if not + * @see AbstractView#isPositionDrowned(Player, Pair) + */ + private int isPositionDrowned(Player other, Ship ship, Pair pair) { + if(ship.isDrown()) + return 1; + return isPositionDrowned(other, pair); + } + + /** + * @param other other than the current player + * @param pair coords to check + * @return 2 if player already played here, 0 otherwise + */ + private int isPositionDrowned(Player other, Pair pair) { + for(Triplet move : other.getMoves()) { + if(pair.getLeft().equals(move.getLeft()) && pair.getRight().equals(move.getMiddle())) { + return 2; + } + } + return 0; + } + + /** + * used by {@link battleship.model.player.Computer} player to play a move in the grid depending of its algorithm + * @param player {@link battleship.model.Game#currentPlayer} + * @return a couple ({@link Pair} containing the x and y coordinate (left side store Y and right side X) + * @throws InterruptedException see {@link Window#chooseMove(Player)} + */ + @Override + public Pair chooseMove(Player player) throws InterruptedException { + return player.chooseMove(); + } + + /** + * ask {@code player} for mouse input + * @param player {@link Game#currentPlayer} + * @return coordinate of {@code player} opponent grid + * @see Window#mouseInput(Player) + * @throws InterruptedException see {@link Window#mouseInput(Player)} + */ + protected abstract Pair mouseInput(Player player) throws InterruptedException; + + /** + * ask {@link Game#currentPlayer} for keyboard input + * @return String given by player + * @throws InterruptedException see {@link Window#keyboardInput()} + * @see Window#keyboardInput() + * @see Terminal#keyboardInput() + * @see Terminal#keyboardInputInteger() + */ + protected abstract String keyboardInput() throws InterruptedException; +} diff --git a/livraison/src/battleship/view/Terminal.java b/livraison/src/battleship/view/Terminal.java new file mode 100644 index 0000000..0bd6d81 --- /dev/null +++ b/livraison/src/battleship/view/Terminal.java @@ -0,0 +1,167 @@ +package battleship.view; + +import battleship.control.TerminalKeyboardListener; +import battleship.model.Direction; +import battleship.model.Game; +import battleship.model.Ship; +import battleship.model.player.Human; +import battleship.model.player.Player; +import battleship.utils.Pair; + +import java.util.Scanner; + +/** + * Terminal view, instanced if argument 2 equals to "nogui" + * @see View + * @see AbstractView + */ +public class Terminal extends AbstractView { + + public static Scanner scanner = null; + private final TerminalKeyboardListener keyboardComponent; + + public Terminal(Game game) { + super(game); + if(scanner == null) + scanner = new Scanner(System.in); + keyboardComponent = new TerminalKeyboardListener(scanner); + } + + /** + * @return given string in terminal + */ + @Override + protected String getKeyInput() { + return scanner.next().toUpperCase(); + } + + /** + * print string + * @param s text to display + */ + @Override + protected void setUpperText(String s) { + System.out.println(s); + } + + /** + * Ask {@code player} to set position of its ships + * @param player player we ask to set position of its ships + * @throws InterruptedException see {@link AbstractView#getDirectionFromChar()} + */ + @Override + public void setShips(Player player) throws InterruptedException { + setUpperText("Joueur " + player.getId() + ", placez vos navires"); + int x, y; + if(player instanceof Human) { + for(int i : shipsSize) { + boolean valid = false; + Pair defaultPos = new Pair<>(-1, -1); + Ship ship = new Ship(defaultPos, i, Direction.DEFAULT); + while (!player.setShips(ship)) { + try { + if (valid) { + setUpperText("Erreur"); + } + valid = true; + setUpperText("Placement du bateau de longueur " + ship.getSize()); + setUpperText("Veuillez indiquer la coordonée x de votre bateau"); + x = keyboardInputInteger(); + setUpperText("Veuillez indiquer la coordonée y de votre bateau"); + y = keyboardInputInteger(); + ship.setCoords(new Pair<>(x, y)); + ship.setDirection(getDirectionFromChar()); + ship.recalculateFullCoords(); + } catch(NumberFormatException e) { + // Pour être sur qu'il ne passera pas la boucle + ship.setCoords(defaultPos); + ship.setDirection(Direction.DEFAULT); + } + + } + } + } else { + super.setShips(player); + // Computer + } + } + + /** + * print board in terminal + */ + @Override + public void displayBoard() { + System.out.println(this.toString(false)); + } + + /** + * ask player to choose a coords on its opponent grid, call {@link AbstractView#chooseMove(Player)} if instance of + * player is {@link battleship.model.player.Computer} + * if {@code player} isn't {@link Human} instance + * @param player {@link battleship.model.Game#currentPlayer} + * @return a element containing the x and y coordinate (left side store Y and right side X) + * @throws InterruptedException see {@link AbstractView#chooseMove(Player)} + */ + @Override + public Pair chooseMove(Player player) throws InterruptedException { + if(player instanceof Human) { + int x = -1, y = -1; + while(!player.areValid(x, y)) { + try { + // y correspond à l'ordonnée mais est stocké comme étant l'abscisse + // (erreur de notre part aperçu lors du passage à une fenetre swing) + setUpperText("Veuillez indiquer la coordonée x de votre coup"); + y = keyboardInputInteger(); + setUpperText("Veuillez indiquer la coordonée y de votre coup"); + x = keyboardInputInteger(); + } catch (NumberFormatException ignored) { + x = -1; + y = -1; + } + } + return new Pair<>(x,y); + } + return super.chooseMove(player); + + } + + /** + * Never call in Terminal + * @param player {@link Game#currentPlayer} + * @return {@code null} + */ + @Override + protected Pair mouseInput(Player player) { + return null; + } + + /** + * @see TerminalKeyboardListener#keyboardInput() + * @return given string in terminal + */ + @Override + protected String keyboardInput() { + return keyboardComponent.keyboardInput(); + } + + /** + * @see Terminal#keyboardInput() + * @return convert string from keyboardInput() and convert it into an integer + * @throws NumberFormatException if given string can't be parse into an integer + */ + protected int keyboardInputInteger() throws NumberFormatException { + return Integer.parseInt(keyboardComponent.keyboardInput()); + } + + /** + * print grid, winner player and close scanner, game automatically close after this + * @param winner the winner of the game. + */ + @Override + public void displayWinner(Player winner) { + displayBoard(); + setUpperText("Le joueur " + winner.getId() + " a gagné"); + scanner.close(); + } + +} diff --git a/livraison/src/battleship/view/View.java b/livraison/src/battleship/view/View.java new file mode 100644 index 0000000..12e2df2 --- /dev/null +++ b/livraison/src/battleship/view/View.java @@ -0,0 +1,46 @@ +package battleship.view; + +import battleship.model.player.Player; +import battleship.utils.Pair; + +/** + *

      View interface, used as an API

      + *

      This model (interface -> abstract class(es) -> concrete classes) prevent hard code.

      + *

      This is the only object which interact with other object
      + * Allows an outside person easily change the code or add a view easily without modifying existing classes

      + * @see AbstractView + * @see Terminal + * @see Window + */ +public interface View { + + int[] shipsSize = { 5, 4, 3, 3, 2}; + + /** + * Ask {@code player} to set position of its ships + * @param player player instance we ask + * @throws InterruptedException see {@link Window#setShips(Player)} + */ + void setShips(Player player) throws InterruptedException; + + /** + * Display all grids + */ + void displayBoard(); + + /** + * ask the player the choose a position on its opponent grid + * @param player {@link battleship.model.Game#currentPlayer} + * @return a element containing the x and y coordinate (left side store Y and right side X) + * @throws InterruptedException see {@link Window#chooseMove(Player)} + */ + Pair chooseMove(Player player) throws InterruptedException; + + /** + * Display the winner of the game and then close the game + * @param winner the winner of the game. + * @see Window#displayWinner(Player) + * @see Terminal#displayWinner(Player) + */ + void displayWinner(Player winner); +} diff --git a/livraison/src/battleship/view/Window.java b/livraison/src/battleship/view/Window.java new file mode 100644 index 0000000..b2cdfde --- /dev/null +++ b/livraison/src/battleship/view/Window.java @@ -0,0 +1,304 @@ +package battleship.view; + +import battleship.control.WindowKeyboardListener; +import battleship.control.WindowMouseListener; +import battleship.model.Direction; +import battleship.model.Game; +import battleship.model.Ship; +import battleship.model.player.Human; +import battleship.model.player.Player; +import battleship.utils.Pair; +import battleship.utils.Triplet; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.KeyEvent; +import java.awt.geom.RoundRectangle2D; + +/** + * Window view, instanced if argument 2 equals to "nogui" + * @see View + * @see AbstractView + */ +public class Window extends AbstractView { + + final JFrame frame; + + /** + * grids height, do no represent frame size + */ + public final int height = 600; + /** + * grids width, do no represent frame size + */ + public final int width = 1200; + private final WindowMouseListener mouseComponent; + private final WindowKeyboardListener keyboardComponent; + String upperTitle = ""; + String upperSubTitle = ""; + + public Window(Game game) { + super(game); + this.frame = new JFrame("Battleship"); + frame.setSize(width + width / 13, height + height / 4); + frame.setResizable(false); + frame.setContentPane(new Draw(this)); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.setVisible(true); + this.mouseComponent = new WindowMouseListener(this); + frame.addMouseListener(mouseComponent); + this.keyboardComponent = new WindowKeyboardListener(); + frame.addKeyListener(keyboardComponent); + + } + + @Override + protected String getKeyInput() throws InterruptedException { + return keyboardInput(); + } + + /** + * Display a text above the grid + * @param s text to display + */ + @Override + protected void setUpperText(String s) { + upperTitle = s; + } + + /** + * Ask {@code player} to set position of its ships + * @param player player we ask + * @throws InterruptedException see {@link Window#mouseInput(Player)} and {@link Window#getDirectionFromChar()} + */ + @Override + public void setShips(Player player) throws InterruptedException { + if(player instanceof Human) { + for(int i : shipsSize) { + Ship ship = new Ship(new Pair<>(-1, -1), i, Direction.DEFAULT); + boolean valid = false; + while(!player.setShips(ship)) { + frame.repaint(); + if(valid) + openDialog("Erreur de placement, votre navire se superpose avec un autre, ou la direction donnée n'est pas valide"); + + upperTitle = "joueur " + player.getId() + ", Placez votre premier navire de taille " + i + " à l'aide de la souris"; + ship.setCoords(mouseInput(player)); + upperTitle = "joueur " + player.getId() + ", Choisissez la direction de votre navire avec le clavier"; + upperSubTitle = "H, B, G, D pour respectivement Haut, Bas, Gauche, Droite"; + frame.repaint(); + ship.setDirection(getDirectionFromChar()); + ship.recalculateFullCoords(); + valid = true; + } + + } + upperTitle = ""; + upperSubTitle = ""; + } else { + super.setShips(player); + } + } + + /** + * ask {@link Game#currentPlayer} for keyboard input + * @return String given by player + * @throws InterruptedException throw if this Thread is interrupted while {@link Thread#sleep(long) sleeping} + */ + @Override + protected String keyboardInput() throws InterruptedException { + keyboardComponent.requestInput = true; + while(true) { + Thread.sleep(25); + if(keyboardComponent.keyTyped != KeyEvent.CHAR_UNDEFINED) { + keyboardComponent.requestInput = false; + String value = String.valueOf(keyboardComponent.keyTyped).toUpperCase(); + keyboardComponent.keyTyped = KeyEvent.CHAR_UNDEFINED; + return value; + } + } + } + + /** + * ask {@code player} for mouse input + * @param player {@link Game#currentPlayer} + * @return coordinate of {@code player} opponent grid + * @throws InterruptedException throw if this Thread is interrupted while {@link Thread#sleep(long) sleeping} + */ + @Override + protected Pair mouseInput(Player player) throws InterruptedException { + mouseComponent.requestInput = true; + while(true) { + Thread.sleep(25); + if(mouseComponent.playerIdLastInput != 0) { + if(player.getId() == mouseComponent.playerIdLastInput) { + mouseComponent.requestInput = false; + mouseComponent.playerIdLastInput = 0; + Pair value = mouseComponent.lastInput; + mouseComponent.lastInput = null; + return value; + } else { + openDialog("Vous avez cliqué sur une zone de jeu qui n'est pas la votre"); + mouseComponent.playerIdLastInput = 0; + } + } + + } + } + + /** + * Open a window with {@code message} as content and with a "OK" button + * @param message message to display + * @param exitOnClose {@code true} if when user close this window, the program exit, {@code false} otherwise + */ + public void openDialog(String message, boolean exitOnClose) { + JOptionPane.showMessageDialog(frame, message); + if(exitOnClose) + System.exit(0); + } + + /** + * Open a window with {@code message} as content and with a "OK" button + * @param message message to display + * @see Window#openDialog(String, boolean) + */ + public void openDialog(String message) { + openDialog(message, false); + } + + /** + * refresh windows to display updated content + */ + @Override + public void displayBoard() { + frame.paintComponents(frame.getGraphics()); + } + + /** + * ask player to choose a position in its opponent grid + * @param player {@link battleship.model.Game#currentPlayer} + * @return a couple ({@link Pair} containing the x and y coordinate (left side store Y and right side X) + * @throws InterruptedException see {@link Window#mouseInput(Player)} + */ + @Override + public Pair chooseMove(Player player) throws InterruptedException { + setUpperText("Joueur " + player.getId() + " cliquez sur l'emplacement où vous souhaitez tirer"); + frame.repaint(); + if(player instanceof Human) { + Pair coords = new Pair<>(-1, -1); + boolean valid = false; + while(!player.areValid(coords.getLeft(), coords.getRight())) { + if(valid) + openDialog("Erreur de placement, ce coup a déjà été effectué"); + valid = true; + coords = mouseInput(game.getOtherPlayer(player)); + } + return coords; + } + return super.chooseMove(player); + + } + + /** + * open a dialog to display the winner and exit the program when window is closed + * @param winner the winner of the game. + */ + @Override + public void displayWinner(Player winner) { + openDialog("Le joueur " + winner.getId() + " a gagné", true); + } + + /** + * Panel where we paint the board + * @see JPanel + */ + class Draw extends JPanel { + + private final Window window; + + public Draw(Window window) { + this.window = window; + } + + public void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2d = (Graphics2D)g; + g2d.drawString(upperTitle, (int) (window.width /2 - (upperTitle.length() * 2.5)), 50); + g2d.drawString(upperSubTitle, (int) (window.width / 2 - (upperSubTitle.length() * 2.5)), 65); + int width = window.width; + int height = window.height; + int initialHeight = height / 12; + int initialWidth = width / 23; + for(int abscisse = initialWidth; abscisse < width; abscisse += initialWidth) { + g2d.drawLine(abscisse, initialHeight * 2, abscisse, height); + if(abscisse == initialWidth * 11) + abscisse += initialWidth; + } + for(int ordonnee = initialHeight * 2; ordonnee < height + 1; ordonnee += initialHeight) { + g2d.drawLine(initialWidth, ordonnee, initialWidth * 11, ordonnee); + g2d.drawLine(initialWidth * 13, ordonnee, width - 4, ordonnee); + } + + for(int i = 1; i < 3; ++i) { + Player player = game.players[i-1]; + for(Ship ship : player.getShips()) { + if(player == game.getCurrentPlayer() ||ship.isDrown()) { + int x1 = i == 1 ? initialWidth : initialWidth * 13; + int y1 = initialHeight * 2; + int shipWidth = initialWidth; + int shipHeight = initialHeight; + switch(ship.getDirection()) { + case DOWN: + x1 += initialWidth * ship.getCoords().getRight(); + y1 += initialHeight * ship.getCoords().getLeft(); + shipHeight = initialHeight * ship.getSize(); + g.setColor(new Color(0, 255, 255)); + break; + case UP: + x1 += initialWidth * ship.getCoords().getRight(); + shipHeight = initialHeight * ship.getSize(); + y1 += initialHeight * ship.getCoords().getLeft() - shipHeight + initialHeight; + g.setColor(new Color(255, 255, 0)); + break; + case RIGHT: + x1 += initialWidth * ship.getCoords().getRight(); + y1 += initialHeight * ship.getCoords().getLeft(); + shipWidth = initialWidth * ship.getSize(); + g.setColor(new Color(0, 255, 0)); + break; + case LEFT: + shipWidth = initialWidth * ship.getSize(); + x1 += initialWidth * ship.getCoords().getRight() - shipWidth + initialWidth; + y1 += initialHeight * ship.getCoords().getLeft(); + g.setColor(new Color(0, 0, 255)); + break; + } + g2d.fillRoundRect(x1 + 1, y1 + 1, shipWidth - 1, shipHeight - 1, 25, 25); + } + } + } + for(int i = 1; i < 3; ++i) { + Player player = game.players[i-1]; + float rectangleSize = initialWidth / 4f; + int sqrt = (int) Math.sqrt(initialHeight * initialHeight + initialWidth * initialWidth) - 10; + for(Triplet move : player.getMoves()) { + int x1 = (i == 1 ? initialWidth * 13 : initialWidth) + initialWidth * move.getMiddle(); + int y1 = initialHeight * 2 + initialHeight * move.getLeft() + 8; + RoundRectangle2D cross1 = new RoundRectangle2D.Float(x1, y1, rectangleSize, sqrt, 15, 15); + RoundRectangle2D cross2 = new RoundRectangle2D.Float(x1 + initialWidth - 9, y1 - 9, rectangleSize, sqrt, 15, 15); + if(move.getRight()) { + g.setColor(new Color(255, 0, 0)); + } else { + g.setColor(new Color(0, 123, 255)); + } + g2d.rotate(Math.toRadians(-45), x1, y1); + g2d.fill(cross1); + g2d.rotate(Math.toRadians(45), x1, y1); + g2d.rotate(Math.toRadians(45), x1 + initialWidth - 9, y1 - 9); + g2d.fill(cross2); + g2d.rotate(Math.toRadians(-45), x1 + initialWidth - 9, y1 - 9); + } + } + } + } +} diff --git a/livraison/src/battleship/view/WindowListener.java b/livraison/src/battleship/view/WindowListener.java new file mode 100644 index 0000000..428082f --- /dev/null +++ b/livraison/src/battleship/view/WindowListener.java @@ -0,0 +1,32 @@ +package battleship.view; + +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +public class WindowListener implements MouseListener { + + @Override + public void mouseClicked(MouseEvent e) { + + } + + @Override + public void mousePressed(MouseEvent e) { + + } + + @Override + public void mouseReleased(MouseEvent e) { + + } + + @Override + public void mouseEntered(MouseEvent e) { + + } + + @Override + public void mouseExited(MouseEvent e) { + + } +} diff --git a/livraison/src/battleship/view/package-info.java b/livraison/src/battleship/view/package-info.java new file mode 100644 index 0000000..b104f2e --- /dev/null +++ b/livraison/src/battleship/view/package-info.java @@ -0,0 +1,4 @@ +/** + * Contains terminal and windows view classes and theirs super class and interface + */ +package battleship.view; \ No newline at end of file diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF new file mode 100644 index 0000000..e0f1fa4 --- /dev/null +++ b/src/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: battleship.Main +