بازی بریکاوت
بریکاوت (breakout) یکی از بازیهای کلاسیک دنیای ویدیویی است. یک توپ داری، یک صفحهی کوچک پایین صفحه و یک دیوار آجر بالای آن. آن صفحهی کوچک را پَدل (paddle) مینامیم.
با پدل توپ را برمیگردانی و آجرها را میشکنی. هدف ساده است: همهی آجرها را بشکن و نگذار توپ از پایین بیفتد. ولی هر چه جلوتر بروی، توپ تندتر میشود و کار سختتر. 🧱

حالا خودت بازی کن
توپ را با پدل برگردان و همهی آجرها را بشکن. نگذار توپ از پایین بیفتد.
روی گوشی انگشتت را روی صفحهی بازی بکش تا پدل حرکت کند. دکمههای ◀ و ▶ هم همین کار را میکنند. روی کامپیوتر کلیدهای جهتدار چپ و راست را بزن. 🎮
عالی بود! سرعت و زمانبندی، کلید بردن این بازیاند. 🌟
بوم و حلقهی بازی
این بازی همهچیز را روی بوم (canvas) میکشد. بوم یک تختهی نقاشی داخل صفحهی وب است. توپ و پدل و آجرها روی همین تخته جان میگیرند.
کدش جاوااسکریپت ساده است و هیچ کتابخانهای ندارد. یعنی برنامهنویس هر خط از این حرکتها را خودش نوشته.
قلب کار حلقهی بازی (game loop) است. هر ثانیه حدود شصت بار سه کار را تکرار میکند. اول بوم را پاک میکند، بعد اشیا را جلو میبرد و دوباره همه را میکشد. آنقدر سریع که چشمت فقط حرکت روان میبیند. 🎨
فیزیک توپ و آجرها
توپ دو عدد دارد: سرعت افقی و سرعت عمودی. هر فریم برنامه این دو عدد را به جای توپ اضافه میکند. پس توپ جابهجا میشود.
حالا اگر توپ به دیوار چپ یا راست بخورد، سرعت افقیاش برعکس میشود. با دیوار بالا هم سرعت عمودی برعکس میشود. همین قانون ساده، جهش واقعی توپ را میسازد. برنامه هر فریم جای توپ را با جای هر آجر میسنجد. همین که توپ وارد محدودهی یک آجر شود، آن آجر میشکند و توپ برمیگردد.
برخورد با پدل هم نکته دارد. توپ از وسط پدل صاف بالا میرود و از گوشهها با زاویهی تندتر. پس میتوانی توپ را به سمت آجر دلخواهت هدایت کنی. 🎯
خودت را بسنج
حالا ببین چقدر از ساختِ این بازی را گرفتهای. یک سوال کوتاه در انتظارت است.
بازی بریکاوت توپ و آجرها را چطور روی صفحه میکشد؟
این بازی هیچ عکس آماده یا ویدیویی ندارد. یک بوم (canvas) وسط صفحه هست و جاوااسکریپت ساده همهچیز را روی همان بوم میکشد.
قلب کار حلقهی بازی است. هر ثانیه حدود شصت بار بوم را پاک میکند، جای توپ و پدل و آجرها را جلو میبرد و دوباره همه را میکشد. این تکرار آنقدر سریع میگذرد که چشمت حرکت روان میبیند.
با CSS تنها هم نمیشد این بازی را ساخت. سرعت توپ، برخورد با آجرها و تغییر زاویهی پرش، همگی به محاسبهی لحظهای نیاز دارند و این کار جاوااسکریپت است.