সুচিপত্র:

Minesweeper-Raspberry-Pi-Edition: 7 ধাপ (ছবি সহ)
Minesweeper-Raspberry-Pi-Edition: 7 ধাপ (ছবি সহ)

ভিডিও: Minesweeper-Raspberry-Pi-Edition: 7 ধাপ (ছবি সহ)

ভিডিও: Minesweeper-Raspberry-Pi-Edition: 7 ধাপ (ছবি সহ)
ভিডিও: windows 7 End 😭😭😭 2024, জুলাই
Anonim
মাইনসুইপার-রাস্পবেরি-পাই-সংস্করণ
মাইনসুইপার-রাস্পবেরি-পাই-সংস্করণ
মাইনসুইপার-রাস্পবেরি-পাই-সংস্করণ
মাইনসুইপার-রাস্পবেরি-পাই-সংস্করণ

লুইসিয়ানা টেক বিশ্ববিদ্যালয়ে CSC 130 সিরিজের জন্য আমার চূড়ান্ত প্রকল্প হল মাইনসুইপার রাস্পবেরি পাই সংস্করণ। এই প্রকল্পে, আমি পাইথন প্রোগ্রামিং ভাষার টিকিন্টার লাইব্রেরি ব্যবহার করে মাইনসুইপারের ক্লাসিক গেমটি পুনরায় তৈরি করতে চেয়েছিলাম। মাইনসুইপার গেমটি যে গ্রিডটি অন্তর্ভুক্ত করে তা হল প্রস্থে আট টাইল এবং উচ্চতায় পাঁচ টাইল। পাইথন 2.7 দিয়ে ইনস্টল করা রাস্পবেরি পাই ব্যবহারের জন্য প্রকল্পটির বিন্যাস উপযুক্ত এবং নিখুঁত হয়েছে।

Minesweeper Raspberry Pi Edition ফাইনাল প্রজেক্টের কোড এবং ছবি নিচের লিংকে ডাউনলোড করা যাবে:

মাইনসুইপার-রাস্পবেরি-পাই-সংস্করণ

সরবরাহ

x1 রাস্পবেরি পাই

রাস্পবেরি পাইতে পাইথন 2.7 ইনস্টল করা হয়েছে

মাইক্রোসফট পাওয়ারপয়েন্ট (বা বোতামগুলির জন্য ছবি তৈরি করার অন্য সফ্টওয়্যার)

ধাপ 1: বোতাম চিত্রগুলি তৈরি করুন

বাটন ছবি তৈরি করুন
বাটন ছবি তৈরি করুন

ব্যাখ্যা:

GUI তৈরি করে এমন প্রতিটি বোতাম তৈরি করতে হবে। এই কাজের জন্য, আমি বোতামগুলিতে প্রদর্শনের জন্য প্রয়োজনীয় চিত্রগুলি তৈরি করতে মাইক্রোসফ্ট পাওয়ারপয়েন্ট ব্যবহার করেছি।

প্রথমে, মাইক্রোসফট পাওয়ারপয়েন্ট ব্যবহার করে মাইনসুইপার গ্রিড (ফাঁকা, বব, শূন্য, এক, দুই, তিন, চার, পাঁচ, ছয়, সাত, এবং আট) তৈরির জন্য প্রয়োজনীয় দশটি টাইল বোতাম তৈরি করেছি।

দ্বিতীয়ত, আমি মাইক্রোসফট পাওয়ারপয়েন্ট ব্যবহার করে মেনু স্ক্রিন (মেনু ডিসপ্লে, সহজ অসুবিধা বোতাম, মাঝারি অসুবিধা বোতাম এবং কঠিন অসুবিধা বোতাম) এর জন্য প্রয়োজনীয় চারটি ছবি তৈরি করেছি।

