2016-07-11 3 views
0

Я сделал игру в Eclipse neon с языком Java, но мне было интересно, как я могу сделать игру так, чтобы, если пользователь нажимает r, он или она может вернуться на первый экран, где он говорит, что стартовая пробел запускается. вот мои 3 файла кода, если вам это нужно, чтобы выяснить решение.Java Eclipse game - restart game

//This is the game file (main) 

import processing.core.PApplet; 

public class Game extends PApplet{ 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     PApplet.main("Game"); 
    } 

    James james1; 
    Wall wall1; 
    Wall wall2; 
    Wall wall3; 
    public void settings() { 
     size(500, 700); 
    } 

    public void setup() { 
     frameRate(40); 
     james1 = new James(this, 250, 650, 50); 
     wall1 = new Wall(this, 0); 
     wall2 = new Wall(this, 250); 
     wall3 = new Wall(this, -250); 
    } 

    public void draw() { 
     if(key == ' ') { 
     clear(); 
     background(0, 255, 255); 

     boolean loser = wall1.col(james1.getX(), james1.getY()) || wall2.col(james1.getX(), james1.getY()) ||wall3.col(james1.getX(), james1.getY()); 
     james1.show(); 
     move(); 
     if (!loser){ 
      wall1.update(); 
      wall2.update(); 
      wall3.update(); 
     } 
     else { 
      reset(); 
     } 
     wall1.display(); 
     wall2.display(); 
     wall3.display(); 
     } 
     else { 
      background(255, 0, 255); 
      textSize(45); 
      text("Press Space to Start!", 50, 350); 
     } 
    } 

    public void reset() { 
     clear(); 
     frameRate(0); 
     textSize(40); 
     text("You Lose, R to restart", 25, 550); 
    } 

    public void restart() { 

    } 

    public void move() { 

     james1.setX(mouseX); 

     if (mouseX <= 25) { 
      james1.setX(25); 
     } 
     else if (mouseX >= 475) { 
      james1.setX(475); 
     } 


    } 



} 


//This is the character file (James) 

import processing.core.PApplet; 

public class James { 

    PApplet p; 
    private float x; 
    private float y; 
    private float size; 


    public James(PApplet np, float nx, float ny, float nsize) { 
     p = np; 
     x = nx; 
     y = ny; 
     size = nsize; 
    } 

    public void show() { 
     p.fill(255,20,147); 
     p.ellipse(x, y, size, size); 
     p.fill(128,128,0); 
     p.ellipse(x - 10, y - 10, size - 30, size - 30); 
     p.ellipse(x + 10, y - 10, size -30, size - 30); 
    } 


    public float getX() { 
     return x; 
    } 

    public float getY() { 
     return y; 
    } 

    public float getSize() { 
     return size; 
    } 



    public void setX(float gx) { 
     x = gx; 
    } 

    public void setY(float gy) { 
     y = gy; 
    } 

    public void setSize(float gSize) { 
     size = gSize; 
    } 


} 


//This is obstacle class file (walls) 

import processing.core.PApplet; 
public class Wall { 

    PApplet p; 
    private float x; 
    private float y; 
    private float w; 
    private float xw; 
    private float yw; 
    private float h; 
    private float wh; 
    private float xspeed; 
    private float yspeed; 
    public Wall (PApplet np, float ny) { 
     p = np; 
     x = 0; 
     y = ny; 
     wh = 0; 
     xw = p.random(0, 450); 
     yw = p.random(0, 450); 
     w = p.random(0, 450); 
     h = 30; 
     yspeed = 10; 
    } 

    public void display() { 

     p.rect(0, y, w, h); 
     p.rect(w + 100, y, 500-(w+100), h); 


    } 

    public void update() { 
     if(y > p.height) { 
      y = 0; 

      w = p.random(0,450); 
      xw = p.random(0, 450); 
      yw = p.random(0, 450); 
     } 
     y = yspeed + y; 
    } 

    public float getX() { 
     return x; 
    } 

    public float getY() { 
     return y; 
    } 

    public float getW() { 
     return w; 
    } 

    public float getXW() { 
     return xw; 
    } 

    public float getYW() { 
     return yw; 
    } 

    public float getWH() { 
     return wh; 
    } 

    public float getH() { 
     return h; 
    } 
    public float getxSpeed() { 
     return xspeed; 
    } 

    public float getySpeed() { 
     return yspeed; 
    } 
    public void setX(float gx) { 
     x = gx; 
    } 

    public void setYW(float gyw) { 
     yw = gyw; 
    } 

    public void setW(float gw) { 
     w = gw; 
    } 

    public void setY(float gy) { 
     y = gy; 
    } 

    public void setH(float gh) { 
     h = gh; 
    } 

    public void setxSpeed(float gxSpeed) { 
     xspeed = gxSpeed; 
    } 

    public void setySpeed(float gySpeed) { 
     yspeed = gySpeed; 
    } 

    public boolean col(float ballX, float ballY) { 
     if (y + h >= ballY - 25 && y <= ballY + 25) { 
      if(ballX - 25 <= w || ballX+25 >= w+100) { 
       return true; 
      } 
     } 
     return false; 
    } 


} 

Надеется, что не слишком долго только для одной цели;)

+1

Прочтите следующее: http://meta.stackoverflow.com/q/320658/4957418 –

+0

Я прочитал статью. Но вы говорите, что я должен перестать задавать вопросы о stackoverflow, что означает прекратить его использовать? –

+0

На самом деле, я не против, если вы продолжаете использовать его. Печальная проблема заключается в том, что stackoverflow (SO) ** юридически обязателен ** для удаления любых учетных записей людей, которые, как они знают, имеют определенный возраст. Тем не менее, если бы такие люди сохранили свой возраст для себя, SO не мог бы знать ... –

ответ

0

Скопируйте все из установки методы для перезапуска метода, а затем вызвать перезагрузку от установки методы.

Вы получаете что-то вроде этого:

public void setup() 
{ 
    restart(); 
} 

public void restart() 
{ 
    frameRate(40); 
    james1 = new James(this, 250, 650, 50); 
    wall1 = new Wall(this, 0); 
    wall2 = new Wall(this, 250); 
    wall3 = new Wall(this, -250); 
} 

Теперь просто вызвать перезапуск всякий раз, когда вы хотите, чтобы игра перезагрузится. В вашем примере: когда пользователь нажимает кнопку «r».

В играх действительно неплохо иметь класс карты, который обрабатывает такие вещи.

+0

Спасибо за ответ :) Очень полезно –

+0

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

+0

import processing.core.PApplet; общественного класса Игра проходит PApplet { \t государственной статической силы основных (String []) {арг \t \t // TODO автоматическая генерация метод заглушки \t \t PApplet.Основная ("Игра"); \t} \t \t James james1; \t Wall wall1; \t Стена wall2; \t Стена wall3; \t public void settings() { \t \t размер (500, 700); \t} \t \t общественного недействительными установки() { \t \t FRAMERATE (40); \t \t james1 = новый Джеймс (это 250, 650, 50); \t \t wall1 = new Стена (эта, 0); \t \t wall2 = new Wall (this, 250); \t \t wall3 = new Стена (это, -250); \t} \t \t общественного недействительными ничья() { \t \t \t \t если (Key == 'г') { \t \t \t рестарт(); \t \t} –