2016-02-20 3 views
0

Я пытаюсь сделать артиллерию игры. Для создания карты мне сказал мой лектор, чтобы составить список Y-координат, который генерируется относительно случайным образом. Теперь у меня есть этот список (GameMap), но я не могу найти подходящий метод Canvas для их рисования. Является ли Canvas просто не лучшим способом работы или есть способ сделать это? Длина этого массива ArrayList составляет 1000+.Как рисовать ArrayList координат с холстом? [Java]

public class MapView extends StackPane { 

private Canvas canvas; 
private GraphicsContext graphicsContext; 
private GameMap map; 

    public MapView(){ 
     initialiseNodes(); 
     layoutNodes(); 
    } 

    public void initialiseNodes(){ 
     canvas = new Canvas(250, 250); 
     graphicsContext = canvas.getGraphicsContext2D(); 
    } 

    public void layoutNodes(){ 
     graphicsContext.setFill(Color.ALICEBLUE); 
     graphicsContext.fillRect(75, 75, 100, 100); 
     this.getChildren().add(canvas); 
     for(Integer i : map){ 
      graphicsContext. 
     } 

    } 
} 

ответ

0

Я не уверен в вашем вопросе, как вы хотите отображать координаты, но является ли это тем видом, который вы ищете?

import javafx.application.Application; 
import javafx.geometry.Point2D; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.canvas.Canvas; 
import javafx.stage.Stage; 

public class DrawPoints extends Application { 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     int width = 200, height = 200; 
     Canvas c = new Canvas(width, height); 

     /* 
     * Some randomized list of points. 
     */ 
     List<Point2D> points = new ArrayList<>(); 
     { 
      Random rnd = new Random(); 
      for (int i = 0; i < 100; i++) { 
       points.add(new Point2D(rnd.nextInt(width), rnd.nextInt(height))); 
      } 
     } 

     /* 
     * Drawing them as points (1x1 filled rectangles) on a Canvas 
     */ 
     for (Point2D p : points) { 
      c.getGraphicsContext2D().fillRect(p.getX(), p.getY(), 1, 1); 
     } 

     Group root = new Group(); 
     root.getChildren().add(c); 
     primaryStage.setScene(new Scene(root)); 
     primaryStage.show(); 
    } 
} 
+0

Благодарим за быстрый ответ, это очень сложно показать код, так как я работаю в модели MVP. это мой класс представления, что мне в основном нужно создать, это игра (https://upload.wikimedia.org/wikipedia/en/0/0a/Artillery_apple.png) [это] и координаты, которые у меня были бы граница для карты, которая генерируется случайным образом. Код для его генерации случайным образом находится в моей модели, но при рисовании их в представлении есть проблемы. –

Смежные вопросы