তৃতীয়ত, আমি মাইক্রোসফট পাওয়ারপয়েন্ট ব্যবহার করে রিস্টার্ট বাটনের জন্য প্রয়োজনীয় ইমেজ এবং অন্যান্য বিভিন্ন ডিসপ্লে বোতামের ("গেম ওভার" ডিসপ্লে, "ইউ উইন" ডিসপ্লে এবং "রুলস" ডিসপ্লে) জন্য প্রয়োজনীয় ইমেজ তৈরি করেছি।

চতুর্থত, আপনার স্ক্রিনে ফিট করার জন্য আপনাকে আপনার চিত্রের আকার পরিবর্তন করতে হবে। আমার রাসবেরি পাইয়ের জন্য, আমি উইন্ডোর জন্য নিম্নলিখিত মাত্রাগুলি ব্যবহার করেছি (দৈর্ঘ্য এবং প্রস্থে পিক্সেল উল্লেখ করে): 432x576।

পদক্ষেপ 2: বিন্যাস প্রোগ্রাম

ফরম্যাট প্রোগ্রাম
ফরম্যাট প্রোগ্রাম

ব্যাখ্যা:

কোন প্রকৃত প্রোগ্রামিং হওয়ার আগে, আমাদের অবশ্যই আমাদের প্রয়োজনীয় লাইব্রেরি আমদানি করতে হবে এবং আমাদের প্রোগ্রামের মূল অংশ লিখতে হবে।

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

ধাপ 3: GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন

GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন
GUI (মেনু এবং মাইনসুইপার গ্রিড) তৈরি করুন

ব্যাখ্যা:

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

প্রথমত, আমরা MainGUI ক্লাসের কনস্ট্রাক্টরের মধ্যে "setupMenu" পদ্ধতিতে ফোন করে প্রোগ্রাম শুরু করার সময় মেনু স্ক্রিন প্রদর্শন করতে পারি।

দ্বিতীয়ত, আমরা যখনই একটি "প্রক্রিয়া" পদ্ধতি যোগ করে ক্লিক করি তখন মেনুর অসুবিধা বোতামগুলির প্রত্যেকটি নির্দিষ্ট লাইন সম্পাদন করতে পারে (ব্যবহার করা বোতাম ফাংশনের পরামিতিগুলির মধ্যে lambda: self.process ("returnButtonName" কমান্ডও যুক্ত করতে হবে) প্রতিটি অসুবিধা বোতাম তৈরিতে)। "প্রসেস" পদ্ধতিতে তিনটি if-else স্টেটমেন্ট তৈরি করা হবে এবং বোতামটি কি সমান হবে তার উপর নির্ভর করে কিছু অন্যান্য পদ্ধতি এবং অতিরিক্ত কোডের লাইন চালানো হবে (বাটনটি সর্বশেষ নিবন্ধিত বাটনের নাম যাই হোক না কেন)।

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

চতুর্থ, "clearMenu" পদ্ধতি (একাধিক ক্ষেত্রে button.destroy () ফাংশন ব্যবহার করে) এবং "প্রক্রিয়া" পদ্ধতিতে "clearMenu" পদ্ধতিতে কল করে "setupMenu" পদ্ধতি দ্বারা তৈরি বোতামগুলির GUI সাফ করুন অসুবিধা পরিবর্তনশীল অ্যাসাইনমেন্টের পরে প্রতিটি অসুবিধা বোতাম নিবন্ধন করে)।

পঞ্চম, "setSLASHresetGUI" পদ্ধতি তৈরি করে GUI রিফ্রেশ করুন (বোতামগুলি "SetupMenu" পদ্ধতিতে তৈরি করা হয়) এবং "প্রক্রিয়া" পদ্ধতিতে "setSLASHresetGUI" পদ্ধতিতে কল করুন (প্রতিটি অসুবিধা বোতামের পরে নিবন্ধনের পরে অসুবিধা পরিবর্তনশীল নিয়োগ এবং "clearMenu" পদ্ধতি কল)।

