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

مشكله في لعبه bomber man

بدأه راحت عقده القصب في 1 يوليو 2011 · 6 رد · 839 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لسلاااام عليكم اول شي انا جديد انضميت الكن بنصيحه من احدالزملاء وانا عم ادرس معلوماتيه صرلي فتره عم اشتغل علي مشروع لعبه bomberman بلغه c++.cpp باستخدام open _gl

واليوم واجهتني مشكلي ضليت طول اليوم عم فكر فيها وما مشي الحال

البرنامج يتألف من عده كلاسات وكلاسworld بضم اكواد اللعبه يلي قدرنا عن طريق البوليمورفيس نجمعهن بالكلاس world متل تابع رسم الاشكال والمشكله الاساسيه هي عمليه التاخير delay لما

استخدمتها بتوابع متلput bomb من قبل player من اجل تاخير عمل تابع انفجار القنبله لبعد تلت ثواني فصار عندي مشكله انو لما بحط القنبله بتنفيذ البرنامج player يبقى في نفس مكان القنبله لبعد ان

تنفذ عملها وفجاه بينتقل لبعد عده خطوات حسب ما ضغطت بواسطه البافر وحاولت انو حطت التاخير خارج التابع

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

اجل حركه الاعداء ارجو المساعده وإن شاء الله يكون تفاعلنا جيد مع المتتدى

تم تعديل هذه المشاركة بواسطة راحت عقده القصب في 1 يوليو 2011 في 23:44

#2

استخدم timer لعمليه ال delay بدلان من استخدام نوع اخر شبيه بال sleep مثلاً.

ومن اجل الحركه العشوائيه ممكن ان تطيع كل عدو رقم من خلاله يحدد حركته العشوائيه.

من اجل مناقشه افضل ضع الاجزاء التي تحتوي مشاكل او راسلني لاساعدك بالمشاكل التي تواجهها

#3

شكرا جزيلاا لك اخي الكريم

انا سالت قالو لي يجب ان تستخدم multi threat من اجل حل المشكله وانا ما بعرف شو هادااا او كيف بدي استخدمو فاذا كان بالامكان توضيح معني وكيف نستخدم ولكم جزيل الشكر

تم تعديل هذه المشاركة بواسطة راحت عقده القصب في 4 يوليو 2011 في 15:56

#4
راحت عقده القصب كتب:

شكرا جزيلاا لك اخي الكريم

انا سالت قالو لي يجب ان تستخدم multi threat من اجل حل المشكله وانا ما بعرف شو هادااا او كيف بدي استخدمو فاذا كان بالامكان توضيح معني وكيف نستخدم ولكم جزيل الشكر

نعم يمكنك ذلك ولكن لا انصحك به، انصحك بأن تستخدم timer الا اذا تعاملت بشكل سليم تماماً مع ال multithreading ، وحت نعطيك فكره جيده على اي نظام تعمل windows ام نظام اخر ؟؟ كذلك ما هو ال compiler الذي تستخدمه ، وكما قلت لك يجب ان نتناقش من خلال المسنجر او اي وسيله مباشره حتى ترتاح من كثير من عناء البطء من طريقه طرح فكره انت تسأل انا لم افهم انت تصحح انا افهم وارسل انت لم تفهم علي انا اصحح فتأخذ العمليه عده اسابيع لتنتهي من مشروعك. او قم بأضافه اجزاء من الكود التي ترى بها مشاكل.

#5

السلااام عليكم نظامي ويندوز وعم اشتغل على visual studio2008

void World::putbomb()

{

checkbomb=false;

bool moved=true;

for (int i=0;i<100;i++){

delay(30);

char key='a';

key=getchar();

putchar (key);

cout<<key;

if(key=='d')

{

key='d';

putchar (key);

handleKeyBoard(key,x,y);

}

map[x][y]=new Bomb(x,y);

bool moved=true;

draw();

//handleKeyBoard(key,x,y);

}

//bool moved=true;

//if(map[x][y-1]->canenter())

explode(x,y);

}

void World::delay(int secs)

{

char key='a';

bool moved=true;

//int t=400;

clock_t delay = clock_t(secs * CLOCKS_PER_SEC);

clock_t start = clock();

while (clock() - start < secs ){

]حاولت ان افرض متغير جديد ليعمل delay تلتين ميلي ثانيه من خلال حلقه for ويفسح المجال لتابع hand keybord ليعمل بالقيام بعمله بتحريك الاعب ولكن هذا المتغير لم يعمل مع delay وبنسبه لحركه الاعداء فقط استطعت ان احرك عدو واحد والباقي لم

يتحركواااااااااا

[/right

#6

اسف على تأخري بالرد:

اولاً هل تتعامل مع ال openGL من خلال ال glut ام انك تتعامل مباشره من خلال ال windows API اذا كان عندك معرفه بال windows API يمكنك خلق timer .

على كل حال سوف نستعمل ال multithreading لنسهل الامر اليك مثال بسيط لاستخدامه

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;

DWORD WINAPI threadFunction(void*)
{
	for(int i=0;i<10;i++)
	{
		Sleep(1000);
		cout<<endl<<"BOOM!!!!"<<endl;
	}
		return 0;
}

int main()
{
	DWORD dwID={0};
	CreateThread(NULL,NULL,threadFunction,NULL,0,&dwID);

	cout<<"Press Y to close";
	char x;
	do{
		cin>>x;
	}
	while(x!='Y'&&x!='y');
	return 0;
}

تم تعديل هذه المشاركة بواسطة Ali Al-Zyoud في 9 يوليو 2011 في 00:06

1 −1
#7

اخ على ما اهمية جملة الدوران while فى كودك

لا ارى لها اى مهمة فى الكود

او انك نسيت اضافة كلمة do قبل cin >> x

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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