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

مكتبة أكواد ال Mfc

بدأه بن العيد في 31 مايو 2008 · 9 رد · 8,857 مشاهدة · في المواضيع و الدروس القيّمة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سأحاول في هذا الموضوع وضع مجموعة من التطبيقات المتنوعة و البسيطة التي ستمكن إن شاء الله المبرمجين من تعلم لغة البرمجة الMFC بسهولة.

#2

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

post-91400-1212240608.png

Fonts.zip

post-91400-1212240957.png

Use_ListBox.zip

post-91400-1212241110.png

FontDemo.zip

post-91400-1212241214.png

MouseManager.zip

post-91400-1212241290.png

All_About_TreeView.zip

post-91400-1212241408.png

Avi_Player.zip

post-91400-1212241474.png

DemoGraphics.zip

post-91400-1230129483_thumb.png

Digital_Timer.zip

post-91400-1230131006_thumb.png

Demo_MAP.zip

تم تعديل هذه المشاركة بواسطة بن العيد في 24 ديسمبر 2008 في 18:07

#3

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

TutorialMFC.zip

post-91400-1212258799.png

Avi_Player.zip

DemoGraphics.zip

FontDemo.zip

Fonts.zip

MouseManager.zip

TutorialMFC.zip

Use_ListBox.zip

تم تعديل هذه المشاركة بواسطة بن العيد في 18 مايو 2009 في 14:20

#4

اللعبة تعتمد على Dialogs

هذه هي النافذة الرئيسية:

post-91400-1217320488_thumb.png

زر Start يقوم ببداية اللعبة وذلك برسم اللوحة الزرقاء اولاً ثم مناداة النافذة Add Ball .

كود اللعبة موجود داخل دالة زر Start two players

ال classes التي كتبتها هي

Ball.h

وتحتوي على متغير state لتحديد ما اذا كانت الكرة لللاعب الاول او الثاني

والمتغيران p1 و p2 من نوع CPoint للاحداثيات (top-left and bottom-right points)

Board.h

وتحتوي على مصفوفة ذات بعدين من نوع Ball وحجم ROW & COL

ومصفوفة اخرى ذات بعد واحد لتحديد ارتفاع كل عامود (عدد الكرات الموجودة داخل كل عامود حتى تساعدني في اضافة كرات جديدة)

addBall.h

وهي class للنافذة الخاصة بادخال رقم العامود (اتوقع ان لكل Dialog لابد من عمل class؟)

وباقي الكود موجود في connect_fourDlg وهي class الاساسية

كما تلاحظون وجود كلمة Player & CPU وايضا في الكود يوجد Player & CPU كمتغيرات enum ، لاني في البداية كان الهدف عمل لعبة بين المستخدم والكمبيوتر باستخدام الذكاء الاصطناعي ، وحولتها الى لاعبين حتى تكون اسهل. لذلك Player يعني اللاعب الاول و CPU تعني اللاعب الثاني.

اللعبة تحتاج الى التطوير

فانا احاول ان اجعل اختيار العامود باستخدام الفأره ، فالمستخدم يضغط على العامود الذي يريد وضع الكرة فيه

لكن واجهتني بعض المشاكل ، فلا استطيع ارسال احداثية زر الفأره عند النقر :( اذا كان لديكم بعض النصائح متعلقة بهذا الموضوع ارجو ان تكتبوها

ايضاً هناك فكرة وهي وضع نص لتحديد دور اللاعب ، فعندما يكون دور اللاعب الاول تتم كتابة كلمة "دور اللاعب الاول" على النافذة الاساسية مثلا او في نافذة Add Ball

بالنسبة لمن يريد تشغيل اللعبة على جهازه ، فسوف يواجهه مشكلة تحميل صورة ال Board

فعندما تقوم بتشغيل ال solution لاول مره سوف يظهر لك خطأ متعلق ب path الخاص بالصورة connect_four_board_new.bmp

الحل هو انك تقوم بتعديل ال path ، الصورة موجودة في المرفقات وهي مضغوطة ، امتدادها bmp لان ال visual لا يقبل غير هذا الامتداد!

( ألا توجد طريقة لدمج الصورة مع البرنامج حتى لا أقلق مستقبلاً عن وجود الصورة وال path .. إلخ ؟)

connect_four_board_new.zip

هذا هو البرنامج كاملاً ، لا تنس ان تحمل الصورة قبل ذلك لانه عند تشغيل ال solution سوف يخبرك ان هناك مشكلة في path الخاص بالصورة فيجب ان تقوم بتحديده.

Copy_of_Connect_Four_Game.zip

ارجو ان يكون البرنامج مفيد لكم

في حال واجه اي شخص مشكلة في التشغيل الرجاء طرح المشكلة هنا

وايضا اذا استطاع شخص تشغيل اللعبة الرجاء اخباري بذلك

احب ان انبه عن مشكلة في الرسم

بعد الضغط على زر start two players حاول تحريك نافذة Add Ball على النافذة الاساسية ، سوف تلاحظ ان الصورة قد انمسحت :( ماهو الحل ؟

تم تعديل هذه المشاركة بواسطة بن العيد في 29 يوليو 2008 في 11:35

#5
اقتباس
عد الضغط على زر start two players حاول تحريك نافذة Add Ball على النافذة الاساسية ، سوف تلاحظ ان الصورة قد انمسحت :( ماهو الحل ؟

ضع كود رسم الصور في الحدث: OnPaint هذا الحدث ينطلق كلما احتاجت الشاشة للرسم من جديد.

tvquran_6.gif

#6

صعبه افضل كود الرسم واضع جزء منه في دالة Start والجزء الآخر في دالة onPaint :(

الجزء الاول وهو رسم الكرات( وهذا الشيء يحدث اكثر من مره ) ، والجزء الثاني هو رسم اللوحة ( يحدث مره واحدة فقط عند بداية اللعب) .

جربت طريقتك و وضع كود رسم اللوحة داخل onpaint :

void Cconnect_fourDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);

		CRect myRect( CPoint(0,0), CPoint(700,600));
		CBitmap bitmap;
		bitmap.LoadBitmapW(IDB_BITMAP3);
		CBrush myBrush( &bitmap);
		dc.FillRect( &myRect, &myBrush);



	}
	else
	{
		CDialog::OnPaint();
	}
}

ولم يتغير شيء مطلقلاً :(

تم تعديل هذه المشاركة بواسطة مجلـد جديـد في 4 يوليو 2008 في 22:08

#7

اينكم ؟؟؟ ماهو الحل :(

#8

لا تضعه داخل الشرط ضعه في الأعلى.

tvquran_6.gif

#9
فهدالشلوي كتب:
لا تضعه داخل الشرط ضعه في الأعلى.

:D

بالفعل اشتغل البرنامج بشكل ممتاز ، شكرا لك اخي فهد :)

هل هذا يعني ان اي كود للرسم لابد ان يكون داخل دالة OnPaint ؟

اذا كان كذلك

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

ألا يمكن ان تحدث هذه المشكلة : رسم اللوحة فوق الكرات ؟

#10

merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

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