প্যাকম্যান: দানব গর্তের দিকে চোখ ফেরার উপায় কীভাবে?


321

আমি প্যাকম্যানের ভূতগুলির এআইয়ের অনেকগুলি উল্লেখ পেয়েছি, তবে প্যাকম্যান দ্বারা ভূত খাওয়ার পরে চোখ কীভাবে কেন্দ্রীয় ভূতের গর্তের দিকে ফিরে যায় তার কোনওটাই উল্লেখ করেনি।

আমার বাস্তবায়নে আমি একটি সাধারণ তবে ভয়ঙ্কর সমাধানটি প্রয়োগ করেছি। আমি কেবল প্রতিটি কোণে শক্তভাবে কোডিং করেছি যা কোন দিকে নেওয়া উচিত।

এর চেয়ে ভাল / বা সর্বোত্তম সমাধান আছে কি? হতে পারে একটি জেনেরিক যা বিভিন্ন স্তরের ডিজাইনের সাথে কাজ করে?


11
আপনি কি নিশ্চিত যে কোণে হার্ডকোডিং যথেষ্ট ভাল? এটি সেরা রুটের গ্যারান্টি দেয় না। ভাবুন ভূতটি দীর্ঘ সংকীর্ণ প্যাসেজের মুখোমুখি। আপনার অ্যালগরিদমে তাকে পুরো পথটি নেমে যেতে হবে, একটি কোণে পৌঁছাতে হবে এবং তারপরে দ্রুততম রুটটি নিতে হবে। আপনি যদি প্রতিটি বর্গক্ষেত্রে কঠোরভাবে কোডে যান তবে কোন দিকে যেতে হবে, সে সম্ভবত প্রথমে ঘুরে দাঁড়াতে জানত।
পিটারস

3
@ মার্ক, একটি কোণায় আপনার সংজ্ঞা উপর নির্ভর করে। এটি যদি টি সংযোগ হয় এমনকি আপনি সরাসরি শীর্ষ লাইনে সরাসরি যান তবে এটি ঠিক আছে।
থরবজর্ন রাভন অ্যান্ডারসন

1
@ থরবজর্ন: আমি এমনকি ছেদগুলি নিয়ে কথা বলছি না। এই বোর্ডটি একবার দেখুন: en.wikiki.org/wiki/File:Pac-man.png । যদি ভূতটি ডানদিকে অগ্রসর হয় এবং নীচে-বাম থেকে দ্বিতীয় বিন্দুতে অবস্থান করে, এটি কিছুক্ষণের জন্য কোনও ছেদটি পূরণ করতে পারে না। এটি যদি পিছন দিকে (বাম দিকে) ঘুরত এবং সংক্ষিপ্ততম পথ অবলম্বন করে তবে এটি 10 ​​স্কোয়ার আরও বেশি ভ্রমণ করতে পারে।
পিটারস

6
আপনার দ্রবণটি ওয়েপপয়েন্টগুলি (বা ব্রেড ক্রাম্বস) ব্যবহার করে এবং আমি মনে করি যে এটি অ্যালগরিদমগুলি সন্ধানের পথে গতি বাড়ানোর একটি সাধারণ ব্যবহৃত কৌশল।
নিক ডানডৌলাকিস

1
সবগুলো উত্তরের জন্য ধন্যবাদ! আমি কেবল আমার পূর্ববর্তী সমাধানটিতে আছি এবং প্রতিটি কোণে দিকনির্দেশগুলি হার্ডকড করেছি od জেনেরিক এটি করার জন্য, লেভেল্ডিজাইনার / একটি স্তর ফাইলও এই তথ্যটিকে স্তর সংজ্ঞাতে সংজ্ঞায়িত করে required
21

উত্তর:


152

প্রকৃতপক্ষে, আমি বলতে চাই যে আপনার পদ্ধতির একটি চমত্কার সমাধান, যেকোন ধরণের পাথাইন্ডাইন্ডিংয়ের তুলনায় প্রায় শূন্য রান সময় ব্যয়।

আপনার যদি স্বেচ্ছাচারিত মানচিত্রের সাধারণীকরণের প্রয়োজন হয় তবে আপনি যে কোনও প্যাথফাইন্ডিং অ্যালগরিদম ব্যবহার করতে পারেন - উদাহরণস্বরূপ - প্রস্থের প্রথম অনুসন্ধানটি কার্যকর করার জন্য, এবং গেমটি চালানোর আগে প্রতিটি কোণে কোন দিকগুলি এনকোড করতে হবে তা গণনা করতে এটি ব্যবহার করুন use