উপরন্তু, "setSLASHresetGUI" পদ্ধতিতে সমস্ত বোতাম বরাদ্দ করার আগে আমাদের অবশ্যই গ্রিডের মধ্যে সারি এবং কলামগুলি কনফিগার করতে হবে এবং "setSLASHresetGUI" পদ্ধতিতে সমস্ত বোতাম নির্ধারিত হওয়ার পরে আমাদের অবশ্যই গ্রিডের মধ্যে থাকা সমস্ত বিষয়বস্তু প্যাক করতে হবে (দেখুন সঠিক ফরম্যাটিং দেখতে নির্দেশে দেওয়া কোড)।

ধাপ 4: ইন-গেম স্ক্রিনে বোতাম তৈরি করুন

ইন-গেম স্ক্রিনে বোতামগুলি অপারেশনাল করুন
ইন-গেম স্ক্রিনে বোতামগুলি অপারেশনাল করুন
ইন-গেম স্ক্রিনে বোতামগুলি অপারেশনাল করুন
ইন-গেম স্ক্রিনে বোতামগুলি অপারেশনাল করুন
গেমের পর্দায় অপারেশনাল বোতাম তৈরি করুন
গেমের পর্দায় অপারেশনাল বোতাম তৈরি করুন
ইন-গেম স্ক্রিনে বোতামগুলি অপারেশনাল করুন
ইন-গেম স্ক্রিনে বোতামগুলি অপারেশনাল করুন

ব্যাখ্যা:

বোতামগুলি ক্লিক করার সময় কোডের নির্দিষ্ট লাইনগুলি কার্যকর করতে, আমাদের "প্রক্রিয়া" পদ্ধতির মধ্যে পদ্ধতিগুলি সম্পাদন করতে হবে। এই কাজের জন্য, আমাদের একাধিক নতুন পদ্ধতি, ভেরিয়েবল এবং তালিকা তৈরি করতে হবে।

প্রথমে আমরা দুটি তালিকা তৈরি করব। "গ্রিড" নামে একটি তালিকা থাকবে। এই "গ্রিড" তালিকাটি শুধুমাত্র 9 এবং 0 পূর্ণসংখ্যার সমন্বয়ে গঠিত হবে। এইভাবে প্রোগ্রামটি আলাদা করবে যদি টাইল বোমা হয় বা না। একটি দ্বিতীয় তালিকা তৈরি করা হবে, এবং এটি "অবস্থা" বলা হবে। এই "স্ট্যাটাস" তালিকায় রয়েছে শুধুমাত্র একটি অক্ষরের স্ট্রিং ("0", "1", "2", "3", "4", "5", "6", "7", "8", "b ")। এই তালিকায়, প্রতিটি একটি অক্ষরের স্ট্রিং একটি নির্দিষ্ট ছবির সাথে মিলবে। মাইনসুইপার গ্রিডের প্রতিটি বোতামে কোন ছবি প্রদর্শন করতে হবে তা এইভাবেই প্রোগ্রাম জানতে পারবে। মাইনসুইপার গ্রিডের প্রতিটি বোতামে গ্রিডে তার বসার উপর ভিত্তি করে প্রতিটি তালিকায় সংশ্লিষ্ট সূচক থাকবে। সংশ্লিষ্ট সূচক নিচের পদ্ধতি (বাটন নম্বর - ১) দ্বারা নির্ধারিত হবে। উদাহরণস্বরূপ, প্রতিটি তালিকায় বাটন সংশ্লিষ্ট সূচক সূচক শূন্য। পরিশেষে, এই দুটি তালিকা "MainGUI" ক্লাসটি কার্যকর হওয়ার আগে কার্যকর করা হবে এবং "MainGUI" ক্লাসের বাইরে তৈরি করা হবে। "গ্রিড" শ্রেণীটি একটি খালি তালিকা হিসাবে তৈরি করা হবে (গ্রিড = ) এবং "স্ট্যাটাস" তালিকাটি একটি রেঞ্জ ফাংশন দ্বারা তৈরি করা হবে ("স্ট্যাটাস" তালিকায় "n" এর চল্লিশটি একক অক্ষরের স্ট্রিং যুক্ত করা)।

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

