الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هدية العيد لعبة Plane FIghter

بدأه Final Heaven في 21 أكتوبر 2006 · 41 رد · 9,852 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

أود التهنئة المسبقة بقدوم عيد الفطر المبارك أعاده الله علينا بالصحة و البركة و العافية "كل عام و أنتم بخير"

و بهذه المناسبة أحببت أن أقدم هذه اللعبة البسيطة التي قمت بتصميمها و أسميتها Plane Fighter

و ذلك لغرض الإستفادة و التعلم

فلا تنسونا من دعائكم

و الله و لي التوفيق

و هذه اللعبة كملف Jar و الذي يمكنك من تشغيل اللعبة

PlaneFightGame.zip

و هذا هو الكود الخاص باللعبة

Plane_Fighter_Code.zip

تم تعديل هذه المشاركة بواسطة Final Heaven في 21 أكتوبر 2006 في 11:51

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#2

كل عام وانت بخير وتشكر على اللعبة ..

لو بتعرف ابن عمتي ذو الخمس سنوات شو انبسط فيها ... ما عاد يتركهاا ..

الأشكال التي اخترتها كوحوش تعجب الأطفال

تم تعديل هذه المشاركة بواسطة nardien28 في 22 أكتوبر 2006 في 00:03

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#3

شكر على اللعبة اخوي صراحه مره حلوه الاشكال

* ممكن عدم استخدام جميع ال InterFaces Methods الي داخل ال MouseListener

عن طريق استخدام MouseAdapter او عن طريق انشائه يدوي

فم بانشاء كلاس فاضي وضع Implements ل MouseListener ومن ثم قم بكتابه جميع المثود المطلوبه ومن ثم قم باستدعاء الكلاس عن طريق الوراثه وبالشكل هذا ما راح تتطلب كتابه جميع تعريفات المثود

يعيطك العافيه وننتظر المزيد

#4

شكرا للأخت nardien28 على ردها و للأخ _Developer_ أيضا

بصراحة أخي يحب تجميع الصور و خاصة الألعاب، فمنها إخترت الصور

و أما بالنسبة لك يا أخي _Developer_ فلا أرى فارقا بين إستخدامي ل Mouse Listener أو Mouse Adapter

فكما تعلم بأن الجافا لا تسمح ب Multiple Inheritance مثل C++ لذا كان وجود Interface

و إن ذهبت إلى Implementation Of Mouse Adapter فسترى بأنها إستخدمت Mouse Listener و عرفت جميع methods فارغة

و إنك تعلم بأن في حالة Inheritance فإنك ترث كل ما في الكلاس و لكنك تستطيع إستخدام ما هو Public أو Protected منها

فما من مشكلة في إستخدامي ل Mouse Listener و تعريف methods التي لا أحتاجها فارغة أو أن أقوم بوراثتها فارغة

و ترى بأني قمت بوراثة JFrame و أحتاج ل Mouse Listener بأن تعمل عليه

أتمنى أن أكون واضحاً

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة Final Heaven في 22 أكتوبر 2006 في 08:34

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#5

ممتاز بارك الله فيك...

لعبة ممتازة،، ولا تنس أن هذا هو الإصدار الأول.... ونتطلع إلى الإصدار الثاني المطور!!

بالتوفيق!

يقصد Developer على ما أعتقد أن تستخدم MouseInputAdapter

لاحظ أن هذه الفئة لا ترث إلا من JFrame فقط!

واستخدمنا MouseInputAdapter!

package finalheaven.planes;
/*
 * GameMain.java
 *
 * Created on October 14, 2006, 8:02 AM
 *
 */

/**
 *
 * @author Final Heaven
 */



//~--- JDK imports ------------------------------------------------------------

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputAdapter;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

//~--- classes ----------------------------------------------------------------

public final class GameMain extends JFrame
{

