コンテンツにスキップ

数字表示の間隔に関するヘルプ

💡 Scratchブロックの組み立てに困っていませんか?コードロジックの実装方法がわからない? 🚀 今すぐヘルプを受ける

IS

Isopod7

2025年8月5日投稿 • 中級

🔢 数字表示のヘルプ

数字が追加されたときに正方形に収まり、中央に配置されるように小さくなる数字表示を作成しています。問題は、数字間のx軸の間隔が調整されていないことです。

数字を均等に間隔を空けて、全体の幅に自動的に調整したいと思います。Scratchでこれを実装するにはどうすればよいでしょうか?

SC

ScratchCoder_Pro

2時間後に回答 • ⭐ ベストアンサー

素晴らしい質問ですね @Isopod7!適切な間隔を持つ動的な数字表示には、よく考えられたアプローチが必要です。完全なソリューションをご紹介します:

🔧 ステップ1:変数の設定

まず、表示システム用にこれらの変数を作成します:

    when flag clicked
set [Number to Display v] to [12345]
set [Display Width v] to [200]
set [Display Height v] to [50]
set [Digit Count v] to [0]
set [Digit Width v] to [0]
set [Digit Spacing v] to [0]
set [Start X v] to [0]
  

📏 ステップ2:動的サイズの計算

桁数に基づいて最適なサイズを計算します:

    // 桁数を数えてサイズを計算
set [Digit Count v] to (length of (Number to Display))
set [Digit Width v] to ((Display Width) / (Digit Count))
if <(Digit Width) > [30]> then
set [Digit Width v] to [30]
end
set [Digit Spacing v] to ((Display Width) / (Digit Count))
  

🎯 ステップ3:開始位置の計算

中央配置のための開始位置を決定します:

    // 中央配置のための開始位置を計算
set [Total Width v] to ((Digit Count) * (Digit Spacing))
set [Start X v] to (0 - ((Total Width) / [2]))
  

🔢 ステップ4:桁のクローンを作成

適切な間隔で各桁のクローンを作成します:

    delete all clones of [Digit Sprite v]
set [Current Position v] to (Start X)
repeat (Digit Count)
set [Current Digit v] to (letter (Current Position + 1) of (Number to Display))
create clone of [Digit Sprite v]
change [Current Position v] by (Digit Spacing)
end
  

➖ ステップ5:負の数の処理

負の数については、特別な処理を追加します:

    // 負の数をチェック
if <(letter [1] of (Number to Display)) = [-]> then
set [Has Negative v] to [true]
set [Number to Display v] to (letter [2] to (length of (Number to Display)) of (Number to Display))
else
set [Has Negative v] to [false]
end

// 必要に応じてマイナス記号のクローンを作成
if <(Has Negative) = [true]> then
set [Current Digit v] to [-]
set [Current Position v] to ((Start X) - (Digit Spacing))
create clone of [Digit Sprite v]
end
  

🎨 ステップ6:クローンの動作

桁スプライトに、このクローンの動作を追加します:

    when I start as a clone
go to x: (Current Position) y: [0]
set size to ((Digit Width) / [20] * [100]) %
switch costume to (Current Digit)
show
  

🔄 ステップ7:完全な表示システム

すべてをメインスクリプトに組み合わせます:

    define Update Number Display (number)
set [Number to Display v] to (number)
delete all clones of [Digit Sprite v]

// 負の数を処理
if <(letter [1] of (number)) = [-]> then
set [Has Negative v] to [true]
set [Number to Display v] to (letter [2] to (length of (number)) of (number))
else
set [Has Negative v] to [false]
end

// サイズと間隔を計算
set [Digit Count v] to (length of (Number to Display))
if <(Has Negative) = [true]> then
change [Digit Count v] by [1]
end

set [Digit Spacing v] to ((Display Width) / (Digit Count))
set [Digit Width v] to ((Digit Spacing) * [0.8])
if <(Digit Width) > [30]> then
set [Digit Width v] to [30]
end

set [Total Width v] to ((Digit Count) * (Digit Spacing))
set [Start X v] to (0 - ((Total Width) / [2]))

// マイナス記号を作成
if <(Has Negative) = [true]> then
set [Current Digit v] to [-]
set [Current Position v] to (Start X)
create clone of [Digit Sprite v]
change [Start X v] by (Digit Spacing)
end

// 桁を作成
set [Digit Index v] to [1]
repeat (length of (Number to Display))
set [Current Digit v] to (letter (Digit Index) of (Number to Display))
set [Current Position v] to ((Start X) + ((Digit Index - 1) * (Digit Spacing)))
create clone of [Digit Sprite v]
change [Digit Index v] by [1]
end
  

💡 プロのヒント

  • レスポンシブサイジング: 桁の最小・最大サイズを使用
  • スムーズな遷移: サイズ変更時にスライドアニメーションを追加
  • 小数点: 小数点のためにシステムを拡張
  • 異なるフォント: 様々なスタイルのために異なるコスチュームを作成

このシステムは、適切な中央配置を維持しながら、桁数に基づいてサイズと間隔を自動的に調整します!🎯

IS

Isopod7

30分後に返信

@ScratchCoder_Pro それは素晴らしいです!ありがとうございます!🎉

基本システムを動作させることができました。簡単な質問:表示を負の数にも対応させるにはどうすればよいでしょうか?また、あなたのソリューションで2桁の数字間の間隔がそんなに大きいのはなぜですか?



Scratchプログラミングでもっとヘルプが必要ですか?私たちのコミュニティに参加して、プロジェクトの専門的なガイダンスを受けましょう! ✨🚀