السلام عليكم
كنت حابب اسوي برنامج (لعبة صغيرة ) في بيئة دوس
لعبة مربعات
يعني تقسم الشاشة الى مجموعة من المربعات ، المربعات تنزل من اعلى الشاشة وتستقر في اسفلها (مربع فوق مربع ) اذا تشابهت الوان ثلاث مربعات واحدة فوق الاخرى يتم حذف هذه المربعات المتشابهة .. المستخدم يقوم بالتحكم بأتجاه المربع اثناء نزوله (هناك العديد من الاجهزة بيها هاي اللعبة .. حتى في الستالايت)
بس ركزو معايا
ارجو ان تكون فكرة اللعبة واضحة ..
شوفو هذا الكود
for(int i=0;i<=12;i++)
{
y=0;
bar(x,y,x+40,y+40);
while((getpixel(x+1,y+41)==0)&&(y+41<=480))
{
y+=40;
setfillstyle(1,0);
bar(x,y-40,x+40,y);
setfillstyle(1,15);
bar(x,y,x+40,y+40);
delay(50);
}
x+=40;
}هذا الكود يقوم برسم مجموعة من المربعات (قسمت الشاشة الى 13 عمود ، حسب جملة for)
و على فرض ان طول ضلع المربع هو 20 ،
المربع سيظهر في اعلى الشاشة ثم يقوم بالنزول الى الاسفل (بالأعتماد على شرطا جملة while) و يتوقف اذا وصل الى نهاية الشاشة (احداثياتها ثابتة وهي 640 * 480) او اذا اصطدم بمربع اخر الذي سيكون لونه مغاير للون الخلفية و استخدمت لذلك دالة getpixel ..
طبعا المربعات ستكون بألوان مختلفة .
المهم .. المشكلة وين
بقي الجزء الاهم ..
و هو اذا ضغط المستخدم على السهم اليسار (على الكيبورد) يجب ان يتحرك المربع الى جهة اليسار (يعني x-40 ) واذا ضغط على السهم اليمين على الكيبورد يتحرك المربع الى جهة اليمين (x+40 ) .. بسيطة .. ما هيك
يعني لازم اعدل على الكود الذي موجود في الاعلى بحيث يتوقف اللوب (اضافة شرط الى while) اذا المستخدم ضغط أي مفتاح على الكيبورد (كانه دالة kbhit()) ثم اختبر الادخال اذا كان السهم الايسر انقص x و اذا كان السهم الايمن نزيد x والا جملة goto ليعود الى اللوب .. هسه وين الاشكال ..
كيف من الممكن ان اقرء او افحص ادخالات الكيبورد دون انتظار ذلك من المستخدم (اكيد ما افتهمتو)
يعني بدون استخدام أي دالة ادخال مثل cin او getch . لماذا ؟؟ لأن هذه الدوال ستقوم بأيقاف اللوب الاساسي (يعني حركة المربع) و تنتظر ادخال char من المستخدم .. و الحاصل .. فشل البرنامج .. واضح القصد ..
يعني بكلام اخر ..
انا قلت في ما سبق بأني سأختبر الادخال لمعرفة أي حرف من الكيبورد ضغط المستخدم .. طيب هو هذا الادخال وينو حتى اختبره .. انا بالأساس ما راح اطلب من المستخدم انو يدخل شي .. بس اذا دخل انا مطلوب مني ان اعالج الادخال ..
عويصة ما هيك
(((خابرني اذا افتهمت شي !!)))
طبعا انا سألت استاذ جامعي وقال ما في حل ابدا !!!