	// public static boolean endGame;
	private final static int GAME_WIDTH = 600;
	private final static int GAME_HEIGHT = 600;
	private final static int SCREEN_WIDTH =
	(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
	public static boolean checkGame;
	private static Dimension dimension;

	//~--- constructors -------------------------------------------------------

	/** Creates a new instance of GameMain */
	public GameMain()
	{
		super("Plane Fighter");
		this.getContentPane().setBackground(Color.BLACK);
		GlobalVariables.gameMain = this;
		this.dimension = new Dimension(GAME_WIDTH, GAME_HEIGHT);
		this.setSize(dimension);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBackground(Color.BLACK);
		this.setLocation((SCREEN_WIDTH - GAME_WIDTH) / 2, 0);
		this.setResizable(false);
		GlobalVariables.score = new Score();
		GlobalVariables.plane = new Plane();
		GlobalVariables.plane.start();
		GlobalVariables.badGuys = new BadGuys();
		GlobalVariables.badGuys.start();

		// endGame=false;
		MouseInputAdapter mia=new MouseInputAdapter(){
			public void mouseClicked(MouseEvent e){
				new Rocket(e.getX(), 500).start();
				System.gc();
			}


			public void mouseMoved(MouseEvent e){
				GlobalVariables.plane.setX(e.getX() - 40);
			}

		};
		this.addMouseListener(mia);
		this.addMouseMotionListener(mia);
		checkGame = false;
	}

	//~--- methods ------------------------------------------------------------

	public void deleteExplosion(Graphics g, int x, int y, int doubling)
	{
		g.setColor(Color.BLACK);
		g.fillOval(x - 4, y - 4, 25 + doubling + 4, 25 + doubling + 4);
	}

	public void endGame()
	{
		Toolkit.getDefaultToolkit().beep();

		if (JOptionPane.showConfirmDialog(
			this, "You Lost, Do You Want To Restart Game", "Game Over",
			JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
		{
			GlobalVariables.startForm.setVisible(true);
			GlobalVariables.score.finalize();
			this.finalize();
		}
		else
		{
			System.exit(0);
		}
	}

	public void explosion(Graphics g, int x, int y, int doubling)
	{
		g.setColor(Color.ORANGE);
		g.drawOval(x, y, 20 + doubling, 20 + doubling);
		g.drawOval(x, y, 21 + doubling, 21 + doubling);
		g.drawOval(x - 1, y - 1, 22 + doubling, 22 + doubling);
		g.drawOval(x - 1, y - 1, 23 + doubling, 24 + doubling);
		g.drawOval(x - 2, y - 2, 24 + doubling, 24 + doubling);
		g.drawOval(x - 2, y - 2, 25 + doubling, 25 + doubling);
	}

	protected void finalize()
	{
		this.setVisible(false);
		this.dispose();
	}



	public void paint(Graphics g)
	{
		g.setColor(Color.BLACK);
	}

	public void removeBult(Graphics g, int x, int y)
	{
		g.setColor(Color.BLACK);
		g.fillOval(x, y, 10, 10);
	}

	public void runBult(Graphics g, int x, int y)
	{
		g.setColor(Color.LIGHT_GRAY);
		g.fillOval(x, y, 10, 10);
	}

	public void youWin()
	{
		Toolkit.getDefaultToolkit().beep();

		if (JOptionPane.showConfirmDialog(
			this,
			"Congratulations You Win!\nDo You Want To Restart The Game?",
			"You Are A Winner", JOptionPane.YES_NO_OPTION,
			JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION)
		{
			GlobalVariables.startForm.setVisible(true);
			GlobalVariables.score.finalize();
			this.finalize();
		}
		else
		{
			System.exit(0);
		}
	}
}
#6

شكرا لك يا أخ حسام على هذه المعلومة الجميلة

بارك الله فيك

فما عهدناك إلا متحفا إيانا بالحلول النيرة و الخبرات الجميلة

و كل عام و أنت بخير

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#7

السلام عليكم ورحمه الله وبركاته

يعطيك العافيه على شرح نقطه ال MouseListener

عندي تعليق بسيط على الكود اذا سمحت :

- استخدام اكثر من Thread معقد البرنامج قليلا

- Threads تقوم بالرسم على ال Main غير منطقيه

المفروض تخلي ال Thread تقوم بانشاء خصائصها ومن ثم تقوم Imageالقيم الى Main

- اقتراح :

لو تقوم بتجميع ال Threads ك Thread واحد ومن دون Sleep يستعدى ال Paint وتجعله لل Main

وتجعل ال Paint تقوم استخدام مصفوفه من نوع Image وتقوم برسم جميع الصور بنفس الوقت

وشكرا

#8

أتمنى أن تضع وصلة للعبتك هنا ..

/index.php?showtopic=85808

كوصلة فقط .

--

مستوى اللعبة جيد جدا مرتفع .. يعني ممتاز :) .

بس ألاحظ أنه في مشكلة بإعادة الرسم .. يعني الدوائر البيضاء التي تمر على الاشكال الشبحية تترك مكانها خط أسود .

وتزيل الصورة ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

لعبة ممتازة

حقيقة لم اتطلع على الكود ولكن قراة قديما مقال او درس في موقع صن يتحدث عن عمل برامج ملئ الشاشة كالالعاب ممكن ان تطور لعبة لتكون ملئ الشاشة من غير نوافذ

رابط من موقع Sun

http://java.sun.com/docs/books/tutorial/ex...lusivemode.html

Key Word:

Full Screen Mode in java

بالتوفيق

منقطع من حين لاخر

#10

فطر سعيد للجميع

شكرا للأخ الشمري على ما تفضل به (هذا إطراء مشرّف لي من حضرتكم)

و أتمنى أن أكون دائما عند حسن الظن بإذن الله

و سأعمل على تعديل اللعبة لإزالة الشائبة التي تفضلت في إطلاعي عليها إن شاء الله

و أتمنى أن لا يلومني أحد على أية شوائب في اللعبة، و حبذا لو يتم تنبيهي إليها كما قام الأخ المشرف الفاضل "الشمري" جزاه الله خيرا

فأنا الآن في السنة الجامعية الأخيرة و ستبدأ بعد ايام، فإعذروني لأن تفاعلي قد يكون بطيئا جداً داخل المنتدى

و بالنسبة للأخ _Developer_ لم أمسك بما ترمي إليه من كلامك و لكن سأحاول أن أجيب

لم أفهم ما تقصده بإستخدامي ل Main فأنا أستخدم Graphics الخاصة ب JFrame لأقوم بالرسم عليه، و مكنت كلّ Thread من العمل و الرسم على

JFrame ك Operation لوحدها،فأنت ترى بأنك عند الضغط على Mouse فإن new Object ينشأ و يأخذ Y و X الخاصة بالطائرة عند نشأته

و من ثمّ تعمل Thread لوحدها لإكمال الطريق و من ثم تنتهي عند الإصطدام أو الخروج من حدود Frame

و سبب إستخدامي ل Sleep للإبطاء من سرعة عمل Thread لتكون سرعة رسم Object و هو يمشي مرئية و إلا ستكون سريعة جدا، مثل ال Object

الذي تحدثت عنه بالأعلى عند ضغط Click On Mouse فإنك لن تراه، لأنه سيكون سريعا جدا و Sleep مكنت من إبطاء سرعة Operation الخاصة ب Thread

و كيف أرسم كل الصور في نفس الوقت فإن لكل Object ال Operation الخاصة بها و تتغير معطياتها بسرعة

فإن لإستخدام Thread يمكن المبرمج من عمل عدة Operations ليعملو معا في نفس الوقت

أتمنى أن أكون قد أجبت عن إستفسارك

و الله وليّ التوفيق

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#11

شكرا لك يا أخ أبوالفؤاد

أرجو أن أكون أهلا لإهتمامك بعملي المتواضع

فطر سعيد

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#12

أرفق لكم الآن اللعبة بعد إجراء عدة تعديلات طفيفة عليها:

- زيادة عدد الوحوش إلى 9

- تصغير حجم الصورة المنطلقة من الطائرة ليتناسب مع حجمها

- إنطلاق إثنان في نفس الوقت من كلتا طرفي الطائرة

- تصحيح مشكلة عدم ظهور الصور في بعض الأحيان

- عدم القيام بأي Operation إلا عند ظهور الصورة على Frame

- تصحيح مشكلة إزالة الصورة عند مرور الدوائر البيضاء عبرها

- تصحيح مشكلة بقاء Thread يعمل في الذاكرة عند إعادة اللعبة دون إغلاق اللعبة

- تحسين نقاط تدمير الصور المنطلقة من الطائرة

- إستخدام MouseInputAdapter مكان MouseListener و MouseMotionListener

و الآن لكم اللعبة:

Plane_Fight_Game.zip

و أما هنا فالكود المعدل:

PlaneFighter.rar

تم تعديل هذه المشاركة بواسطة Final Heaven في 25 أكتوبر 2006 في 21:20

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#13

بالنسبة لي هذه النسخة النهائية التي أقوم بوضعها و فيها:

- تحسينات عامّة على اللعبة

- الإستغناء عن بعض الأوامر لعدم الحاجة لها

- تعديل أداء طلقات الطائرة

- تصحيح وجود خط يطهر خلف كل طلقة على Frame و التي لاحظتها على VGA غير GForce

- تقريبا حلت مشكلة الجمود الذي يحصل عند بدأ اللعبة في بعض الأحيان

ملاحظة: إن الأداء البطئ للعبة الذي يحصل سببه وجود برنامج آخر يستهلك المعالج و هذا أحد الأسباب التي قد تسبب جموداً في بداية اللعبة، و إن حدث

هذا الجمود و دون وجود ما يستهلك المعالج قم بإفراغ Ram بإستخدام أحد برامج Freeram

و هذا هو البرنامج:

PlaneFighterExecutableJar.zip

و هذا هو الكود:

PlaneFighter.zip

أتمنى عليكم يا إخوتي ألا تنسوني من دعائكم بالخير

تم تعديل هذه المشاركة بواسطة Final Heaven في 31 أكتوبر 2006 في 17:13

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#14

قمت بمراجعة الكود بالصدفة فوجدت خطأ في Logic الذي إعتمدته In Events قمت بتعديله، و بصراحة بعد التعديل لم يحدث أي جمود في اللعبة عند تشغيلها

حتى الآن و أزلت بعض variables التي لم تستخدم

و هذا هو البرنامج:

و هذا هو الكود:

آسف على كثرة التعديلات و لكن أمرنا حبيبنا الرسول الكريم

«إذا عمل أحدكم عملا فليتقنه»

و أيضاً:

«إن الله يحب أحدكم إذا عمل عملا أن يتقنه»

فلا تنسونا من دعوة صالحة

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#15

ضع أرقاما لهذه الإصدارات....

عمل رائع,,

بالتوفيق!

#16

بهنيك على مثابرتك ... يبدو ان لعبتك ستصبح ماركة مسجلة ..ولم لا ...

بعض من التطوير والمراحل الاضافية ... بعض المؤثرات الصوتية

من وقت ما قدمت لنا اللعبة بالعيد وانا احاول عمل اصار نسخة منها خاصة بالأجهزة الجوالة

سأقدمها قريبا حلواااااااان اشرافي :P ..

تم تعديل هذه المشاركة بواسطة nardien28 في 23 نوفمبر 2006 في 16:48

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#17
لعبة Plane Fighter على الجوالات

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#18

بجد عمل رائع جدا

#19

شكرا لكم

و أهنئك أخت nardien28 على لعبتك الجميلة

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#20

أخيراً ظهرت النسخة السادسة من ال JDK الخاص بالجافا من شركة Sun

و قد وجدت بأن الخلفية السوداء للعبة تختفي عند التشغيل على النسخة الجديدة 1.6

لذا عليك بزيادة هذين السطرين إلى Constructtor الخاص بالكلاس ذو الإسم GameMain

	 this.getContentPane().setBackground(Color.BLACK);
	 super.paint(this.getGraphics());

و إزالة الكود السابق

	 this.setBackground(Color.BLACK).

فستصبح على الشكل التالي:

public GameMain() {
	 super("Plane Fighter");
	 GlobalVariables.gameMain = this;
	 initComponents();
	 this.getContentPane().setBackground(Color.BLACK);
	 super.paint(this.getGraphics());
}

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#21

أسلوب تعديل الكود الذي إعتمدته في الردّ السابق ليس كاملا ذلك أنني لم أنتبه إلى أن الخلفية تختفي أيضاً بعد الرجوع من حالة Minimize أو عندما تخسر Focus

و ذلك بسبب عمليتي ClearBuffer و Clipping

قمت بتعديل الكود على الشكل التالي:

أولا إزالة التعديل السابق.

ثانياً إضافة JDK Imports الخاصة ب Window:

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

ثالثاً إضافة Variables:

private boolean					   repaintBackground = true;
private WindowAdapter		  frameAdapter;

رابعاً الولوج إلى method ذات الإسم initComponents:

إزالة

this.setBackground(Color.BLACK);

و إستبدالها ب:

this.getContentPane().setBackground(Color.BLACK);

خامساً زيادة هذا الكود داخل initComponents:

frameAdapter = new WindowAdapter() {
		public void windowDeiconified(WindowEvent e) {
		repaintBackground = true;
		}
		public void windowGainedFocus(WindowEvent e) {
		repaintBackground = true;
		}
};
this.addWindowFocusListener(frameAdapter);
this.addWindowListener(frameAdapter);

سادساً تعديل method المسمات Paint:

public void paint(Graphics g) {
	if (this.repaintBackground) {
		super.paint(g);

		this.repaintBackground = false;
	}

	g.setColor(Color.BLACK);
}

و هذه هي اللعبة مع الكود بعد التعديل بإصدارها 1.12:

ملف التشغيل:

الكود:

ملاحظة: ينصح بإستخدام الإصدار الجديد من الجافا JDK1.6 أو JRE1.6 للحصول على أفضل أداء للعبة

تم تعديل هذه المشاركة بواسطة Final Heaven في 17 ديسمبر 2006 في 11:31

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#22

ملف التشغيل:

Plane_Fighter_Executable_JAR_File_v1.12.rar

الكود:

Plane_Fighter_Source_Code_v1.12.rar

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#23

هذه النسخة 1.12.1 :

- تصحيح مشكلة ظهور طلقات الوحوش من ظهور عشوائي إلى تحديد مكانها في الوسط السفلي للوحش.

- زيادة عدد الوحوش إلى 18.

- زيادة سرعة اللعبة بزيادة كلاس للتحكم ب System.gc بدلا من الطريقة المتبعة سابقاً.

ملف التشغيل:

Plane_Fighter_v1.12.1_Executable_Jar.rar

الكود:

Plane_Fighter_v1.12.1_SOURCE_CODE.rar

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#24

ما شاء الله، اللعبة في تطور،، وشفرتك أيضا.

أرجو أن تتحملني قليلا!!

ملاحظات على الشفرة:

1- همممم يبدو أنك لا تستطيع أن تجعل الأعداء يتزايدون. (BadGuys عبارة عن فئة مركبة.)

2- كأني أرى أنك تستخدم System.gc وكأنك مبرمج سي ++ سابق! (أقصد من الموضوع أنه لا داعي لذلك.)

3- كما ذكر Developer فئاتك غير متناسقة. كل الفئات عبارة عن Threads وكأن الطائرة والأعداء والصواريخ كلها Threads. وهذا تصميم ركيك قليلا. فهذه الأشياء عبارة عن أشكال متحركة، وعليك تصميمها كأنها أشكال متصفة بالحركية عموما.

4- في كل هذه الفئات، تعيد كتابة الشفرة لأن التصميم غير شيئي التوجه.

ربما أوافيك بنسخة مبسطة تشرح الموضوع أكثر.

بالتوفيق!

#25

هممم.. فعلا الوقت ضيق،، حتى انتقادي ركيك..

هذه بعض التنسيقات الأخرى:

5- استخدامك لعملية Global Variables أو المتغيرات العامة تذكرني بالبرمجة في Basic!

6- كلما صنعت صاروخا جديدا أعدت قراءة الصورة من الملف.... ألا تعتقد أن هذه العملية بطيئة لأشكال يعاد استخدامها كثيرا؟

آسف للوقت الضيق،، ولا يسعني أن أعلق مباشرة على الشفرة..

بالتوفيق.

مواضيع مشابهة