তৃতীয়ত, "অপারেশন" পদ্ধতি তৈরি করা হবে। প্রতিবার একটি বোতাম নিবন্ধিত হলে একটি "অপারেশন" পদ্ধতি কার্যকর করা হবে। এই "অপারেশন" পদ্ধতিগুলি "প্রক্রিয়া" পদ্ধতিতে কার্যকর করা হবে। "প্রক্রিয়া" পদ্ধতিতে, একাধিক if-else বিবৃতি নির্ধারণ করবে কোন বোতামটি ক্লিক করা হয়েছিল (বাটনের সমান কিসের উপর ভিত্তি করে)। এখানেই একটি নির্দিষ্ট "অপারেশন" পদ্ধতি আহ্বান করা হবে (if-else স্টেটমেন্টে)।

চতুর্থ, আমরা আসলে কিভাবে বোতামগুলি কার্যকরী হয়ে উঠবে তা জানতে পারি। পূর্বে যেমন বলা হয়েছে, যদি "প্রক্রিয়া" পদ্ধতিতে একাধিক if-else স্টেটমেন্ট থাকে এবং বোতামটি কি সমান হয় তার উপর নির্ভর করে কিছু অন্যান্য পদ্ধতি এবং অতিরিক্ত কোডের লাইন সম্পাদন করে (শেষ নিবন্ধিত হওয়া স্ট্রিং যাই হোক না কেন বোতাম সমান)। এই if-else স্টেটমেন্টের মধ্যে, নিম্নলিখিতগুলি ক্রমানুসারে ঘটবে: ইনডেক্স বিশ্বব্যাপী বরাদ্দ করা হবে, "স্ট্যাটাস" তালিকার সংশ্লিষ্ট সূচকটি স্ট্রিং "b" তে পুনরায় নির্ধারিত হবে (যদি "গ্রিড" তালিকার সংশ্লিষ্ট সূচক সমান হয় পূর্ণসংখ্যা নয়), একটি অনুরূপ "অপারেশন" পদ্ধতি কার্যকর করা হবে (যদি "গ্রিড" তালিকার সংশ্লিষ্ট সূচকটি পূর্ণসংখ্যার শূন্যের সমান হয়), "স্ট্যাটাস" তালিকার সংশ্লিষ্ট সূচকটি একটি স্ট্রিং -এ পুনরায় নিয়োগ করা হবে যা ভেরিয়েবলের সমান "NumOfMines" (যদি "গ্রিড" তালিকার সংশ্লিষ্ট সূচক পূর্ণসংখ্যা শূন্যের সমান হয়), এবং "setSLASHresetGUI" পদ্ধতিতে কল করে GUI রিফ্রেশ হবে।

ধাপ 5: "সেটডিফিলি" পদ্ধতি এবং "পুনরায় চালু করুন" পদ্ধতি

ছবি
ছবি
ছবি
ছবি

ব্যাখ্যা:

পরবর্তীতে, একটি "সেটডিফিলি" পদ্ধতি তৈরি করতে হবে এবং ইন-গেম স্ক্রিনের নীচে অবস্থিত রিস্টার্ট বোতামটি চালু হতে হবে (ব্যবহারকারীর দ্বারা ক্লিক করা হলে এটি কার্যকর করার জন্য "রিস্টার্ট" পদ্ধতি তৈরি করে)।

প্রথমত, "প্রক্রিয়া" পদ্ধতিতে এবং "পুনরায় আরম্ভ" পদ্ধতিতে অসুবিধা বোতামের if-else বিবৃতিতে "setDifroubley" পদ্ধতি প্রয়োগ করতে হবে। এই পদ্ধতিতে সম্পাদিত কোড এবং পদ্ধতিগুলির লাইনগুলি বেশ সহজ। "সেটডিফিলি" পদ্ধতিতে, আমরা "গ্রিড" তালিকায় একটি নির্দিষ্ট পরিমাণ শূন্য (নন-বোমা) এবং নাইনস (বোমা) যুক্ত করব (প্রতিটি আইফো-স্টেটমেন্টের মধ্যে দুটি রেঞ্জ ফাংশনের মাধ্যমে), এবং তারপর আমরা এলোমেলো করে দেব "গ্রিড" তালিকা (এলোমেলো লাইব্রেরির শফল ফাংশন সহ) "সেটডিফিলি" পদ্ধতির মধ্যে (যদি-অন্য স্টেটমেন্টগুলি কার্যকর করা হয়)। শূন্যের নাইনগুলির অনুপাত নির্ণয় করা হবে কোন স্ট্রিং ভেরিয়েবল "অসুবিধা" ("সহজ": 34-6, "মাঝারি": 28-12, "কঠিন": 16-24)।

