كيف يمكن تخمين احرف بواسطة ادخال المستخدم ارقام ؟

  • moaaz89

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

انا عندي مشروع لتصميم لعبة تخمين الاحرف ولكن المشكلة انه هذه اللعبة يتطلب من المستخدم ادخال 3 ارقام لتخمين 3 احرف (والاحرف محددة هي ABC) . ولقد اطلعت على مصادر كثيرة اجنبية لهذه اللعبة ولكن ليست بنفس المتطلبات المذكورة اعلاه. مشكلتي حاليا هي كيف يمكن ادخال رقم لتخمين حرف . بدايات البرنامج حتكون مثل لعبة الرجل المخنوق وتخمين الارقام وتخمين الكلمات.اريد اي مقترحات تفيدني في البدء في عمل المشروع.

مثال :

Please enter a number: 123

Your guess, 123, was incorrect

Your current hint is: CC

Please enter a number: 124

Your guess, 124, was incorrect

Your current hint is: B

Please enter a number: 315

Your guess, 315, was incorrect

Your current hint is: BB

الاجابة الصحيحة تكون في حرف الى ثلاثة احرف من حرف A وشكرا

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

johan liebert أضف ردا

في بايثون الحروف لها تمثيل رقمي ثابت ، أي بإمكانك تحويل الأرقام إلى حروف التي تمثلها والعكس كذلك من حروف إلى أرقام

وذلك عن طريق ord , chr وهما Built-in Functions

بعدما تستدعي random مديول قم بتخزين الرقم لمتغير ثم حوله لحرف عبر chr

number = random.randint(96, 99)

char=chr(number)

كما ذكرت فوق الأرقام ثابتة إي بهذه الطريقة يجب أن تكون الأرقام المختارة من 97 إلى 122 للحروف الصغيرة و من 65 إلى 90 للحروف الكبيرة

للمزيد من المعلومات عن ord , chr

أو بالإمكان استخدام القاموس ولكن بهذه الطريقة سيكون للعبة أنماط معينة

بحيث أنك تُنشئ عدة قواميس القاموس الأول تجعل قيمة A مثلا 123 ثم القاموس الأخر تجعل ل A قيمة مختلفة وهكذا ...عدد معين من القواميس

ثم تستدعي random مديول وتجلعه يختار أحد القواميس والذي له قيم معينة > لم يسبق لي تجربتها ولكن على الأرجح أنها ستعمل

هذه هي الأفكار التي في بالي حاليا قد أعود لو طرأت فكرة.

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

ظننت أن مشكلته بتحويل الأرقام إلى أحرف ولكن يبدو أني أنا من لم يفهم مبدأ اللعبة

على أية حال

حسبما فهمت منك ومنه أن مبدأ اللعبة هو

أن يكون المدخلات 3 أرقام والمخرجات 3 حروف ، بمعدل رقم لكل حرف

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

صحح لي أن فهمت مبدأ اللعبة بشكل خاطئ.

johan liebert أضف ردا

عودة مرة أخرى

فلنفرض أنها حرفين كما قلت أنت

فإن الأرقام محتملة ستكون من 10 إلى 100 > السبب سأوضحه في الأسفل

فهنا عليّ تخمين الرقمين الصحيحين كي يخرج لي حرفين حيث أن كل حرف يُمثل برقم واحد من الرقمين

أنت تريد تقسيم الرقمين بالإمكان حلها عبر List Comprehensions سيقسم الرقمين إلى أرقام منفصلة ويضعها داخل list

[int(i) for i in str(number)]

ثم بعد ذلك بالإمكان الاستفادة من مبدأ القاموس هكذا

import random

number = random.randint(10, 100)

[int(i) for i in str(number)]=a

dictionary = {'A': a[0], 'B':a[1]}

 بقية الكود#

يجب جعل العدد من 10 إلى 100 وليس من 0 إلى 100 ، سيتولد خطأ في هذه الحالة لو أن الجهاز اختار رقم تحت العشرة

لو أردتها لثلاثة أحرف يجب أن تكون من 100 إلى 1000 وهكذا


تمامًا، هذا هو قصدي.(شرحك ممتاز)

  • بقي أن أرى رأي @moaaz89 وبعدها لكل حادث حديث.

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

شكرا johan - spacex لردودكم واعتذر عن الرد المتأخر وسوف اعيد فكرة اللعبة .

فكرة اللعبة مثلها مثل لعبة تخمين الارقام ولعبة تخمين الكلمات ولكن تختلف قليلا في المدخلات والمخرجات :

المدخلات : يتطلب من المستخدم ادخال ثلاثة ارقام من 1 الى 9

المخرجات : على البرنامج تخمين حروف وهي ثلاثة احرف (ABC احرف كبيرة فقط) بشرط اذاكان التخمين من البرنامج حرف واحد الى ثلاثة احرف من الحرف B سوف تظهر للمستخدم رسالة تخمين خاطئ وسوف يعيد البرنامج بطلب ادخال الارقام واذاكان التخمين من البرنامج حرف واحد الى ثلاثة احرف من الحرف Cالاجابة صحيحة ولكن موقعها خاطئ لذا سوف تظهر للمستخدم رسالة تخمين خاطئ وسوف يعيد البرنامج بطلب ادخال الارقام واذاكان التخمين من البرنامج ثلاثة احرف من الحرف A سوف تظهر للمستخدم رسالة تخمين صح وسوف ينهي البرنامج. فقط

فكرتي في تصميم المشروع :اني راح استخدم string is digit للارقام واقوم بتعريف قائمة بجميع الاحتمالات من الاحرف الثلاثة واعمل عليها Random choice ليختار تخمين واحد في المخرجات ولكن في حلقة مفقودة في فكرتي بالنسبة لادخال الرقم والناتج احرف - انا اريد نصائح او اقتراح في فكرتي للبدء فقط هي معضلتي الحلقة المفقودة وشكرا لتفاعلكم

spaceX أضف ردا

إذًا فتعليق @johan liebert الأوَّل هو المطلوب.

ووفق شرحك اللعبة ستكون كهذه..

حسبما فهمت من الموضوع و التعليقات هو أنك تريد تحويل ثلاثة أرقام (1-9) إلى ثلاثة حروف (ABC) ، ثم تتحقق من الحروف ، إذا كانت AAA فهذا يعني الفوز ، و ما عدا ذلك هو خسارة .

أقترح عليك في البداية إنشاء ثلاث مصفوفات ( مصفوفة A و مصفوفة B و مصفوفة C ) ، ثم ضع بداخل كل مصفوفة 3 أرقام عشوائية من 1 إلى 9 ) مثلا ( A=527 , B= 149 , C=368 ) حيث أن هذه القيم موزعة عشوائيا و يمكن إعادة توزيعها مع كل لعبة جديدة أو بعد كل محاولة.

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

عملت نموذج بسيط بـActionScript3 ، أتمنى أن يكون هو فعلا ما تريده :

  • في كل مرة تقوم بتحديث للصفحة ستحصل على قيم مختلفة لـA و B و C .

و هذا هو الكود ربما يفيدك نوعا ما :

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

لانه لايوجد في البايثون فاصلة منقوطة في اخر السطر

معلومتك خاطئة!، يوجد في بايثون فاصلة منقوطة (؛) لكن استخدامها الوحيد هو من أجل كتابة أكثر من إفادة statement في نفس السطر دون الحاجة لكتابتها في سطر جديد وتُعامَل كما لو كانت في أسطر متفرقة.

بارك الله فيك - معلومة جديدة - مازلت طالب في الجامعة اتعلم هذه اللغة يعني مبتدئ على هذه اللغة - وشكرا طارق على المساعدة

الكود الذي كتبتُه هو بلغة الأكشن سكربت ActinScript3 ، و هي شبيهة بالجافا ، و قد وضعته لك لربما يساعدك بفهم خوارزمية اللعبة .

بالمناسبة هذا تعديل بسيط للنموذج بالأعلى ، و هو يغير القيم عشوائيا بعد كل محاولة :