رفتن به محتوا

کمک با فاصله‌گذاری نمایش اعداد

💡 در مونتاژ بلوک‌های Scratch مشکل دارید؟ نمی‌دانید چگونه منطق کد را پیاده‌سازی کنید؟ 🚀 همین حالا کمک بگیرید

IS

Isopod7

منتشر شده در ۵ آگوست ۲۰۲۵ • متوسط

🔢 کمک با نمایش اعداد

من در حال ایجاد یک نمایش اعداد هستم که هنگام اضافه شدن اعداد کوچک‌تر می‌شود تا در یک مربع جا بگیرد و در مرکز باقی بماند. مشکل این است که فاصله‌های محور x بین اعداد هماهنگ نیستند.

می‌خواهم اعداد به طور یکنواخت فاصله داشته باشند و به طور خودکار با عرض کل تنظیم شوند. چگونه می‌توانم این را در Scratch پیاده‌سازی کنم؟

SC

ScratchCoder_Pro

۲ ساعت بعد پاسخ داد • ⭐ بهترین پاسخ

سوال عالی @Isopod7! نمایش‌های پویای اعداد با فاصله‌گذاری مناسب نیاز به رویکردی متفکرانه دارند. در اینجا یک راه‌حل کامل آورده شده است:

🔧 مرحله ۱: تنظیم متغیرها

ابتدا، این متغیرها را برای سیستم نمایش خود ایجاد کنید:

    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]
  

📏 مرحله ۲: محاسبه اندازه پویا

اندازه بهینه را بر اساس تعداد ارقام محاسبه کنید:

    // شمارش ارقام و محاسبه اندازه
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))
  

🎯 مرحله ۳: محاسبه موقعیت شروع

موقعیت شروع را برای وسط‌چینی تعیین کنید:

    // محاسبه موقعیت شروع برای وسط‌چینی
set [Total Width v] to ((Digit Count) * (Digit Spacing))
set [Start X v] to (0 - ((Total Width) / [2]))
  

🔢 مرحله ۴: ایجاد کلون‌های ارقام

برای هر رقم با فاصله‌گذاری مناسب کلون ایجاد کنید:

    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
  

➖ مرحله ۵: مدیریت اعداد منفی

برای اعداد منفی، مدیریت ویژه اضافه کنید:

    // بررسی اعداد منفی
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
  

🎨 مرحله ۶: رفتار کلون

در اسپرایت رقم، این رفتار کلون را اضافه کنید:

    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
  

🔄 مرحله ۷: سیستم نمایش کامل

همه چیز را در یک اسکریپت اصلی ترکیب کنید:

    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

۳۰ دقیقه بعد پاسخ داد

@ScratchCoder_Pro این فوق‌العاده است! خیلی ممنون! 🎉

توانستم سیستم پایه را کار کنم. یک سوال سریع: چگونه می‌توانم نمایش را با اعداد منفی نیز سازگار کنم؟ و چرا فاصله بین اعداد دو رقمی در راه‌حل شما اینقدر زیاد است؟



به کمک بیشتری در برنامه‌نویسی Scratch نیاز دارید؟ به جامعه ما بپیوندید و راهنمایی متخصص برای پروژه‌هایتان دریافت کنید! ✨🚀