সম্পাদনা (১১ ই আগস্ট ২০১০): আমাকে স্রেফ প্যাকম্যান সিস্টেমের একটি খুব বিস্তারিত পৃষ্ঠায় উল্লেখ করা হয়েছিল: প্যাক-ম্যান ডসিয়ার , এবং যেহেতু আমার এখানে গ্রহণযোগ্য উত্তর রয়েছে, তাই আমি অনুভব করেছি যে এটি আপডেট করা উচিত। নিবন্ধটি দানব বাড়িতে স্পষ্টভাবে ফিরে আসার কাজটি কভার করে বলে মনে হচ্ছে না তবে এটিতে বলা হয়েছে যে প্যাক-ম্যানের সরাসরি প্যাথফাইন্ডিং নিম্নলিখিত বিষয়গুলির একটি:

  • পরবর্তী চৌরাস্তাটির দিকে অগ্রসর হওয়া চালিয়ে যান (যদিও এটি মূলত একটি বিশেষ ক্ষেত্রে 'যখন কোনও পছন্দ দেওয়া হয়, সেই দিকটি বেছে নিন যা আপনার দিককে বিপরীত করে জড়িত না, যেমন পরবর্তী পদক্ষেপে দেখানো হয়েছে);
  • চৌরাস্তাতে, আপনি যেখান থেকে এসেছেন কেবল তা ছাড়াই, সংলগ্ন প্রস্থান চৌকোটি দেখুন;
  • লক্ষ্যটির নিকটেতম একটিটিকে বাছাই করা। যদি একের অধিক সমান লক্ষ্যের কাছাকাছি থাকে, তবে এই ক্রমের প্রথম বৈধ দিকটি বেছে নিন: উপরে, বাম, নীচে, ডান দিকে।

16
আমার মনে হয় তার অর্থ আপনি রানটাইমে এটি গণনা করতে পারেন (যখন স্তরটি লোড হয়ে যায় তবে আপনি এটি খেলতে শুরু করার আগে) তবে কেবল একবার। এটা বজায় রাখা কঠিন নয়।
পিটারস

3
হ্যাঁ, বা মানচিত্র তৈরির কোনও সরঞ্জাম আছে, তার অংশ হিসাবে।
কাইলোটন

6
প্রত্যাবর্তনের পথগুলি পূর্বের সাথে কোনও ভুল নেই with রানটাইম পারফরম্যান্সের জন্য আপনি স্টোরেজ (পাথ) ট্রেড করছেন।
স্টিভ কুও

6
ধন্যবাদ। আমি মনে করি এই সমাধানটি দিয়ে আমি অসুবিধে রয়েছি। মূল প্যাকম্যানে এটি কীভাবে করা হয়েছিল তা কেউ জানেন?
RoflcoptrException

4
না, আমি না। মূল প্রশ্নটি সেই শব্দটি ব্যবহার করেছিল তবে এটি আইনীভাবে বাধ্যতামূলক নয়।
কাইলোটন

85

জেনেরিক স্তরের জন্য আমি এই সমস্যার সমাধান করেছি: স্তরটি শুরু হওয়ার আগে, আমি দানব গর্ত থেকে এক ধরণের "বন্যা ভরাট" করি; গোলকধাঁধাঁটির প্রতিটি টাইল যা দেয়াল নয় এমন একটি নম্বর পায় যা বলে যে এটি গর্ত থেকে কত দূরে। সুতরাং যখন চোখ 68 টাকার দূরত্বে টাইলের দিকে থাকে তখন তারা দেখতে পাবে যে প্রতিবেশী টাইলগুলির মধ্যে কোনটির 67 এর দূরত্ব রয়েছে; সেই পথে যাওয়ার উপায়।


15
হ্যাঁ. বিশ্ব যে কোনও পরিস্থিতিতে কার্যকর করার জন্য খুব বড় নয় এমন পরিস্থিতিতে প্যাথফাইন্ডিংয়ের জন্য বন্যাফিল খুব ভাল। আমি মনে করি এটি বৃহত্তর বিশ্বে এমনকি একটি মোটা গ্রিড চাপিয়ে ব্যবহার করা যেতে পারে যার সংযোগটি পূর্বনির্ধারিত ছিল। এটি জিনিসকে কিছুটা দূরে সরিয়ে ফেলবে তবে এ জাতীয় গেমগুলিতে আমি যে ট্র্যাফিক জ্যাম দেখেছি তার চেয়ে এটি ভাল।
লরেন পেচটেল

1
স্থান বাঁচাতে (বৃহত্তর পৃথিবী, বা সীমাবদ্ধ সিস্টেমের জন্য), আপনি প্রতিটি টাইলের জন্য একটি মান সংরক্ষণ না করে প্রতিটি চৌরাস্তা ভ্রমণ করার দিকনির্দেশটি সংরক্ষণ করতে পারেন। এটি মূলত ওপি পরামর্শ দিচ্ছিল।
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

নীলরাজ: অবশ্যই, তবে এটি করা আরও জটিল এবং ফলাফলটি সর্বোত্তম নয় - ভূতটি দুটি চৌরাস্তার মধ্যে খাওয়া যায়, তাই তিনি কিছু সময়ের জন্য ভুল পথে চলে যেতে পারেন। আমার সমাধানটি একটি এন.ইউইকিপিডিয়া.আর / উইকি / এইচপি_200 এলএক্স এ ভাল কাজ করেছে যাতে আরও কতটা বাধা থাকতে পারে?
এরিচ কিটজমুয়েলার 21

5
(আমি দেরি করে ফেলেছি ...) হ্যাঁ বন্যা ভরাট ভাল, তবে আপনার ব্যবহারের জন্য পরবর্তী স্কোয়ারে নির্দেশ করার জন্য প্রতিটি স্কোয়ারের কেবল একটি দিক (দুটি বিট) দরকার নেই।
ম্যাথিউ এম।

ম্যাথিউ: হ্যাঁ, এটি একটি সম্ভাব্য অনুকূলকরণ হবে।
এরিচ কিটজমুয়েলার

42

আরও traditionalতিহ্যবাহী প্যাথফাইন্ডিং অ্যালগরিদমগুলির বিকল্পের জন্য, আপনি (যথাযথভাবে নামকরণ করা) প্যাক ম্যান সুগন্ধি অ্যান্টিওবজেক্ট প্যাটার্নটি একবার দেখে নিতে পারেন

আপনি প্রারম্ভের সময় গোলকধাঁধায় চারদিকে দৈত্য-গর্ত-গন্ধ ছড়িয়ে দিতে পারেন এবং চোখ এটি বাড়িতে অনুসরণ করতে পারেন।

গন্ধ একবার সেট আপ হয়ে গেলে রানটাইমের ব্যয় খুব কম হয়।


সম্পাদনা করুন: দু : খজনকভাবে উইকিপিডিয়া নিবন্ধটি মুছে ফেলা হয়েছে, সুতরাং ওয়েব্যাক মেশিনটি উদ্ধারের জন্য ...


2
এটি আমার উত্তর হতে যাচ্ছে। এটি মূলত ammoQ এর মত একই, তবে আমি সবসময় প্যাসম্যান গন্ধ সম্পর্কে মনে করি :)
লুক শ্যাফার

