美好的一天,
我一直在尝试为我的游戏创建一个简单的分数系统并遇到问题。我想知道是否有人可以帮我调试我的代码。首先我遇到的问题是我的代码重复显示我当前的分数,但每次输入触摸命令时它都会重叠上一个当前分数。
我希望我的程序要做的是,无论何时收到触摸命令,它都会添加我的分数,然后在屏幕上显示当前分数。
有人可以帮我调试我的代码并给我一个简单的指南,这将有助于我构建我的分数系统。
这是我的代码:
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
}
答案 0 :(得分: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
}
答案 1 :(得分: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;
}
答案 2 :(得分:0)
currscore += score;
因为你之前宣布得分而不是currscore,所以这可能有所帮助。