بازی برک آوت

ساخت وبلاگ

در این بخش از آموزش بازی های Java 2D ما یک کلون بازی برک آوت ساده ایجاد می کنیم. کد منبع و تصاویر را می توان در مخزن بازی GitHub Java-Breakout در بازی یافت.

Breakout یک بازی بازی است که در ابتدا توسط Atari Inc ساخته شده است. این بازی در سال 1976 ایجاد شد.

توسعه تبلیغات

در بازی ما یک دست و پا ، یک توپ و 30 آجر داریم. من تصویری برای یک توپ ، دست و پا و آجر در Inkscape ایجاد کرده ام. ما از یک تایمر برای ایجاد چرخه بازی استفاده می کنیم. ما با زاویه کار نمی کنیم ، به سادگی جهت ها را تغییر می دهیم. بالا ، پایین ، چپ و راست. من از بازی Pybreakout الهام گرفتم. این کتاب در کتابخانه Pygame توسط ناتان داوسون ساخته شده است.

در این بازی ، بازیکن یک دست و پا زدن را روی صفحه حرکت می کند و توپ یا توپ را پر می کند. هدف از بین بردن آجرها در بالای پنجره است.

این بازی از هفت پرونده تشکیل شده است: commons. java ، sprite. java ، ball. java ، paddle. java ، brick. java ، board. java ، and breakout. java.

com/zetcode/commons. java بسته com. zetcode ؛عوام رابط عمومی

پرونده commons. java دارای برخی از ثابت های مشترک است. ثابت و ارتفاع ثابت ابعاد تخته را ذخیره می کند. وقتی توپ از Bottom_edge عبور می کند ، بازی به پایان رسیده است. N_OF_BRICKS تعداد آجر بازی است. init_paddle_x و init_paddle_y مختصات اولیه شیء paddle هستند. init_ball_x و init_ball_y مختصات اولیه شیء توپ هستند. تأخیر تأخیر اولیه در میلی ثانیه قبل از اجرای کار است و دوره زمان در میلی ثانیه بین اعدام های وظیفه پی در پی است که چرخه بازی را تشکیل می دهد.

com/zetcode/sprite. java

بسته com. zetcode ؛وارد کردن java. awt. image ؛وارد کردن java. awt. rectangle ؛اسپریت کلاس عمومیint getx ()محافظت شده Void Sety (int y)int gety ()int getImageWidth ()int getImageHeight ()تصویر getImage ()مستطیل getRect ()void getImagedImensions ()>

کلاس Sprite یک کلاس پایه برای همه اشیاء موجود در صفحه است. ما در اینجا تمام روش ها و متغیرهای موجود در اشیاء توپ ، آجر و دست و پا مانند روش های GetImage () یا GetX () را قرار می دهیم.

com/zetcode/brick. java

بسته com. zetcode ؛وارد کردن javax. swing. imageicon ؛آجر کلاس عمومی اسپریت را گسترش می دهدvoid initbrick خصوصی (int x ، int y)loadImage void private ()boolean isdestroyed ()void setDestroyed (بولی وال)>

این کلاس آجری است.

بولی خصوصی نابود شد.

در متغیر تخریب شده وضعیت آجر را حفظ می کنیم.

com/zetcode/ball. java

بسته com. zetcode ؛وارد کردن javax. swing. imageicon ؛توپ کلاس عمومی اسپریت را گسترش می دهدvoid initball خصوصی ()loadImage void private ()Void Move ()if (x == commons. width - imagewidth)if (y == 0)>void private resetstate ()void setxdir (int x)void setydir (int y)int getydir ()>

این کلاس توپ است.

Void Move ()if (x == commons. width - imagewidth)if (y == 0)>

روش Move () توپ را روی صفحه حرکت می دهد. اگر توپ به مرزها برخورد کند ، دستورالعمل ها بر این اساس تغییر می کنند.

void setxdir (int x)void setydir (int y)

این دو روش هنگام برخورد توپ به دست و پا یا آجر نامیده می شوند.

com/zetcode/paddle. java

بسته com. zetcode ؛وارد کردن java. awt. event. keyevent ؛وارد کردن javax. swing. imageicon ؛دست و پا زدن کلاس عمومی اسپریت را گسترش می دهدvoid private initpaddle ()loadImage void private ()Void Move ()= commons. width - imagewidth)>void keypressed (keyevent e)if (key == keyevent. vk_right)>void keyrelead (keyevent e)if (key == keyevent. vk_right)>void private resetstate ()>

این کلاس دست و پا زدن است. این شیء دست و پا را در بازی Breakout محصور می کند. دست و پا زدن با کلیدهای فلش چپ و راست کنترل می شود. با فشار دادن کلید فلش ، متغیر جهت را تنظیم می کنیم. با انتشار کلید فلش ، متغیر DX را روی صفر تنظیم می کنیم. به این ترتیب دست و پا زدن حرکت می کند.

Void Move ()= commons. width - imagewidth)>

دست و پا زدن فقط در جهت افقی حرکت می کند ، بنابراین ما فقط مختصات X را به روز می کنیم. اگر شرایط اطمینان حاصل شود که دست و پا از لبه های پنجره عبور نمی کند.