দ্বিতীয়ত, "পুনartসূচনা" পদ্ধতিতে, আমরা বৈশ্বিকভাবে "সূচক" এবং "NumOfMinesLEFT" ভেরিয়েবলগুলিকে শূন্যে সেট করব, বিশ্বব্যাপী "স্থিতি" এবং "গ্রিড" উভয় তালিকা খালি করব, একটি পরিসীমা ফাংশন (যোগ করা "n" এর "স্ট্যাটাস" তালিকায় চল্লিশটি একক অক্ষরের স্ট্রিং), এবং "setDifroubley" পদ্ধতিতে কল করুন।

ধাপ 6: গেম-এন্ডিং সিনারিওস

গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস
গেম-এন্ডিং সিনারিওস

ব্যাখ্যা:

প্রতিটি মাইনসুইপার গেমের দুটি গেম-এন্ডিং দৃশ্যকল্প রয়েছে: জয় এবং পরাজয়। এই প্রোগ্রামের মধ্যে, আমরা দুটি নতুন পদ্ধতির সাথে এই দুটি গেম-এন্ডিং দৃশ্যকল্প বাস্তবায়ন করব: একটি "You_A_Winner_Son" পদ্ধতি এবং "GameOver" পদ্ধতি। GUI "প্রক্রিয়া" পদ্ধতির মধ্যে রিফ্রেশ হওয়ার আগে এবং দুটি গেম-এন্ডিং দৃশ্যকল্প পদ্ধতি দ্বারা পরিবর্তিত সূচীগুলির উপর ভিত্তি করে, ফলাফলটি সঠিকভাবে উপস্থাপন করার জন্য ডিসপ্লে বাটন পরিবর্তন করা হবে।

প্রথমে, যখন ব্যবহারকারী শেষ লুকানো নন-বোমা টাইল-এ ক্লিক করে, তখন "You_A_Winner_Son" পদ্ধতিটি কার্যকর করতে হবে। প্রতিবার যখন আপনি একটি টাইল ক্লিক করেন এবং টাইলটি নন-বোমা টাইল বলে মনে করা হয় তখন "You_A_Winner_Son" পদ্ধতিতে আহ্বান করে আমরা এই কাজটি সম্পন্ন করব ("প্রক্রিয়া" পদ্ধতিতে সম্পাদিত "অপারেশন" পদ্ধতির মধ্যে)। যদি বিজয়ী শর্ত পূরণ করা হয়, তাহলে "You_A_Winner_Son" পদ্ধতিতে দুটি if-else বিবৃতি কার্যকর করা হবে। প্রথম if-else স্টেটমেন্টটি সর্বদা চালানো হবে নির্বিশেষে খেলোয়াড় জিতবে কি না যখন এই পদ্ধতিটি বলা হবে। পরিবর্তনশীল "অসুবিধা" কিসের উপর ভিত্তি করে, একটি নির্দিষ্ট অ্যালগরিদম যা নির্ধারণ করবে যে কতগুলি খনি/বোমা লুকানো আছে। এই অ্যালগরিদম দ্বারা যে পূর্ণসংখ্যা পাওয়া যায় তা "NumOfMinesLEFT" ভেরিয়েবলে সংরক্ষিত হবে। পরবর্তীতে, দুটি if-else স্টেটমেন্টের মধ্যে আরেকটি অ্যালগরিদম কার্যকর করা হবে যাতে শুরু হওয়া টাইলগুলির সংখ্যা খুঁজে পাওয়া যায় (অনির্বাচিত টাইলস)। এই অ্যালগরিদম দ্বারা যে পূর্ণসংখ্যা পাওয়া যায় তা "NumOfStartingTilesLEFT" ভেরিয়েবলে সংরক্ষিত হবে। দ্বিতীয় if-else স্টেটমেন্টটি সর্বদা চালানো হবে নির্বিশেষে যদি প্লেয়ার জিতে থাকে বা না হয় যখন এই পদ্ধতিটি বলা হয়। ভেরিয়েবল "অসুবিধা" সমান কিসের উপর ভিত্তি করে, যদি তাদের শর্ত পূরণ করা হয় তবে তিনটি-এর মধ্যে অন্য একটি বিবৃতি কার্যকর করা যেতে পারে। শর্তাবলী দুটি ভেরিয়েবল "NumOfMinesLEFT" এবং "NumOfStartingTilesLEFT" এর সমান ভিত্তিতে তৈরি হবে। এই তিনটি if-else স্টেটমেন্টের মধ্যে, একটি অ্যালগরিদম কার্যকর করা হবে যা প্রতিটি বোতামকে অকেজো করে দেবে (খেলা শেষ)।

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

