2013-08-28 109 views
0

好日子,Libgdx:基本評分系統

我一直想爲我的遊戲創建一個簡單的評分系統,並遇到了問題。我想知道是否有人可以幫我調試我的代碼。首先,我遇到的問題是我的代碼重複顯示了我當前的分數,但每次輸入一個觸摸命令時,它都會重疊上一次的當前分數。

我想要我的程序做的是,只要它收到一個觸摸命令,它就會添加我的分數,然後在屏幕上打印當前分數。

有人可以幫我調試我的代碼,並給我一個簡單的指南,這將有助於我構建我的分數系統。

這裏是我的代碼:

Timer time; 
SpriteBatch btch; 
int score=0,currscore = 0; 
BitmapFont fntscore = new BitmapFont(Gdx.files.internal("fonts/pressstartk16white.fnt"),false); 

public void score() 
{ 
    if(Gdx.input.isTouched()) 
    { 
     score += 20; 
     System.out.print("score: " + score + "\n"); 
     currscore = score; 
     return; 
    } 
    else if(Gdx.input.isKeyPressed(Keys.S)) 
    { 
     score +=30; 
     System.out.print("score: "+ score + "\n"); 
     currscore = score; 
     return; 

    } 
} 

@Override 
public void render(float delta) { 

    score(); 
    btch.begin(); 
    fntscore.draw(btch, "score: " + currscore, 100, 100); 
    btch.end(); 
    // TODO Auto-generated method stub 

} 

回答

2

畫面清晰呈現前財產以後否則會重疊舊數據

@Override 
    public void render(float delta) { 
     Gdx.graphics.getGLCommon().glClearColor(1, 0, 0, 1); 
     Gdx.graphics.getGLCommon().glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 
     score(); 
     btch.begin(); 
     fntscore.draw(btch, "score: " + currscore, 100, 100); 
     btch.end(); 
     // TODO Auto-generated method stub 

    } 
0
if(Gdx.input.isTouched()) 
{ 
    score += 20; 
    System.out.print("score: " + score + "\n"); 
    currscore = score; 
    return; 
} 

改變它

if(Gdx.input.justTouched()) 
{ 
    score += 20; 
    System.out.print("score: " + score + "\n"); 
    currscore = score; 
    return; 
} 
+0

我不明白這一點。這是同一件事。 –

+0

ell justTouched只給你一個回叫,而isTouched給你一個連續的回叫,直到你觸及 –

0

對不起,我不能正確地得到你的問題,你可能會錯過這個,

currscore += score; 

因爲你剛剛宣佈分數而不是currsc礦石,所以這可能會有所幫助。

+0

謝謝,它確實提高了我的代碼。但它仍然打印並重疊我以前的打印件。 –

+0

對不起,我不知道。 – saravanakumar