2017-12-22 31 views
0

저는 대상을 만졌을 때 어떤 물건을 죽이는 것과 관련된 작은 애니메이션 게임을 개발하고 있습니다.내 플레이 스코어 클래스에서 내 게임 점수를 업데이트하는 방법

내가 그들을 죽였을 때 점수를 얻고 있지만 내 플레이 스테이션 클래스에서 내 업데이트 된 점수를 표시하지는 않습니다.

public class PlayState extends State implements Input.TextInputListener { 
     private static int FREQUENCY=100; 
     boolean alive; 
     Texture mBackground,mScore; 
     List<Bug> bugs; 
     int x,type,count,score; 
     int xScale,yScale; 

     public PlayState(StateManager manager) { 
      super(manager); 
      mBackground=new Texture("bg_game1.jpg"); 
      mScore=new Texture("score.jpg"); 
      bugs=new ArrayList<Bug>(); 
      alive=true; 
      count=FREQUENCY; 
      score=0; 
      xScale=AntSmasher.WIDTH/AntSmasher.VIRTUALWIDTH; 
      yScale=AntSmasher.HEIGHT/AntSmasher.VIRTUALHEIGHT; 
     } 

     @Override 
     public void handleInput() { 
      if(Gdx.input.justTouched()){ 
       if(alive) { 
        for (Bug ref:bugs) { 
         if(ref.getLife()){ 
          TextureRegion image = ref.getRegion(); 
          int 
            xTouch = Gdx.input.getX(), 
            yTouch = Gdx.input.getY(); 
          int 
            xMin = (int) ref.getPosition().x, 
            xMax = xMin + image.getRegionWidth()*xScale, 
            yMin = AntSmasher.HEIGHT - ((int) ref.getPosition().y) - image.getRegionHeight()*yScale, 
            yMax = yMin + image.getRegionHeight()*yScale; 
          if (xTouch <= xMax && xTouch >= xMin && 
            yTouch <= yMax && yTouch >= yMin) { 
           FREQUENCY*=1.0; 
           AntSmasher.YSPEED*=1; 
           ref.die(); 
           if(ref instanceof BlackAnt) 
            score++; 
           else if(ref instanceof BrownAnt) 
            score+=2; 
           else 
            score+=3; 
          } 
         } 
        } 
       } 
      } 
     } 

     @Override 
     public void dispose() { 
      mBackground.dispose(); 
      mScore.dispose(); 
      for (Bug ref2:bugs) 
       ref2.dispose(); 
     } 

     @Override 
     public void update(float dt) { 
      handleInput(); 
      if(alive) { 
       if (count++ >= FREQUENCY) { 
        x = (int) (Math.random() * (AntSmasher.WIDTH-100*xScale) + 1); 
        type = (int) (Math.random() * 3); 
        if (type == 0) { 
         BlackAnt bug = new BlackAnt(x); 
         bugs.add(bug); 
        } else if (type == 1) { 
         BrownAnt bug = new BrownAnt(x); 
         bugs.add(bug); 
        } else { 
         Scorpion bug = new Scorpion(x); 
         bugs.add(bug); 
        } 
        count = 0; 
       } 
       for (Bug ref : bugs){ 
        ref.update(dt); 
        if(ref.getPosition().y<=0) { 
         alive = false; 
         Gdx.input.getTextInput(this, "Game Over", "", "Score is : "+String.valueOf(score)); 
         AntSmasher.YSPEED=-400; 
         FREQUENCY=100; 
         manager.set(new MenuState(manager)); 
         break; 
        } 
       } 
      } 
     } 

      @Override 
    public void render(SpriteBatch sb) { 

     sb.begin(); 
     sb.draw(mBackground,0,0,AntSmasher.WIDTH,AntSmasher.HEIGHT); 
     BitmapFont font = new BitmapFont(); 
     font.draw(sb,"Score :"+ String.valueOf(score), 500, Align.topLeft); 
     font.setColor(Color.WHITE); 
     float ratio=(float)AntSmasher.WIDTH/(float)mScore.getWidth(); 
     sb.draw(mScore, 
       (AntSmasher.WIDTH-mScore.getWidth()*ratio)/2, 
       AntSmasher.HEIGHT-mScore.getHeight()*ratio-50*AntSmasher.HEIGHT/AntSmasher.VIRTUALHEIGHT, 
       mScore.getWidth()*ratio, 
       mScore.getHeight()*ratio); 
     for(Bug ref:bugs) { 
      if(ref.getLife()) 
       sb.draw(ref.getRegion(), 
         ref.getPosition().x, 
         ref.getPosition().y, 
         ref.getRegion().getRegionWidth()*xScale, 
         ref.getRegion().getRegionHeight()*yScale); 
      else 
       sb.draw(ref.getImage(), 
         ref.getPosition().x, 
         ref.getPosition().y, 
         ref.getImage().getWidth()*xScale, 
         ref.getImage().getHeight()*yScale); 
     } 

     sb.end(); 
    } 

     @Override 
     public void input(String text) { 
      AntSmasher.firebase.addToFirebase(text,score); 
      //AntSmasher.firebase.addToFirebase("Okay",score); 
      score=0; 
     } 

     @Override 
     public void canceled() { 
      AntSmasher.firebase.addToFirebase("Anónimo",score); 
      score=0; 
     } 
    } 

내가 내 playstate 화면에 점수를 업데이트 내 코드를 놓친 곳에서 저를 도와주세요 :

여기 내 클래스입니다.

답변

0

공백 렌더링에서 점수 코드 도면을 추가해야합니다. 이

BitmapFont font = new BitmapFont(); 
font.draw(sb, String.valueOf(score), 200, 200); 

초기화 글꼴 더 나은 움직임 뭔가

이 또한 방법에게 응답을

Gdx.gl.glClearColor(1, 1, 1, 1); 
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
+0

덕분에 렌더링의 시작이 두 개의 문자열을 추가하려고 생성자. 내가 언급 한 코드 조각을 추가했습니다. 하지만 아직 내 화면에 어떤 점수 업데이 트를 표시하지 않았다 – Lucky

+0

업데이트 된 코드를 표시 할 수 있습니까? 점수를 그리려면 반드시 배경을 그려서 그림을 그려야합니다. – GuessWho

+0

예 내 렌더링 방법을 업데이트했습니다. 감사합니다. – Lucky