দেখে মনে হচ্ছে উইকিপিডিয়া নিবন্ধটি মারা / মুছে গেছে। শীর্ষস্থানীয় গুগল ফলাফলটি এই থ্রেড, তবে আমার কাছে মনে হয় এটি কাছে এসেছে।
ডেভিড

2
আমি এক সেকেন্ডের জন্য বিভ্রান্ত হয়ে পড়ি তবে তাত্ক্ষণিকভাবে বুঝতে পারি "ঘ্রাণ" বলতে কী বোঝায়। এই স্কেলার ফিল্ড জিনিসগুলি বর্ণনা করার মতো দুর্দান্ত উপায়!
স্টিভেন লু


18

যে কোনও সাধারণ সমাধান যেটি বজায় রাখার যোগ্য, নির্ভরযোগ্য এবং যথেষ্ট ভাল সম্পাদন করে তা হ'ল একটি ভাল সমাধান। আমার কাছে মনে হচ্ছে আপনি ইতিমধ্যে একটি ভাল সমাধান খুঁজে পেয়েছেন ...

আপনার বর্তমান সমাধানের চেয়ে কোনও পাথ-সন্ধানের সমাধান আরও জটিল হতে পারে এবং এর ফলে ডিবাগিংয়ের সম্ভাবনা বেশি থাকে। এটি সম্ভবত ধীর হবে।

আইএমও, এটি ভাঙা না থাকলে, এটি ঠিক করবেন না।

সম্পাদনা

আইএমও, যদি ধাঁধা তারপর সংশোধন করা হয়েছে আপনার বর্তমান সমাধান হয় ভাল / মার্জিত কোড। "চতুর" সাথে "ভাল" বা "মার্জিত" এর সমীকরণ করার ভুল করবেন না। সাধারণ কোডটি "ভাল" এবং "মার্জিত "ও হতে পারে।

আপনার যদি কনফিগারযোগ্য গোলকধাঁধা স্তর থাকে, তবে আপনি প্রাথমিকভাবে ম্যাসগুলি কনফিগার করার সময় আপনার কেবল প্যাথফাইন্ডিং করা উচিত। সরলতমটি হ'ল গোলকধাঁধার ডিজাইনারটি হাতে হাতে এনে নেওয়া। আমি যদি কেবলমাত্র আপনার কাছে বাজিলিয়ন ম্যাস থাকে ... বা ব্যবহারকারীরা সেগুলি ডিজাইন করতে পারে তবে আমি এটি স্বয়ংক্রিয় করতে বিরক্ত করব।

