diff options
| author | loic <git-account@loicguegan.fr> | 2016-09-23 09:37:06 +0200 |
|---|---|---|
| committer | loic <git-account@loicguegan.fr> | 2016-09-23 09:37:06 +0200 |
| commit | cb117797a68cf912b2c58d6e61b1e12025baace2 (patch) | |
| tree | abab09d1403d32747563693a854083d501d1817b /src/main/java/controller/MainWindowController.java | |
| parent | 8f45d6ced9e75ab382ea302050fd8fa86ea55468 (diff) | |
Diffstat (limited to 'src/main/java/controller/MainWindowController.java')
| -rw-r--r-- | src/main/java/controller/MainWindowController.java | 61 |
1 files changed, 31 insertions, 30 deletions
diff --git a/src/main/java/controller/MainWindowController.java b/src/main/java/controller/MainWindowController.java index 253ce33..21d0072 100644 --- a/src/main/java/controller/MainWindowController.java +++ b/src/main/java/controller/MainWindowController.java @@ -1,23 +1,15 @@ package controller; -import adapter.IModelAdapter; import adapter.ModelAdapter; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; +import javafx.event.*; import javafx.fxml.FXML; -import javafx.scene.Group; import javafx.scene.Scene; -import javafx.scene.canvas.Canvas; -import javafx.scene.canvas.GraphicsContext; +import javafx.scene.canvas.*; import javafx.scene.control.Button; import javafx.scene.input.KeyEvent; -import javafx.scene.layout.BorderPane; import javafx.scene.paint.Color; -import javafx.scene.text.Font; -import javafx.scene.text.Text; -import model.Board; -import model.IModel; -import model.LineAlgorithm; +import javafx.scene.text.*; +import model.*; import observer.IObserver; @@ -29,21 +21,28 @@ public class MainWindowController implements IObserver { @FXML Canvas boardCanvas; @FXML Text score; @FXML Button restartButton; + + private ModelAdapter adapter; private IModel model; - private int squareSize=100; private int squarePadding=10; private int[] boardPosition={30,0}; private int fontSize=60; - + /** + * Load component required to the view + * @param adapter + * @param model + * @param scene + */ public void loadComponent(ModelAdapter adapter, IModel model, Scene scene){ this.adapter=adapter; this.model=model; - this.update(); + this.update(); // Draw board + // Catch keyboard keys scene.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { @@ -95,33 +94,36 @@ public class MainWindowController implements IObserver { } - + /** + * Draw the grid + */ private void draw(){ - - + // Set score font and draw this.score.setFont(new Font(40)); - if(this.adapter.isLoosed()){ this.score.setText("Score : " + this.model.getScore() + "\n You loose !!!"); } else{ this.score.setText("Score : " + this.model.getScore()); } + + // Get board int[][] board=this.model.getBoard(); + // Draw board GraphicsContext gc = boardCanvas.getGraphicsContext2D(); gc.clearRect(0,0,500,500); - gc.setFill(Color.rgb(187,173,160)); gc.fillRect(this.boardPosition[0],this.boardPosition[1], ((this.squareSize+squarePadding)*board.length)+squarePadding, ((this.squareSize+squarePadding)*board[0].length)+squarePadding); - - - + // Draw cells for(int i=0; i<board.length;i++) { for (int j = 0; j < board[i].length; j++) { + // Get value int value=board[i][j]; + + // Apply theme switch (value){ case -1: gc.setFill(Color.rgb(202,192,180)); @@ -164,25 +166,26 @@ public class MainWindowController implements IObserver { break; } - + // Build coordinates int x=this.boardPosition[0] + (j*this.squareSize); x+=(j+1)*squarePadding; - int y=this.boardPosition[1] + (i*this.squareSize); y+=(i+1)*squarePadding; - + // Draw cell gc.fillRect(x,y, this.squareSize, this.squareSize); + // Build number font color if(value>2048) { gc.setFill(Color.WHITE); } else{ gc.setFill(Color.BLACK); - } + // Draw if value is greeter than 0 if(value>0){ + // Ajuste font position String strValue=""+value; int localFontSize=fontSize; if(strValue.length()==3){ @@ -193,12 +196,10 @@ public class MainWindowController implements IObserver { else if(strValue.length()>4){ localFontSize=localFontSize/4; } - gc.setFont(new Font(localFontSize)); + // Write value gc.fillText(strValue, x + (this.squareSize / 2) - ((localFontSize/4)+strValue.length()*localFontSize/5) , y + (this.squareSize / 2) + (localFontSize /3)); } - - } } } |