com/zetcode/board. java

بسته com. zetcode ؛وارد کردن javax. swing. jpanel ؛وارد کردن javax. swing. timer ؛وارد کردن java. awt. color ؛وارد کردن java. awt. dimension ؛وارد کردن java. awt. font ؛واردات java. awt. fontmetrics ؛وارد کردن java. awt. graphics ؛واردات java. awt. graphics2d ؛وارد کردن java. awt. point ؛واردات java. awt. renderinghints ؛وارد کردن java. awt. toolkit ؛وارد کردن java. awt. event. actionevent ؛واردات java. awt. event. actionlistener ؛وارد کردن java. awt. event. keyadapter ؛وارد کردن java. awt. event. keyevent ؛هیئت مدیره کلاس عمومی JPanel را گسترش می دهدvoid initboard خصوصی ()gameinit void private ()> timer = new Timer(Commons.PERIOD, new GameCycle()); timer.start();>Override Public void paintcomponent (گرافیک G)دیگرToolkit.getDefaultToolkit().sync();>drawObjects void private (Graphics2d G2D)>>Private Void GameFinished (Graphics2d G2D)TADAPTER کلاس خصوصی KeyAdapter را گسترش می دهد<@Override public void keyReleased(KeyEvent e) Override Public void keypressed (keyevent e)>کلاس خصوصی Gamecycle ActionListener را پیاده سازی می کند<@Override public void actionPerformed(ActionEvent e) >void poid dogamecycle ()stopgame void private ()CheckCollision Void Private ()commons. bottom_edge)برای (int i = 0 ، j = 0 ؛ iif (j == commons. n_of_bricks)>if ((ball. getRect ()). تقاطع (paddle. getRect ()))if (ballLPos>= اول و & balllposif (ballLPos>= Second && balllposif (ballLPos>= سوم و & balllpos rif (ballLPos>چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) از چهارم) »>برای (int i = 0 ؛ iدیگری اگر (آجر [i] . getRect (). حاوی (pointleft))if (آجر [i] . getRect (). حاوی (pointtop))اگر (آجر [i] . getRect (). حاوی (pointbottom))bricks[i].setDestroyed(true);>>>>>

این کلاس هیئت مدیره است. در اینجا منطق بازی را قرار می دهیم.

gameinit void private ()> timer = new Timer(Commons.PERIOD, new GameCycle()); timer.start();>

در روش GameInit () ما یک توپ ، یک دست و پا و سی آجر ایجاد می کنیم. سپس یک تایمر را ایجاد و راه اندازی می کنیم.

if (ingame)دیگر

بسته به متغیر Ingame ، ما یا تمام اشیاء را در روش DrawObjects () ترسیم می کنیم یا بازی را با روش GameFinished () به پایان می رسانیم.

drawObjects void private (Graphics2d G2D)>>

روش DrawObjects () تمام اشیاء بازی را ترسیم می کند. اسپریت ها با روش drawimage () ترسیم شده اند.

Private Void GameFinished (Graphics2d G2D)

روش GameFinished () "بازی را بیش از" یا "پیروزی" به وسط پنجره جلب می کند.

کلاس خصوصی Gamecycle ActionListener را پیاده سازی می کند<@Override public void actionPerformed(ActionEvent e) >

تایمر به طور دوره ای روش ActionPerformed () را فراخوانی می کند ، که روش Dogamecycle () را می نامد و یک چرخه بازی ایجاد می کند.

void poid dogamecycle ()

Dogamecycle () توپ و دست و پا را حرکت می دهد. ما برخوردهای احتمالی را بررسی می کنیم و صفحه را دوباره رنگ می کنیم.

CheckCollision Void Private ()commons. bottom_edge).

اگر توپ به پایین برخورد کند ، ما بازی را متوقف می کنیم.

برای (int i = 0 ، j = 0 ؛ iif (j == commons. n_of_bricks)>

ما بررسی می کنیم که چند آجر نابود شده است. اگر همه آجرهای N_OF_BRICKS را نابود کنیم ، بازی را برنده می شویم.

if (balllpos

اگر توپ به قسمت اول دست و پا زدن برخورد کند ، ما جهت توپ را به شمال غربی تغییر می دهیم.

if (آجر [i] . getRect (). حاوی (pointtop)).

اگر توپ به پایین آجر برخورد کند ، ما جهت Y توپ را تغییر می دهیم. پایین می رود

com/zetcode/breakout. java
بسته com. zetcode ؛وارد کردن javax. swing. jframe ؛وارد کردن java. awt. eventqueue ؛شکستن کلاس عمومی JFrame را گسترش می دهدvoid private initui ()عمومی استاتیک اصلی اصلی (رشته [] args));>>

این کلاس Breakout است که دارای روش اصلی ورود است.

The Breakout game

شکل تبلیغات: بازی برک آوت

این بازی برک آوت بود.

گزارش این تبلیغ

 

فارکس کاران ایران...
ما را در سایت فارکس کاران ایران دنبال می کنید

برچسب : نویسنده : ديناروند فهيمه بازدید : <-PostHit-> تاريخ : پنجشنبه 26 مرداد 1402 ساعت: 10:41