(একদিকে: রুটগুলি যদি হাতের সাহায্যে কনফিগার করা থাকে তবে গোলকধাঁধার ডিজাইনার সাব-থিমাল রুটগুলি ব্যবহার করে একটি স্তরকে আরও আকর্ষণীয় করে তুলতে পারে ...)


হ্যাঁ এটা কাজ করছে। তবে আমি কেবল কোড নয়, ভাল কোড লিখতে চাই। এবং অতিরিক্ত হিসাবে আমি আমার প্রশ্নে সর্বশেষ বাক্যটি যুক্ত করেছি, সুতরাং যদি সম্ভব হয় তবে অ্যালগরিদমটি কেবল একটি গোলকধাঁধার জন্য নয়, বেশ কয়েকটির জন্যও হওয়া উচিত।
RoflcoptrException

ম্যাজগুলিও উত্পন্ন করা যায় (আমার কাছে একটি অ্যালগরিদম রয়েছে যা দেখতে
সুন্দরী প্যাকম্যান ম্যাজগুলি

"... বা ব্যবহারকারীরা সেগুলি ডিজাইন করতে পারেন।" কোন ক্ষেত্রে, আপনার কাছে বাজিলিয়ান ম্যাজ রয়েছে।
ফুজিওন

@ ফুজিওন - আমি এটি সম্পর্কে সচেতন তবে দুটি মামলার মধ্যে পার্থক্য রয়েছে। যদি এটি ওপি কোনও বাজিলিয়ান মজগুলি তৈরি করে, তবে হাতে হাতে রাউটিংটি তৈরি করতে অসুবিধা হবে। যদি এটি শেষ ব্যবহারকারীর হয় ... এর অর্থ হল ওপি ডকুমেন্টেশন লিখতে হবে, শেষ ব্যবহারকারীদের মাইজে অন্তহীন সমস্যার সমাধান করতে হবে, এটি কতটা বন্ধুত্বপূর্ণ তা সম্পর্কে ক্ষেত্রের অন্তহীন অভিযোগ, ইত্যাদি। অন্য কথায় স্বয়ংক্রিয় রুট উত্পাদন কার্যকর করার কারণগুলি আলাদা
স্টিফেন সি

14

মূল প্যাকম্যানে ঘোস্ট তার "গন্ধ" দিয়ে হলুদ বড়ি খাওয়াকে পেয়েছিলেন তিনি মানচিত্রে একটি চিহ্ন রেখে দিতেন, ভূতটি এলোমেলোভাবে ঘুরে বেড়াত যতক্ষণ না তারা গন্ধ খুঁজে পায় ততক্ষণে তারা কেবল গন্ধের পথ অনুসরণ করবে যা সরাসরি তাদের দিকে নিয়ে যায় খেলোয়াড়. প্রতিবার প্যাকম্যান সরানো হলে "গন্ধের মানগুলি" হ্রাস পাবে 1।

এখন, পুরো প্রক্রিয়াটিকে বিপরীত করার একটি সহজ উপায় হ'ল "ভুতের গন্ধের পিরামিড", যা মানচিত্রের কেন্দ্রস্থলে এর সর্বোচ্চ পয়েন্ট রয়েছে, তবে ভূত কেবল এই গন্ধের দিকে চলে যায়।


আমি সত্যিই এই পদ্ধতির পছন্দ করি এবং আমি এটিও চেষ্টা করব
RoflcoptrException

5
এটি সঠিক নয়; যদি তারা সকলেই এই অ্যালগরিদম অনুসরণ করে তবে তারা তার একক ফাইলটিকে তাড়া করে শেষ করবে। প্রতিটি ভূতের আচরণ আলাদা; আপনি উইকিপিডিয়া নিবন্ধে আরও তথ্য পেতে পারেন।
বিভাজক

5

ধরে নিলাম প্যাকম্যান তাড়া করার জন্য আপনার কাছে ইতিমধ্যে প্রয়োজনীয় যুক্তি রয়েছে কেন তা পুনরায় ব্যবহার করবেন না? শুধু লক্ষ্য পরিবর্তন। দেখে মনে হচ্ছে ঠিক একই যুক্তি ব্যবহার করে সম্পূর্ণ নতুন রুটিন তৈরি করার চেষ্টা করার চেয়ে অনেক কম কাজ হবে।


হ্যাঁ ইতিমধ্যে বাস্তবায়িত প্যাকম্যানকে তাড়া করার যুক্তি আমার রয়েছে, তবে আমি এতে সন্তুষ্টও
নই

আমার অভিজ্ঞতায় (আমি কেবল মজাদার জন্য প্যাকম্যান সংস্করণগুলি লিখতে পছন্দ করি), এটি করার ফলে চোখটি দীর্ঘ সময়ের জন্য গর্তের বাইরে আটকে যেতে পারে। এটি কারণ তাড়া করা অ্যালগরিদমটি সাধারণত "যদি প্যাসম্যান উত্তরে থাকে তবে উত্তর দিকে যান" এর লাইনে চলে যায় তবে এই গোলকধাঁটিতে "ফাঁদ" থাকতে পারে যেখানে চোখ প্রথমে দক্ষিণে যেতে হত। যেহেতু প্যাকম্যান সরানো হয়, ভূত তাড়াতাড়ি বা পরে পালাতে পারে তবে গর্তটি একটি নির্দিষ্ট লক্ষ্য। (দ্রষ্টব্য: আমি উত্পন্ন
উত্সর্গের


3

কেন্দ্রের দূরত্বের মূল্য থাকা প্রতিটি বর্গ কীভাবে? প্রতিটি প্রদত্ত স্কয়ারের জন্য আপনি সমস্ত সম্ভাব্য দিকনির্দেশে আশেপাশের প্রতিবেশী স্কোয়ারের মান পেতে পারেন get আপনি সর্বনিম্ন মান সহ স্কয়ারটি চয়ন করুন এবং সেই স্কোয়ারে চলে যান।

যে কোনও উপলভ্য অ্যালগরিদম ব্যবহার করে মানগুলি প্রাক-গণনা করা হবে।


আমি এই পরামর্শ দিতে যাচ্ছি। 'দৈত্য-গর্ত' থেকে শুরু করে একটি বাহ্যিক বন্যা ভরাট। আমি মনে করি আপনার উত্তরটি কোনও ছবিতে উপকৃত হবে।
অজাহানচার্লস

3

এটি সর্বোত্তম উত্স যা আমি বাস্তবে এটি কীভাবে কাজ করে তা খুঁজে পেতে পারি।

http://gameai.com/wiki/index.php?title=Pac-Man#Respawn যখন ভূতদের হত্যা করা হয়, তখন তাদের বিচ্ছিন্ন দৃষ্টি তাদের প্রথম অবস্থানে ফিরে আসে। এটি কেবলমাত্র সেই জায়গাতে ভূতের টার্গেট টাইল সেট করেই সম্পন্ন হয়। নেভিগেশন একই নিয়ম ব্যবহার করে।

এটা আসলে জ্ঞান করে তোলে। সম্ভবত বিশ্বের সবচেয়ে দক্ষ না হয়েও আপনি কেবল টার্গেট পরিবর্তন করছেন এমন লাইনগুলির সাথে অন্য কোনও রাজ্য বা যে কোনও বিষয় নিয়ে উদ্বিগ্ন হওয়ার খুব সুন্দর উপায়।

পার্শ্ব নোট: আমি বুঝতে পারিনি যে এই প্যাক ম্যান প্রোগ্রামাররা মূলত খুব সীমিত মেমরির সাথে খুব ছোট জায়গায় পুরো বার্তা ব্যবস্থা তৈরি করেছিল ... এটি আশ্চর্যজনক।


2

আমি মনে করি যে সমস্যার সমাধান আপনার সমস্যার জন্য সঠিক, এর চেয়ে সহজ, এটি একটি নতুন সংস্করণকে আরও "বাস্তববাদী" করা যেখানে ভুতের চোখ দেয়ালের মধ্য দিয়ে যেতে পারে =)


2
আরও বাস্তববাদ যুক্ত করার জন্য, ভূতেরা নিজেরাই দেয়াল দিয়ে যেতে পারবে: ডি
টমাস এডিং

3
এগুলি ভূতের অস্বচ্ছ দেয়াল, তবে দ্বিতীয় ক্রমের ভূতগুলি (একটি ভূতের ভূত) আরও স্বচ্ছ। (আপনি বৈশিষ্ট্যগুলিতে রূপান্তরিত বাগ সহ অনেকগুলি ব্যবহারকারী ম্যানুয়াল পেতে পারেন)
হার্নান এচে

1
"দ্বিতীয় ক্রম ভূত" এর জন্য +1 - ওহ হ্যাঁ, ভূতের উত্সরূপে অবশ্যই প্রাচীরের মতো প্রথম অর্ডার অবজেক্টগুলি অতিক্রম করতে হবে ... :)
আসাদ ইব্রাহিম

