سؤال

أحاول إنشاء شبكة 5x5 مع 2 مخارج ووضع بعض الجدران فيه. وبعبارة أخرى، أريد إنشاء متاهة أو متاهة.

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

أريد أن أضع وكيل واحد فقط في الداخل والسماح له بالعثور على الخروج من خلال مكافأة له مع بعض النقاط. (خوارزمية Q للتعلم)

هل يوجد عندكم اي فكرة؟

إذا لم يكن ذلك ممكنا، فهل يمكنك اقتراح رمز مماثل من فضلك؟

فيما يلي مثال على ما أريد إنشاءه:

alt text

كما سئل، لقد قمت بنشر بعض عملي (على الرغم من أنه يبدو أنه غير فعال في القيام بذلك يدويا). هنا ما لدي حتى الآن:

breed [frame frames]
to setup
  ca
    ask patches [ set pcolor white]

ask patch -7 8 [ set pcolor black]
ask patch -6 8 [ set pcolor black]
ask patch -5 8 [ set pcolor black]
ask patch -4 8 [ set pcolor black]
ask patch -3 8 [ set pcolor black]
ask patch -2 8 [ set pcolor black]
ask patch -1 8 [ set pcolor black]
ask patch 1 8 [ set pcolor black]
ask patch 0 8 [ set pcolor black]
ask patch 2 8 [ set pcolor black]
ask patch 3 8 [ set pcolor black]

ask patch 6 8 [ set pcolor black]
ask patch 7 8 [ set pcolor black]
ask patch 8 8 [ set pcolor black]

ask patch -7 7 [ set pcolor black]
ask patch -7 6 [ set pcolor black]
ask patch -7 5 [ set pcolor black]
ask patch -7 4 [ set pcolor black]
ask patch -7 3 [ set pcolor black]
ask patch -7 2 [ set pcolor black]
ask patch -7 1 [ set pcolor black]
ask patch -7 0 [ set pcolor black]
ask patch -7 -1 [ set pcolor black]
ask patch -7 -2 [ set pcolor black]
ask patch -7 -3 [ set pcolor black]
ask patch -7 -4 [ set pcolor black]
ask patch -7 -5 [ set pcolor black]
ask patch -7 -6 [ set pcolor black]
ask patch -7 -7 [ set pcolor black]

ask patch -7 -7 [ set pcolor black]
ask patch -6 -7 [ set pcolor black]
ask patch -5 -7 [ set pcolor black]
ask patch -4 -7 [ set pcolor black]
ask patch -3 -7 [ set pcolor black]
ask patch -2 -7 [ set pcolor black]
ask patch -1 -7 [ set pcolor black]
ask patch 1 -7 [ set pcolor black]
ask patch 0 -7 [ set pcolor black]
ask patch 2 -7 [ set pcolor black]
ask patch 3 -7 [ set pcolor black]
ask patch 4 -7 [ set pcolor black]
ask patch 5 -7 [ set pcolor black]

ask patch 8 -7 [ set pcolor black]

ask patch 8 8  [ set pcolor black]
ask patch 8 7  [ set pcolor black]
ask patch 8 6 [ set pcolor black]
ask patch 8 5 [ set pcolor black]
ask patch 8 4 [ set pcolor black]
ask patch 8 3 [ set pcolor black]
ask patch 8 2 [ set pcolor black]
ask patch 8 1 [ set pcolor black]
ask patch 8 0 [ set pcolor black]
ask patch 8 -1 [ set pcolor black]
ask patch 8 -2 [ set pcolor black]
ask patch 8 -3 [ set pcolor black]
ask patch 8 -4 [ set pcolor black]
ask patch 8 -5 [ set pcolor black]
ask patch 8 -6 [ set pcolor black]

ask patch -6 5 [ set pcolor black]
ask patch -5 5 [ set pcolor black]
ask patch -4 5 [ set pcolor black]
ask patch -4 4 [ set pcolor black]
ask patch -4 3 [ set pcolor black]
ask patch -4 2 [ set pcolor black]
ask patch -4 -1 [ set pcolor black]
ask patch -4 -2 [ set pcolor black]
ask patch -4 -3 [ set pcolor black]
ask patch -4 -4 [ set pcolor black]
ask patch -5 -4 [ set pcolor black]
ask patch -6 -4 [ set pcolor black]
ask patch -1 7 [ set pcolor black]
ask patch -1 6 [ set pcolor black]
ask patch -1 5 [ set pcolor black]
ask patch -1 4 [ set pcolor black]
ask patch -1 3 [ set pcolor black]
ask patch -1 2 [ set pcolor black]
ask patch 2 5 [ set pcolor black]
ask patch 2 4 [ set pcolor black]
ask patch 2 3 [ set pcolor black]
ask patch 2 2 [ set pcolor black]
ask patch 5 5 [ set pcolor black]
ask patch 5 4 [ set pcolor black]
ask patch 5 3 [ set pcolor black]
ask patch 5 2 [ set pcolor black]
ask patch 5 1 [ set pcolor black]
ask patch 5 0 [ set pcolor black]
ask patch 5 -1 [ set pcolor black]
ask patch 6 5 [ set pcolor black]
ask patch 7 5 [ set pcolor black]
ask patch -1 -1 [ set pcolor black]
ask patch 0 -1 [ set pcolor black]
ask patch 1 -1 [ set pcolor black]
ask patch 2 -1 [ set pcolor black]
ask patch 3 -1 [ set pcolor black]
ask patch 4 -1 [ set pcolor black]
ask patch -1 -2 [ set pcolor black]
ask patch -1 -3 [ set pcolor black]
ask patch -1 -4 [ set pcolor black]
ask patch 0 -4 [ set pcolor black]
ask patch 1 -4 [ set pcolor black]
ask patch 2 -4 [ set pcolor black]
ask patch 3 -4 [ set pcolor black]
ask patch 4 -4 [ set pcolor black]
ask patch 5 -4 [ set pcolor black]
end

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

شكرا لكم مقدما.

هل كانت مفيدة؟

المحلول

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

بمجرد إنشاء السلحفاة، يمكنك إما أن تبقيها إذا كنت ترغب في القيام بشيء ما في وقت لاحق، أو يمكنك الحصول عليها "يموت ختم" لقتله ولكن أولا أترك صورة في نفسها في الرسم وبعد

نصائح أخرى

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

استمتع! هناك، بالطبع دخول ويكيبيديا على خوارزميات توليد المتاهة إذا كنت تريد أن تخطئ أعمق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top