我正在制作一个侧面滚动器,如果用户被火球或敌人击中,则程序应从寿命中减去-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 =❤❤❤❤❤❤❤❤❤❤❤❤”,带有有效的数组,可以减少字符串中的心数?
答案 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循环放入单独的方法中,并在每次直播丢失时将其与新参数一起使用。