2

AmmoQ এর বন্যা ভরাট ধারণার একটি এনালগ এবং সিউডোকোড।

queue q
enqueue q, ghost_origin
set visited

while q has squares
   p <= dequeue q
   for each square s adjacent to p
      if ( s not in visited ) then
         add s to visited
         s.returndirection <= direction from s to p
         enqueue q, s
      end if
   next
 next

ধারণাটি হ'ল এটি একটি প্রস্থের প্রথম সন্ধান, সুতরাং প্রতিবারই যখন আপনি একটি নতুন সংলগ্ন বর্গক্ষেত্রের মুখোমুখি হন, সর্বাগ্রে সেরা পথটি পি। এটি ও (এন) আমি বিশ্বাস করি।


2

আপনি কীভাবে আপনার গেমটি প্রয়োগ করেছিলেন সে সম্পর্কে আমি বেশি কিছু জানি না তবে, আপনি নিম্নলিখিতটি করতে পারেন:

  1. গেটের সাথে চোখের অবস্থান সম্পর্কিত অবস্থান নির্ধারণ করুন। অর্থাৎ কি উপরে রেখে গেছে? ঠিক নিচে?
  2. তারপরে দুটি দিকের একটির বিপরীতে চোখ সরিয়ে নিন (যেমন এটি গেটের ডানদিকে এবং বাম দিকের নীচে বাম দিকে সরিয়ে দিন) এবং এটির জন্য বাধা আছে এবং সেখানে দেয়াল আছে কিনা তা পরীক্ষা করুন।
  3. যদি সেখানে দেয়ালগুলি আপনাকে এটি করতে বাধা দেয় তবে এটিকে অন্য দিকের বিপরীতে সরান example দক্ষিণে সরান
  4. গেটের তুলনায় চোখ কোথায় আছে তা পরীক্ষা করতে যেতে প্রতিটি সময় চেক করতে ভুলবেন না এবং অক্ষাংশ স্থানাঙ্ক কখন নেই তা পরীক্ষা করে দেখুন। অর্থাত্ এটি গেটের উপরেই।
  5. ক্ষেত্রে কোনও দেয়াল থাকলে গেটটি কেবল নীচের দিকে চলে যায়, বাম বা ডানদিকে সরে যান এবং চোখের গোড়ালিতে না আসা পর্যন্ত এই সংখ্যাটি 1 - 4 চালিয়ে যান।
  6. আমি প্যাকম্যানের কোনও শেষ প্রান্ত কখনও দেখিনি এই কোডটি মৃত প্রান্তের জন্য অ্যাকাউন্ট করবে না।
  7. এছাড়াও, আমি যখন আমার সিউডোকোডে উত্স জুড়ে বিস্তৃত প্রাচীরের মধ্যে চোখ "ডুবে" যাচ্ছিলাম তার একটি সমাধান আমি অন্তর্ভুক্ত করেছি।

কিছু সিউডোকোড:

   x = getRelativeOppositeLatitudinalCoord()
   y
   origX = x
    while(eyesNotInPen())
       x = getRelativeOppositeLatitudinalCoordofGate()
       y = getRelativeOppositeLongitudinalCoordofGate()
       if (getRelativeOppositeLatitudinalCoordofGate() == 0 && move(y) == false/*assume zero is neither left or right of the the gate and false means wall is in the way */)
            while (move(y) == false)
                 move(origX)
                 x = getRelativeOppositeLatitudinalCoordofGate()
        else if (move(x) == false) {
            move(y)
    endWhile

2

প্রতিটি কোণে কেবল একটি এলোমেলো দিক বেছে নেওয়ার জন্য dtb23 এর পরামর্শ, এবং অবশেষে আপনি দানব-গর্তটি ভয়াবহভাবে অকেজো বলে মনে করবেন।

তবে আপনি গেমের অসুবিধায় আরও বেশি প্রকরণের পরিচয় দিয়ে গেমটিকে আরও মজাদার করে তুলতে তার অকার্যকর ঘরে ফিরে অ্যালগরিদম ব্যবহার করতে পারেন। আপনি উপরের যে কোনও একটি পদ্ধতির যেমন আপনার পয়েন্টপয়েন্ট বা বন্যার ভরাট প্রয়োগ করে এটি করতে চাইবেন তবে অ-নিরস্তামূলকভাবে এটি করুন। সুতরাং প্রতিটি কোণে, আপনি অনুকূল উপায় গ্রহণ করতে হবে বা কোনও এলোমেলো দিক নির্ধারণ করবেন তা সিদ্ধান্ত নিতে আপনি একটি এলোমেলো সংখ্যা তৈরি করতে পারেন।

খেলোয়াড় যেমন স্তর বাড়ায়, আপনি এলোমেলো দিক গ্রহণের সম্ভাবনা হ্রাস করেন। এটি স্তরের গতি, ভুতের গতি, পিল খাওয়ার বিরতি (ইত্যাদি) ছাড়াও সামগ্রিক অসুবিধা স্তরে আরেকটি লিভার যুক্ত করবে। ভূতগুলি কেবল নিরীহ চোখের মধ্যে থাকা অবস্থায় আপনি বিশ্রামের জন্য আরও সময় পেয়েছেন, তবে আপনার অগ্রগতির সাথে সাথে সময়টি আরও কম ও খাটো হয়ে উঠবে।


2

সংক্ষিপ্ত উত্তর, খুব ভাল না। :) আপনি যদি প্যাক-ম্যান ধাঁধা পরিবর্তন করে তবে অগত্যা চোখগুলি ফিরে আসবে না। আশেপাশে ভেসে আসা কয়েকটি হ্যাকের সমস্যা রয়েছে। সুতরাং এটি একটি সমবায় গোলকধাঁধায় থাকার উপর নির্ভরশীল।


2

আমি প্রস্তাব দেব যে ভূত তার গর্ত থেকে প্যাকম্যানের যে পথটি নিয়েছে তা সংরক্ষণ করে। তাই ভূত মারা যাওয়ার সাথে সাথেই তিনি এই সঞ্চিত পথটিকে বিপরীত দিকে অনুসরণ করতে পারেন।


2
এই পথটি সম্ভবত খুব দীর্ঘ হতে চলেছে
আহমদ ওয়াই। সালেহ ১৩

আপনি যখনই কোনও নোডে ঘুরে দেখেন তখনই আপনি ইতিহাস থেকে লুপটি সরিয়ে ফেলতে পারেন। এটি একে একে আরও কিছুটা সরাসরি করে তুলবে। সর্বদা একই সরাসরি পথ অনুসরণ করার চেয়ে আরও আকর্ষণীয় হতে পারে তবে প্রায়শই প্রায়শই এটি প্রায় কিছু নির্লিপ্ত প্রায় লুপগুলি অন্তর্ভুক্ত করবে (উদাহরণস্বরূপ একটি বর্গাকার 3 টি দিক)।
অজাহানচর্লেস

1

জেনেও প্যাকম্যান পাথগুলি এলোমেলো (যেমন প্রতিটি নির্দিষ্ট স্তর 0-255, কালি, ব্লিঙ্কি, পিঙ্কি এবং ক্লাইড সেই স্তরের জন্য ঠিক একই পথে কাজ করবে)।

আমি এটি গ্রহণ করব এবং তারপরে অনুমান করতে পারি যে কয়েকটি মাস্টার পাথ পুরো "গোল ফেরার পথ" হিসাবে পুরো গোলকধাঁধার চারদিকে জড়িয়ে আছে যা চোখের বল অবজেক্টের পিছনে নিয়ে যায় যেখানে প্যাক লোক ভূত খেয়েছিল।


1

গোলটি পূরণ না হওয়া পর্যন্ত প্যাকম্যানের ভূতরা X বা Y এর সাথে ম্যাচ করার চেষ্টা করার ক্ষেত্রে কম বা কম অনুমানযোগ্য নিদর্শনগুলি অনুসরণ করে। আমি সবসময় ধরে নিয়েছিলাম যে চোখের দিকে ফিরে তাদের পথ খুঁজে পাওয়ার জন্য এটি ঠিক একই ছিল।


1
  1. গেমটি শুরুর আগে মানচিত্রে নোডগুলি (ছেদগুলি) সংরক্ষণ করুন
  2. দানব মারা গেলে পয়েন্টটি (স্থানাঙ্ক) নিয়ে যান এবং আপনার নোড তালিকার নিকটতম নোডটি সন্ধান করুন
  3. সেই নোড থেকে শুরু করে গর্ত পর্যন্ত সমস্ত পথ গণনা করুন
  4. দৈর্ঘ্য দ্বারা সংক্ষিপ্ততম পথ ধরুন
  5. বিন্দু এবং নিকটতম নোডের মধ্যে স্থানটির দৈর্ঘ্য যুক্ত করুন
  6. আঁকুন এবং পথে চলুন

উপভোগ করুন!


1

আমার পদ্ধতির সামান্য স্মৃতি নিবিড় (প্যাকম্যান যুগের দৃষ্টিকোণ থেকে) তবে আপনাকে কেবল একবার গণনা করা দরকার এবং এটি কোনও স্তরের ডিজাইনের জন্য (জাম্প সহ) কাজ করে।

লেবেল নোড একবার

আপনি যখন কোনও স্তর লোড করেন, তখন সমস্ত দানব লায়ার নোড 0 (লেয়ার থেকে দূরত্ব উপস্থাপন করে) লেবেল করুন। সমস্ত নোড লেবেল না করা পর্যন্ত বাহ্যিক লেবেলযুক্ত সংযুক্ত নোড 1, তাদের সাথে 2 টি সংযুক্ত নোড এবং অন্যদিকে এগিয়ে যান। (দ্রষ্টব্য: লায়ারের একাধিক প্রবেশ পথ থাকলেও এটি কাজ করে)

