Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package spritetest;
- import java.util.ArrayList;
- import java.util.Random;
- import javafx.animation.AnimationTimer;
- import javafx.application.Application;
- import javafx.geometry.Rectangle2D;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.canvas.Canvas;
- import javafx.scene.canvas.GraphicsContext;
- import javafx.scene.image.Image;
- import javafx.stage.Stage;
- /**
- *
- * @author Compsci
- */
- public class SpriteTest extends Application {
- private boolean down = true;
- private boolean up = true;
- private boolean left = true;
- private boolean right = true;
- @Override
- public void start(Stage primaryStage) {
- Random random = new Random();
- Sprite briefcase = new Sprite();
- briefcase.setImage("file:/C:/Users/Compsci/Pictures/briefcase_sm.png");
- Group root = new Group();
- Scene theScene = new Scene(root);
- primaryStage.setScene(theScene);
- primaryStage.setTitle("First Sprite");
- Canvas canvas = new Canvas(512, 512);
- GraphicsContext gc = canvas.getGraphicsContext2D();
- briefcase.drawSprite(gc);
- ArrayList<Sprite> imageList = new ArrayList<>();
- Sprite moneybag;
- for (int i = 0; i < 10; i++){
- moneybag = new Sprite();
- moneybag.setImage("file:/C:/Users/Compsci/Pictures/moneybag_sm.png");
- moneybag.setPosition(random.nextInt(480), random.nextInt(480));
- imageList.add(moneybag);
- moneybag.drawSprite(gc);
- }
- root.getChildren().add(canvas);
- primaryStage.show();
- new AnimationTimer()
- {
- public void handle(long currentNanoTime)
- {
- gc.clearRect(0, 0, 512, 512);
- theScene.setOnKeyPressed(e->{
- switch (e.getCode()){
- case DOWN:
- if(down)
- briefcase.addVelocity(0, 200); down = false; break;
- case UP:
- if(up)
- briefcase.addVelocity(0, -200); up = false; break;
- case LEFT:
- if(left)
- briefcase.addVelocity(-200, 0); left = false; break;
- case RIGHT:
- if(right)
- briefcase.addVelocity(200, 0); right = false; break;
- }
- });
- theScene.setOnKeyReleased(e-> {
- switch (e.getCode()){
- case DOWN:
- briefcase.addVelocity(0, -200); down = true; break;
- case UP:
- briefcase.addVelocity(0, 200); up = true; break;
- case LEFT:
- briefcase.addVelocity(200, 0); left = true; break;
- case RIGHT:
- briefcase.addVelocity(-200, 0); right = true; break;
- }
- });
- for (Sprite moneybag: imageList)
- moneybag.drawSprite(gc);
- briefcase.update(0.01);
- for (int i = 0; i < imageList.size(); i++){
- if (briefcase.intersect(imageList.get(i)))
- imageList.remove(i);
- }
- briefcase.drawSprite(gc);
- }
- }.start();
- }
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- launch(args);
- }
- class Sprite {
- private double velocityX;
- private double velocityY;
- private double positionX;
- private double positionY;
- private double width;
- private double height;
- private Image img;
- private void setImage(String path){
- img = new Image(path);
- width = img.getWidth();
- height = img.getHeight();
- }
- private void setPosition(double x, double y){
- positionX = x;
- positionY = y;
- }
- private void setVelocity(double x, double y){
- velocityX = x;
- velocityY = y;
- }
- private void addVelocity(double x, double y){
- velocityX += x;
- velocityY += y;
- }
- private void update(double time){
- positionX += velocityX * time;
- positionY += velocityY * time;
- }
- private Rectangle2D getBoundry(){
- return new Rectangle2D(positionX,positionY,width,height);
- }
- private boolean intersect(Sprite s){
- return s.getBoundry().intersects(this.getBoundry());
- }
- private void drawSprite(GraphicsContext gc){
- gc.drawImage(img,positionX,positionY);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement