Skip to main content
Participant
December 15, 2024
Answered

animate のダイナミックテキストでゲームの点数表示をしたいのですが、うまく設定できません。

  • December 15, 2024
  • 1 reply
  • 251 views

animate2024を使用しています。

Canvasを使ってブラウザでできるゲームを作っています。

スコア表示をしたいのですが、ダイナミックテキストでscというインスタンスにして、

そこに10を加算したいです。

var score = 0;

this.sc.text = score;

として、このscoreに対して加算していきたいんですが、どうすればいいんでしょうか?

 

This topic has been closed for replies.
Correct answer momohanna

変数scoreがthis.scoreと別々に扱われているため、加算する度にthis.scoreが常にリセットされてしまうことが原因です。

次のコードを試してください。

 

// 初期化
if (!this.alreadyExecuted) {
this.alreadyExecuted = true;
this.score = 0; // スコアを初期化
this.sc.text = this.score; // 初期スコアを表示
}

// スコア加算処理
this.score += 10; // スコアを10加算
this.sc.text = this.score; // ダイナミックテキストを更新
alert(this.score); // 現在のスコアを表示

1 reply

somensennin
Participant
December 16, 2024

補足します。

下記のアクションを実行します。

var score = 0;
if(!this.alreadyExecuted){
this.alreadyExecuted = true;
this.score = 0;
alert(score);
}else{score = score + 10;
alert(score);
}
これを実行すると、1回目0、2回目以降10が繰り返し返ってきます。
これを10,20,30...としたいのですが、方法がわかりません。
どなたかご教示いただけないでしょうか。
よろしくお願いいたします。
somensennin
Participant
December 16, 2024

すいませんアカウントが変わりましたが質問者です(汗

よろしくお願いします。

momohanna
Community Expert
momohannaCommunity ExpertCorrect answer
Community Expert
December 27, 2024

変数scoreがthis.scoreと別々に扱われているため、加算する度にthis.scoreが常にリセットされてしまうことが原因です。

次のコードを試してください。

 

// 初期化
if (!this.alreadyExecuted) {
this.alreadyExecuted = true;
this.score = 0; // スコアを初期化
this.sc.text = this.score; // 初期スコアを表示
}

// スコア加算処理
this.score += 10; // スコアを10加算
this.sc.text = this.score; // ダイナミックテキストを更新
alert(this.score); // 現在のスコアを表示

momohanna