আমি ধরে নিচ্ছি যে আপনার কাছে ইতিমধ্যে প্রতিটি নোড এবং তাদের প্রতিবেশীদের সাথে সংযোগ উপস্থাপন করার জন্য সামগ্রী রয়েছে। সিউডো কোডটি এর মতো দেখতে পারে:

public void fillMap(List<Node> nodes) { // call passing lairNodes
    int i = 0;

    while(nodes.count > 0) {
        // Label with distance from lair
        nodes.labelAll(i++);

        // Find connected unlabelled nodes
        nodes = nodes
            .flatMap(n -> n.neighbours)
            .filter(!n.isDistanceAssigned());
    }
}

মই থেকে বন্যা ভরাট

চোখ সর্বনিম্ন দূরত্বের লেবেল সহ প্রতিবেশী স্থানান্তরিত

সমস্ত নোড একবার লেবেলযুক্ত হয়ে গেলে, চোখের রাউটিংটি তুচ্ছ হয় ... কেবল সর্বনিম্ন দূরত্বের লেবেল সহ প্রতিবেশী নোডটি বেছে নিন (দ্রষ্টব্য: যদি একাধিক নোডের সমান দূরত্ব থাকে তবে কোনটি বাছাই করা যায় তা বিবেচনা করে না)। সুডোকোড:

public Node moveEyes(final Node current) {
    return current.neighbours.min((n1, n2) -> n1.distance - n2.distance);
}

সম্পূর্ণ লেবেলযুক্ত উদাহরণ

সম্পূর্ণ মানচিত্র


0

আমার প্যাকম্যান গেমের জন্য আমি কিছুটা "shortest multiple path home " অ্যালগরিদম যা আমি যে গোলকধাঁধা দিয়েছি তা পূরণ করে (আমার বিধিগুলির মধ্যে সেট করে)। এটি তাদের সুড়ঙ্গ জুড়ে কাজ করে।

স্তরটি লোড হয়ে গেলে, সমস্তগুলি path home data in every crossroadখালি (ডিফল্ট) হয়ে যায় এবং একবার ভূতরা গোলকধাঁধাঁটি অন্বেষণ করতে শুরু করলে, crossroad path home informationপ্রতিবার "নতুন" চৌরাস্তাতে চালিত হওয়ার সাথে সাথে বা তাদের পরিচিত ক্রসরোডের উপরে আবার কোনও পৃথক পথ থেকে হোঁচট খেয়ে এগুলি আপডেট হতে থাকে।


-2

আসল প্যাক-ম্যান পাথ সন্ধান বা অভিনব এআই ব্যবহার করেনি। এটি কেবল গেমারদের বিশ্বাস করেছে যে এটির তুলনায় এর আরও গভীরতা রয়েছে তবে বাস্তবে এটি এলোমেলো ছিল। গেমসের জন্য কৃত্রিম গোয়েন্দা / ইয়ান মিলিংটন, জন ছত্রাক হিসাবে বলা হয়েছে।

এটি সত্য কিনা না তা নিশ্চিত নয় তবে এটি আমার কাছে প্রচুর অর্থবোধ করে। সত্যি বলতে, আমি এই আচরণগুলি দেখি না যা লোকেরা কথা বলে। প্রাক্তনদের জন্য রেড / ব্লিঙ্কি প্লেয়ারকে সর্বদা অনুসরণ করে না, যেমন তারা বলে। কেউ মনে হয় না যে নিয়মিতভাবে খেলোয়াড়কে উদ্দেশ্য করে অনুসরণ করা হচ্ছে। তারা আপনাকে অনুসরণ করার সুযোগটি আমার কাছে এলোমেলো মনে হচ্ছে। এবং এলোমেলোভাবে আচরণটি দেখতে খুব লোভনীয়, বিশেষত যখন একটি ছোট জায়গায় 4 টি শত্রু এবং খুব সীমাবদ্ধ টার্নিং বিকল্প সহ ধাওয়া করার সম্ভাবনা খুব বেশি থাকে। কমপক্ষে তার প্রাথমিক প্রয়োগের সময়, খেলাটি অত্যন্ত সাধারণ ছিল। বইটি দেখুন, এটি প্রথম অধ্যায়গুলির মধ্যে একটিতে রয়েছে।


হ্যাঁ, এটি কিছু এআই ব্যবহার করেছে। এবং হ্যাঁ ব্লিংকি প্যাকম্যানকে অনুসরণ করে যখন সে চেজ মোডে থাকে (সময়ে সময়ে এটি স্যুইচ করে) তাই এআই ঠিক আছে
জিন-ফ্রানসোয়া ফ্যাব্রে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.