তৃতীয়ত, "setSLASHresetGUI" পদ্ধতিতে খুব অল্প সংখ্যক সম্পাদনা করে GUI রিফ্রেশ করার সময় ইন-গেম স্ক্রিনের ডিসপ্লে আপডেট করা হবে। GUI এর গ্রিড কনফিগার করার পর, আমরা তিনটি if-else স্টেটমেন্ট রাখব যেখানে বর্তমান ডিসপ্লে বাটন অ্যাসাইনমেন্ট রাখা আছে। নিচের ভেরিয়েবলের সমান কিসের উপর ভিত্তি করে তিনটি if-else স্টেটমেন্টের মধ্যে একটি কার্যকর হবে: পরিবর্তনশীল। "setSLASHresetGUI" পদ্ধতির মধ্যে if-else স্টেটমেন্টগুলি কার্যকর হওয়ার ঠিক আগে এই ভেরিয়েবল তৈরি করা হবে। "GameOverDETECTOR" ভেরিয়েবল একটি পূর্ণসংখ্যার সমান হবে যা একটি অ্যালগরিদম ব্যবহার করে পাওয়া যায় যা "গ্রিডের" মধ্যে কতগুলি সূচী খুঁজে পায় তালিকাটি নিরানব্বইয়ের পূর্ণসংখ্যায় পুনassনির্ধারণ করা হয়েছে (কিভাবে বোতামগুলি অকেজো হয়

ধাপ 7: রিস্টার্ট বোতামটি কার্যকরী করা

রিস্টার্ট বোতামটি কার্যকরী করা
রিস্টার্ট বোতামটি কার্যকরী করা

ব্যাখ্যা:

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

প্রথম এবং সর্বশেষে, আমরা "প্রক্রিয়া" পদ্ধতিতে "পুনরায় আরম্ভ" পদ্ধতিটি if-else স্টেটমেন্ট সহ কার্যকর করব। যদি স্ট্রিং "!" নিবন্ধিত হয়, তারপর "পুনরায় আরম্ভ" পদ্ধতি কার্যকর করা হবে। গ্রিডের বিষয়বস্তু একসাথে প্যাক করার আগে আমাদের "setSLASHresetGUI" পদ্ধতির শেষে রিস্টার্ট নামে একটি বোতাম তৈরি করতে হবে। এই রিস্টার্ট বোতামটি স্ট্রিংটি প্রক্রিয়া করবে "!" (কমান্ড lambda: self.process ("!")) এবং "প্রক্রিয়া" পদ্ধতির মধ্যে সংশ্লিষ্ট "রিস্টার্ট" পদ্ধতিটি চালান।

প্রস্তাবিত: