Как использовать графику - PullRequest
0 голосов
/ 27 июня 2018

У меня проблема с javafx 8. Я пытаюсь создать игру и теперь пытаюсь стрелять. Я думаю, что все хорошо, но у меня нет стрелять.

paint не используется в моем коде. Как я могу использовать paint() в public void initialize? Это возможно или правильно?

Я думаю, что это должно быть так!

Jet: моя машина для стрельбы. Движение струи работает хорошо.

Это не мой основной класс.

Спасибо за ваш ответ.

import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;

import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.util.ResourceBundle;

public class gameMain  implements Initializable {

@FXML
ImageView jet;

@FXML
Label friendName;
@FXML
Label mySocer;
@FXML
Label friendSocer;
@FXML
Label myFuel;

@FXML
Button up;
@FXML
Button right;
@FXML
Button down;
@FXML
Button left;
@FXML
Button pause;
@FXML
Button btnUseKeyBoardKeys;


private boolean goRight , goUp , goLeft , goDown;

private int jetX = 500;  // Loctaion Jet
private int jetY = 500;  // Location Jet

private int BulletX[] = new int[10];
private int BulletY[] = new int[10];
private boolean[] isShot = new boolean[10];
private int BulletNo = 0;

private Image bullet = new ImageIcon("/view/img/bullet.png").getImage();

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    runGame();
    controls();
}

private void runGame(){

    for(int i=0;i<BulletY.length;i++){
        isShot[i] = false;
        BulletX[i] = jetX+40;
        BulletY[i] = jetY-20;
    }



    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {

            while (true){

                for(int i=0;i<BulletY.length;i++){
                    if (isShot[i]) BulletY[i]-=5;
                    if (BulletY[i]<0){
                        isShot[i] = false;
                        BulletX[i] = jetX+40;
                        BulletY[i] = jetY-20;
                    }
                }

                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }


                if (goUp){
                    jetY-=5;
                }
                if (goDown){
                    jetY+=5;
                }
                if (goRight){
                    jetX+=5;
                }
                if (goLeft){
                    jetX-=5;
                }

                jet.setLayoutX(jetX);
                jet.setLayoutY(jetY);

            }
        }
    });
    thread.start();


}


public void paint(Graphics g){
    for (int i=0;i<BulletY.length;i++){
        if(isShot[i])
            g.drawImage(bullet,BulletX[i],BulletY[i],null);
    }
}

private void controls() {



    // Mouse
    up.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goUp = true;
        }
    });
    up.setOnMouseReleased(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goUp = false;
        }
    });
    down.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goDown = true;
        }
    });
    down.setOnMouseReleased(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goDown = false;
        }
    });
    right.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goRight = true;
        }
    });
    right.setOnMouseReleased(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goRight = false;
        }
    });
    left.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goLeft = true;
        }
    });
    left.setOnMouseReleased(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            goLeft = false;
        }
    });




    // Keyboard
    btnUseKeyBoardKeys.setOnKeyPressed(new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {
            switch (event.getCode()){
                case W:
                    goUp = true;
                    break;
                case S:
                    goDown = true;
                    break;
                case D:
                    goRight = true;
                    break;
                case A:
                    goLeft = true;
                    break;
                case SPACE:
                    isShot[BulletNo] = true;
                    BulletX[BulletNo] = jetX+40;
                    BulletY[BulletNo] = jetY-20;
                    ++BulletNo;
                    if (BulletNo > BulletY.length-1)
                        BulletNo = 0;
                    break;
            }
        }
    });

    btnUseKeyBoardKeys.setOnKeyReleased(new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {
            switch (event.getCode()){
                case W:
                    goUp = false;
                    break;
                case S:
                    goDown = false;
                    break;
                case D:
                    goRight = false;
                    break;
                case A:
                    goLeft = false;
                    break;
                case SPACE:
                    isShot[BulletNo] = false;
                    BulletX[BulletNo] = jetX+40;
                    BulletY[BulletNo] = jetY-20;
                    ++BulletNo;
                    if (BulletNo > BulletX.length-1)
                        BulletNo = 0;
                    break;
            }
        }
    });


}
}
...