sayedf1

( المشروع مكتمل ) ورشة عمل للعبة السفينة

377 ردود في هذا الموضوع

ينفع ...

المهم أن تكون هذه ملفات الرأسية موجودة

gl.h و glu.h و glut.h ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

انا نزلت الانت قولت عليه وجاري العمل الان ان شاءالله بخلص وارفقه مره ثانيه هنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ينفع تشتغل بفيجول استيديو مش لازم dev cpp هو هو نفس الكود هيتكتب و نفس المكتب مع فروق بسيطه جدا و بالتوفيق ! و اي مساعدة في الخدمة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
ينفع تشتغل بفيجول استيديو مش لازم dev cpp هو هو نفس الكود هيتكتب و نفس المكتب مع فروق بسيطه جدا و بالتوفيق ! و اي مساعدة في الخدمة

أنا فضلت dev-cpp لأنني أعمل على لينوكس على gcc

حتى تكون المترجمات متوافقة

لكن لا مشكلة في إستعمال أي مترجم آخر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

ما رأيكم فى هذه السفينه ان أعجبتكم اكملها

post-45582-1217873567_thumb.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
السلام عليكم

ما رأيكم فى هذه السفينه ان أعجبتكم اكملها

لكن هل نريد أن تكون الصورة من فوق من الجانب ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فوق لكن حبيت ان اريكم شكل السفينه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فوق

post-45582-1217877561_thumb.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

و لكن هل سنترك الصور الآخرى أم سنضع السفينتان في اللعبة ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لكم الأختيار

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أين فريق البرمجة ؟؟؟؟

إلى أين توصلتم في class السفينة و class الصخور ؟؟

اليوم إن شاء الله سأضع دالة التصادم مع الصخور ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ارى ان حماس بعض الأعضاء قل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنتهيت من دالة التصادم

و عذراً على التأخير ... كان عندي بعض الكورسات و الإمتحانات و إن شاء الله أنتهي منها الإسبوع القادم

typedef struct {float X1,X2,Y1,Y2;} line;
int Takato3(float X1,float X2, float X3, float X4, float Y1, float Y2, float Y3, float Y4)
{
float M,M2,B,B2,NX,NY;
if (X1 == X2) X1 += 0.00001;
if (X3 == X4) X3 += 0.00001;
M = (float)(Y2-Y1)/(X2-X1);
M2 = (float)(Y4-Y3)/(X4-X3);
B = Y2 - X2*M;
B2 = Y4 - X4*M2;
NX = (float)(B2-B)/(M-M2);
NY = M2*NX+B2;
if ((float)(sqrt((Y2-NY)*(Y2-NY)+(X2-NX)*(X2-NX))+sqrt((NY-Y1)*(NY-Y1)+(NX-X1)*(NX-X1))) == (float)sqrt((Y2-Y1)*(Y2-Y1)+(X2-X1)*(X2-X1)) &&
(float)(sqrt((Y4-NY)*(Y4-NY)+(X4-NX)*(X4-NX))+sqrt((NY-Y3)*(NY-Y3)+(NX-X3)*(NX-X3))) == (float)sqrt((Y4-Y3)*(Y4-Y3)+(X4-X3)*(X4-X3)) )
return 1; else return 0;
}
float Modala3(line A[], line B[], int As, int Bs)
{
for (int i = 0; i < As; i++)
for (int j = 0; j < Bs; j++)
if (Takato3(A[i].X1,A[i].X2,B[j].X1,B[j].X4,A[i].Y1,A[i].Y2,B[j].Y1,B[j].Y2))
return 1;
return 0;
}

قمت بعمل دالتان

الدالة الأولى أمرر لها خطان و تكشف هل الخطان متقاطعان أم لا

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

و هناك دالة ثالثة و هي دالة التصادم الحقيقية و هي التي أمرر لها كائنان لتكشف هل هما متصادمان أم لا

مثلاً إنظروا إلى هذه السفينة

post-112912-1218053626_thumb.png

قمت بتحديدها بمجوعة من الخطوط

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

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

أما زاوية التصادم فقمت بكتابة دالة تكشف عن الزاوية التي تجب أن تسير فيها السفينة بعد الإصطدام طبعاً تكون حسب الفرق ما بين موضع الصخرة و موضع السفينة أو موضع السفينة الأولى و الثانية و حساب الزاوية التي بينهم

لكن لن أضع الدالة الثالثة هنا حتى أرى classes السفينة و الصخور لأعرف كيف أتعامل معهم

إلى الآن وضعت أسماء لمتغيرات على أنني أفترض أن الclass سيكون بهذا الشكل و عندما أرى الclass أقوم بالتعديلات اللازمة

بقي عندي دالة سير السفينة و التي سأعتمد فيها على سرعة و عجلة السفينة و سرعة و عجلة دورانها و زاوية السير و زاوية النظر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هاكذا يكون العمل بارك الله فيك اخى عمر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سؤال ...

عندما تصطدم السفينة بالصخرة ...

هل سترجع إلى الوراء ؟؟ أم تتوقف ؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

منطقياً تتوقف

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

و ماذا لو إصطدمت بسفينة ؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اذا اصتدمت بسفينه هناك احتمالان

1- ان تكون السفينه سفينة قراصنه وفى هذه الحاله تتغير طريقة اللعب وتصبح على سفينه القراصنه يقاتل عليها كى يحصل على الكود

2- ان تكون سفينه صديقة وتمده ببعض المعلومات او سلاح جديد حسب ما نريد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هيا اللعبه هتبقي بسي بلس بلس وفهمنها بس علي اي منصة اوبن جي ال ولا ديركت اكس

تاني سؤال اللعبه هتبقي ثري دي طبعا هنستخدم في تصميم الصور والشخصيات هنستخدم ايه في التصميم انا برشح ثردي ماكس او المايا والبوسر ولا ايه؟

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

رابع حاجه ممكن اشترك معاكم ولا باب الحجز مقفول

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اهلا بيك معنا seikoo باب الحجز مفتوح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

معلش ياجماعه انا سافرت فجأة عشان ظروف

هارجع بكره بليل ان شاء الله

وهاطرح الكود بعدها بيوم ان شاء الله

اسف للغياب المفاجا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اسمعوني منيح يا جماعه صح انا مبتدأ في برمجة الالعاب لكن ما بسمح لهذا يحصل.......عاهدتم انفسكم منذ البدايه ببرمجة لعبه تحمل اسم

الفريق العربي للبرمجه وراح تنفذوا اللي تعاهدتم له ...لهذا لا اريد ان ارى عزائم قد هبطت لم يبقى شيء تستطيعون تقسيم المهام على كل

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

الموضوع امام الاعضاء........خلاصة الموضوع نريد ان نرى لعبه تحمل اسم الفريق العربي للبرمجه

...تخيلوا كم سوف تكون مرارة الفشل بعد قطع منتصف الطريق...........تخيلوا

تم تعديل بواسطه ame5r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
هيا اللعبه هتبقي بسي بلس بلس وفهمنها بس علي اي منصة اوبن جي ال ولا ديركت اكس

تاني سؤال اللعبه هتبقي ثري دي طبعا هنستخدم في تصميم الصور والشخصيات هنستخدم ايه في التصميم انا برشح ثردي ماكس او المايا والبوسر ولا ايه؟

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

رابع حاجه ممكن اشترك معاكم ولا باب الحجز مقفول

سنستعمل opengl

و لغة سي++

و ستكون ثنائية الأبعاد من فوق

و لن نستعمل أي محركات أو أي شئ مساعد أو برامج تصميم ثري دي

أنا أقوم بدوال الفيزياء

و قد عملت class السفن مع دالة تجريبية لرسم السفينة فقط ترسم شكل مضلع من خمس أضلاع كي أختبر به حركة السفينة و تصادمها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هذا ما قمت به إلى الآن

هذا class السفينة

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

class Ship
{ public: float theta, omega, alfa, acceleration, speed, x, z;
int type, health;
Ship(int ty, float X, float Z);
void DrawShip();
void MoveShip(); };
Ship::Ship(int ty, float X, float Z)
{ x = X;
z = Z;
ty = type;
theta = omega = alfa = acceleration = speed = 0;
health = 100; }
void Ship::DrawShip()
{ float Xs[5],Ys[5];
Xs[0] = 0.10*cos(0.785398163+theta) + x;
Ys[0] = 0.10*sin(0.785398163+theta) + z;
Xs[1] = 0.15*cos(1.570796325+theta) + x;
Ys[1] = 0.15*sin(1.570796325+theta) + z;
Xs[2] = 0.10*cos(2.356194487+theta) + x;
Ys[2] = 0.10*sin(2.356194487+theta) + z;
Xs[3] = 0.10*cos(3.926990813+theta) + x;
Ys[3] = 0.10*sin(3.926990813+theta) + z;
Xs[4] = 0.10*cos(-0.785398163+theta) + x;
Ys[4] = 0.10*sin(-0.785398163+theta) + z;
glColor3f(0,0,0);
glBegin(GL_POLYGON);
for (int i = 0 ; i < 5 ; i++)
glVertex2f(Xs[i],Ys[i]);
glEnd(); }
void Ship::MoveShip()
{ z += speed*sin(theta+1.570796325);
x += speed*cos(theta+1.570796325);
speed += acceleration;
if (speed > 0.04)
speed = 0.04;
else if (speed < -0.04)
speed = -0.04; }

ثم قمت بتعريف بعض السفن كي أضعها على الشاشة

Ship S(0,0,0);
Ship A[5] = {Ship(0,1,1),Ship(0,-1,0.7),Ship(0,2,-1),Ship(0,0.4,-1.5),Ship(0,0.3,3)};

و دالة العرض

void display()
{ glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
S.MoveShip();
glLoadIdentity();
glTranslated(-S.x,-S.z,0);
S.DrawShip();
for (int i = 0 ; i < 5 ; i++)
A[i].DrawShip();
glFlush();
glutSwapBuffers(); }

دالة إستقبال مدخلات لوحة المفاتيح

void keyboard(unsigned char k, int x , int y)
{ if (k == 'w' || k == 'W')
S.acceleration = 0.0005;
else if (k == 's' || k == 'S')
S.acceleration = -0.0005;
else if (k == 'a' || k == 'A')
S.theta += 0.1;
else if (k == 'd' || k == 'D')
S.theta -= 0.1;
else if (k == 'q' || k == 'Q')
{ S.acceleration = 0;
if (S.speed > 0.01)
S.speed -= 0.01;
else if (S.speed < -0.01)
S.speed += 0.01;
else S.speed = 0;
}
}

و هذه الدالة لمؤقت يقوم بإستدعاء دالة العرض كل 50 ميلي ثانية

void Timer(int Value)
{ display();
glutTimerFunc(50,Timer,0); }

الدالة main

int main(int argc, char** argv)
{ glutInit( &argc, argv );
glutInitDisplayMode( GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH );
glutInitWindowPosition(0,0);
glutInitWindowSize(320,240);
glutCreateWindow("Safina Test ...");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutTimerFunc(50,Timer,0);
glutMainLoop();
return 0; }

الكود كاملاً في المرفقات

Takato3.zip

تم تعديل بواسطه omar_cplusplus
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .