الدرس الرابع
2D Graphics 2
بسم الله و الصلاة و السلام علي رسول الله صلي الله عليه و سلم ...
نكمل في هذا الدرس باذن الله مفاهيم و اساسيات التعامل مع كائنات ال 2D...
- تغيير مقاس الشاشة: Changing Windows Size:
لتغيير ابعاد الشاشة الي 500 * 300 مثلا نكتب الكود التالي في ملف Game1.CS في ال Constructor:
public Game1()
{
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 500;
graphics.PreferredBackBufferHeight = 300;
Content.RootDirectory = "Content";
}
- تطبيق:
- غير ابعاد الشاشة لاي مقاس جديد تريده ...
- Moving the sprite on the screen:
- تحريك العنصر علي الشاشة:
اتفقنا ان في نظام الاحداثيات يوجد x و يوجد y ....
طبعا نستخدم x لتحريك العنصر بشكل افقي ... و نستخدم ال y للتحريك بشكل عمودي ...
و اتفقنا ايضا ان ال x تبدا من الشمال يعني اول نقطة علي الشاشة في الشمال تساوي صفر ... و بالتالي اذا اردنا تحريك العنصر لليمين ماذا سنفعل ؟؟؟ سنزيد ال x بالقيمة التي نريد التحريك بها ... و كذلك في ال y نقطة الصفر تبدا من اول نقطة علي الشاشة بالاعلي و بالتالي اذا اردنا تحريك العنصر لتحت سنزيد ال y .
نفترض اننا نريد تحريك العنصر لليمين مثلا سنكتب الكود التالي:
mySprite1.position.X += 1;
ماذا فعنا هنا؟ قمنا بزيادة ال x بمقدار 1 ... و بالتالي سيتحرك العنصر لليمين بمقدار 1 في التكرار الواحد ...
- دعونا نطبق ... افتحوا المشروع الخاص بالدرس الثالث ...
نفتح الكلاس clsSprite.CS و نعرف خاصية جديدة به:
public Vector2 velocity { get; set; }
ما هي ال velocity : هي تمثل سرعة الكائن علي الشاشة ... و عرفناها ب vector2 حيث ال x هي قيمة السرعة للتحريك الافقي و ال y هي قيمة السرعة للتحريك الراسي ...
- ثم نبدا وظيفة جديدة في الكلاس و هي Move اي تحرك و التي ننفذها في كل تكرار في اللعبة بحيث يتحرك الكائن بالسرعة التي حددناها و هذه ال Method ستكون كالتالي:
public void Move()
{
position += velocity;
}
و هنا اضفنا قيمة السرعة الي مكان الكائن و هكذا في كل تكرار في اللعبة يتم زيادة احداثيات الكائن بمقدار السرعة ...
- الان نفتح ملف ال Game1.CS:
ثم نذهب الي الحدث LoadContent و نعدل الكود ليصبح كالتالي:
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
spriteBall = new clsSprite(Content.Load<Texture2D>("ball"),
Vector2.Zero);
spriteBall.velocity = new Vector2(1, 1);
}
كما ترون يوجد سطر اضافي بعد تعريف object من كلاس ال clsSprite و هو:
spriteBall.velocity = new Vector2(1, 1);
و هنا تم تعريف السرعة بمقدار 1,1 يعني في كل تكرار في اللعبة ستزيد قيمة ال x بمقدار 1 و ستزيد قيمة ال y بقيمة 1.
ثم نذهب الي حدث ال Update() و نعدل الكود ليصبح كالتالي:
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
spriteBall.Move();
base.Update(gameTime);
}
نلاحظ السطر التالي:
spriteBall.Move();
و لا ننسي ان حدث ال update يتم تنفيذه في كل تكرار في اللعبة ... و بالتالي ننفذ كود التحرك Move فيه ليتحرك الكائن ...
- خلاصة الدرس:
تم التدريب علي تحريك كائنات ال 2D في اللعبة ... و في الدرس القادم سنتعلم كيف نتحكم في الحركة بحيث لا يخرج الكائن خارج حدود اللعبة ...
التطبيق:
قم بانشاء 3 كائنات من نوع clsSprite و قم بتحريكهم في اتجاهات مختلفة ...
التطبيق بالانجليزي لمن يفهم اكثر بها:
Create 3 objects of the clsSprite class, and move them towards different ways …
و صلي الله و سلم علي سيدنا محمد و السلام عليكم ...
No comments:
Post a Comment