显示字符串“ x”的次数

时间:2018-11-17 19:35:28

标签: java

我正在制作一个侧面滚动器,如果用户被火球或敌人击中,则程序应从寿命中减去-1。就像这样在屏幕上吸引用户。 “生命:3”。

尽管我已经成功实现了这一目标,但我正在努力做到这一点,以便以心脏的形式显示生命的数量。这样一来,游戏将具有更吸引人的用户界面。本质上的想法是,当失去生命时,绘制的字符串将来自此: “ 寿命:❤❤❤”到“ 寿命:❤❤”。

这是我执行此操作的代码:

public class GamePanel extends JPanel 
     private static final int MAX_HITS = 10;
     private int numHits = 0;

     public void sequenceEnded(String imageName) { 
     showExplosion = false;
     explosionPlayer.restartAt(0);

     if (numHits >= MAX_HITS) { 
         gameOver = true; 
         score = (int) ((System.nanoTime() - gameStartTime)/1000000000L);
     }

     private void reportStats(Graphics g) { 
        if (!gameOver)  
            timeSpentInGame = (int) ((System.nanoTime() -gameStartTime)/1000000000L);
        g.setColor(Color.red);
        g.setFont(msgsFont);
        int lives = MAX_HITS - numHits;
        g.drawString("Lives: " + lives + " ❤", 15, 25);
    } 

任何人都对我的发展有任何想法:“生命= 10❤”到
      “ Lives =❤❤❤❤❤❤❤❤❤❤❤❤”,带有有效的数组,可以减少字符串中的心数?

3 个答案:

答案 0 :(得分:1)

使用流API:

String lives = Stream.generate(() -> "❤")
                     .limit(lives)
                     .collect(joining("", "Lives: ", ""));

g.drawString(lives, 15, 25);

或自JDK8(join)起可用的另一种方法:

g.drawString(String.join("", Collections.nCopies(lives, "❤")), 15, 25);

答案 1 :(得分:0)

您可以使用循环创建一个新的hearts字符串,然后使用它。

String hearts = "";
for (int i = 0; i < lives; i++) {
    hearts += "❤";
}

g.drawString("Lives: " + hearts, 15, 25);

答案 2 :(得分:0)

我给你基本的想法。

int lives = 10;
String livesString = "Lives = ";

for (int i = 0; i < lives; i++) {
   livesString += "❤";
}

将此for循环放入单独的方法中,并在每次直播丢失时将其与新参数一起使用。