Как я могу позволить моему publi c stati c final int работать в коммутаторе, чтобы у игры был момент паузы, когда вы начинаете - PullRequest
0 голосов
/ 09 апреля 2020

я делаю игру, когда проблема все-таки началась, я делал меню паузы, когда вы запускаете en, ​​когда вы отпускаете кнопку пробела, игра запускается для этого, я использую переключатель и случай, но когда я нажимаю пробел, случай не переключается , но я не понимаю, почему.

код:

package userinterface;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JPanel;

import objectgame.Cactus;
import objectgame.Clounds;
import objectgame.EnemiesManager;
import objectgame.Land;
import objectgame.MainCharacter;
import util.Resource;

public class GameScreen extends JPanel implements Runnable, KeyListener {
    public static final int GAME_FIRST_STATE = 0;
    public static final int GAME_PLAY_STATE = 1;
    public static final int GAME_OVER_STATE = 2;
    public static final float GRAVITY = 0.1f;
    public static final float GROUND = 130;

    private MainCharacter mainCharacter;
    private Thread thread;
    private Land land;
    private Clounds clouds;
    private EnemiesManager enemiesManager;

    private int gameState = GAME_FIRST_STATE;

    public GameScreen() {
        thread = new Thread(this);
        mainCharacter = new MainCharacter();
        mainCharacter.setX(50);
        land = new Land(this);
        clouds = new Clounds();
        enemiesManager = new EnemiesManager();
    }

    public void startGame() {
        thread.start();
    }

    @Override
    public void run() {
    while(true) {
        try {
            update();
            repaint();
            Thread.sleep(30);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
            }
        }
    }

    public void update() {
        mainCharacter.update();
        land.update();
        clouds.update();
        enemiesManager.update();
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.decode("#f7f7f7"));
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.red);
        g.drawLine(0, (int) GROUND, getWidth(), (int) GROUND);

        switch(gameState) {
        case GAME_FIRST_STATE:
            mainCharacter.draw(g);
            break;
        case GAME_PLAY_STATE:
            clouds.draw(g);
            land.draw(g);
            mainCharacter.draw(g);
            enemiesManager.draw(g);
            break;
        }

    }

    public void keyTyped(KeyEvent e) {

    }

    public void keyPressed(KeyEvent e) {

    }

    public void keyReleaseed(KeyEvent e) {
        switch(e.getKeyCode()) {
            case KeyEvent.VK_SPACE:
                if(gameState == GAME_FIRST_STATE) {
                    gameState = GAME_PLAY_STATE;
                }
                break;
        }
    }
}

код не полный, но это не должно волновать это. случай переключения должен рисовать в начале только символ, и это происходит, но когда случай переключается, программа должна также рисовать землю и облака, но этого не происходит, как я могу это исправить. Если вам нужны другие классы, просто спросите.

...