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 화면에 점수를 업데이트 내 코드를 놓친 곳에서 저를 도와주세요 :
여기 내 클래스입니다.
덕분에 렌더링의 시작이 두 개의 문자열을 추가하려고 생성자. 내가 언급 한 코드 조각을 추가했습니다. 하지만 아직 내 화면에 어떤 점수 업데이 트를 표시하지 않았다 – Lucky
업데이트 된 코드를 표시 할 수 있습니까? 점수를 그리려면 반드시 배경을 그려서 그림을 그려야합니다. – GuessWho
예 내 렌더링 방법을 업데이트했습니다. 감사합니다. – Lucky