সুচিপত্র:

2 খেলোয়াড় প্রতিযোগিতামূলক ভিএস টাইমিং গেম: 4 টি ধাপ
2 খেলোয়াড় প্রতিযোগিতামূলক ভিএস টাইমিং গেম: 4 টি ধাপ

ভিডিও: 2 খেলোয়াড় প্রতিযোগিতামূলক ভিএস টাইমিং গেম: 4 টি ধাপ

ভিডিও: 2 খেলোয়াড় প্রতিযোগিতামূলক ভিএস টাইমিং গেম: 4 টি ধাপ
ভিডিও: তুর্কমেনিস্তানের বিপক্ষে বিরল ঘটনা ঘটালো বাংলাদেশ! | Bangladesh Football 2024, জুলাই
Anonim
2 প্লেয়ার প্রতিযোগিতামূলক ভিএস টাইমিং গেম
2 প্লেয়ার প্রতিযোগিতামূলক ভিএস টাইমিং গেম

আপনার প্রয়োজন হবে:

1. ডিজিলেন্ট বেসিস 3, এফপিজিএ বোর্ড (বা অন্য কোন এফপিজিএ,)

2. ভিভাদোর অপেক্ষাকৃত আপ টু ডেট সংস্করণ, অথবা অন্য কিছু ভিএইচডিএল পরিবেশ

3. একটি কম্পিউটার যা উল্লেখিত প্রোগ্রামটি চালাতে পারে।

ধাপ 1: গেমটি নিজেই

গেম ইটসেলফ
গেম ইটসেলফ

এফএসএম কীভাবে মডিউলগুলির সাথে যোগাযোগ করে।

কিভাবে খেলতে হবে

শুরু করতে, আপনি মাঝের বোতাম টিপুন। এটি "99", যা দুই খেলোয়াড়ের স্বাস্থ্যের প্রতিনিধিত্ব করে, সাতটি সেগমেন্ট ডিসপ্লেতে প্রদর্শিত হবে। তারপরে, LEDs ডান থেকে বামে ক্রমান্বয়ে আলোকিত হবে। এটি একটি পাওয়ার বার গঠন করে। একবার পাওয়ার বার পূর্ণ হয়ে গেলে, এটি পুনরায় সেট হয়। প্লেয়ার এক বস্তু তাদের সুইচ উল্টানো হয় যখন বার যতটা সম্ভব উচ্চ হয়। যত বেশি এলইডি জ্বলবে, খেলোয়াড় দুইটির ক্ষতি তত বেশি হবে। একজন খেলোয়াড় তাদের সুইচ উল্টানোর পরে, ক্ষতিগ্রস্ত খেলোয়াড় দুজনের স্বাস্থ্য থেকে কেটে নেওয়া হয়। তারপরে, এটি প্লেয়ার টু এর পালা পাল্টায়। এখন, প্রদর্শিত সংখ্যাটি খেলোয়াড়ের স্বাস্থ্যের প্রতিনিধিত্ব করে এবং পাওয়ার বারটি বাম থেকে ডানে পূর্ণ হয়। একবার দুই খেলোয়াড় তাদের পদক্ষেপ নিলে, ক্ষতি কাটা হয়, এবং এটি আবার খেলোয়াড়ের পালা ফিরে আসে। একজন খেলোয়াড়ের 0 স্বাস্থ্য না আসা পর্যন্ত এটি পুনরাবৃত্তি হয়। এই কাজের ভিডিও সংযুক্ত করা হয়েছে।

ধাপ 2: FSM

এফএসএম
এফএসএম
এফএসএম
এফএসএম
এফএসএম
এফএসএম
এফএসএম
এফএসএম

এই গেমটি মূলত একটি বড় সসীম রাষ্ট্রযন্ত্র, যা FSM- এর অবস্থার উপর ভিত্তি করে কিছু জটিল যুক্তি ঘটছে।

রাজ্য 1: মেনু প্রথম রাজ্য হল মেনু পর্দা, যা সহজ রাজ্যগুলির মধ্যে একটি। এতে "প্লে" শব্দটি প্রদর্শনকারী সাতটি সেগমেন্ট ডিসপ্লে এবং গেমটি শুরু হওয়ার জন্য বাটন অন্তর্ভুক্ত রয়েছে। বোতাম, বিটিএন, আমাদের পরবর্তী অবস্থায় নিয়ে যায়, যা খেলোয়াড়দের পালা।

রাজ্য 2: প্লেয়ার ওয়ান এর পালা

প্লেয়ার ওয়ান টার্ন একটি সিগন্যাল অ্যাক্টিভেট করে যার কারণে সাত সেগমেন্ট ডিসপ্লে প্লেয়ার টু এর স্বাস্থ্য প্রদর্শন করে। আরেকটি সিগন্যাল চালু হয় যেটি আমরা তৈরি করা অন্য মডিউল থেকে আমদানি করা একটি শিফট রেজিস্টার (Pone.vhd) চালু করি। এই শিফট রেজিস্টারটি LED এর আলোকে অন্যান্য গেমের মতো ক্রমবর্ধমান পাওয়ার গেজের মতো করে তোলে, এবং এটি যখন 0 তে পুনরায় সেট হবে তখন এটি LED এর সর্বাধিক পরিমাণে পৌঁছে যাবে যা জ্বলতে পারে। এটি barclock.vhd থেকে প্রাপ্ত ঘড়ির ক্রমবর্ধমান প্রান্তে আপডেট হয়, যা ধার করা ল্যাব ফাইল থেকে সংশোধন করা হয়েছে। আমাদের প্লেয়ার ওয়ান বারটি ডান থেকে শুরু হয়েছিল, এবং বামদিকে পূরণ করুন, কারণ প্লেয়ারের সুইচটি বাম দিকেও রয়েছে (স্বজ্ঞাত ব্যবহারকারীর অভিজ্ঞতার জন্য)। একবার সুইচটি উল্টে গেলে, রাজ্য প্লেয়ারের একটি কাটার দিকে চলে যায়, এবং LED এর সক্রিয় পরিমাণ একটি সংকেতে সংরক্ষিত হয়।

রাজ্য 3: প্লেয়ার ওয়ান ডিস্কট এলইডি এর সক্রিয় পরিমাণের সংকেত নির্ধারণ করে যে কত পরিমাণ স্বাস্থ্য বিয়োগ হবে। এটি অন্য শিফট রেজিস্টার (deductor1.vhd) করে করা হয় যা LEDs বৃদ্ধির পরিবর্তে তাদের হ্রাস করে। ঘড়ির ডিভ মডিউলগুলির মধ্যে একটিতে ক্রমবর্ধমান প্রান্তে এটি হ্রাস পায় যা আমরা ধার করেছি এবং সংশোধন করেছি (downcounterclock.vhd)। ঠিক যেমন একটি LED বন্ধ করা হয়, খেলোয়াড়ের দুইজনের মোট স্বাস্থ্যের থেকে স্বাস্থ্যের একটি বিন্দু কেটে নেওয়া হয়। যদি এই প্রক্রিয়ার সময় খেলোয়াড় দু'জন স্বাস্থ্যে পৌঁছায়, আমরা থেমে যাই এবং অবিলম্বে "গেম ওভার" অবস্থায় চলে যাই। অন্যথায়, LED ভেক্টর একবার "0000000000000000" এ পৌঁছে গেলে, আমরা প্লেয়ার দুই এর পালা এগিয়ে যাই।

রাজ্য 4: প্লেয়ার টু এর পালা প্লেয়ার দুই টার্ন ঠিক প্লেয়ার ওয়ান এর পালা, এটির জন্য শিফট রেজিস্টার বাদে (Ptwo.bhd) বাম থেকে ডানে যায়, এবং সুইচ বোর্ডের ডান দিকে থাকে। প্লেয়ার 1 এর স্বাস্থ্য প্রদর্শন করার জন্য একটি সংকেত সক্রিয় হয়। একবার সুইচ 2 সক্রিয় হলে, এটি প্লেয়ার টু এর কাটার পালা নিয়ে চলে যায়।

পর্যায় 5: প্লেয়ার টু ডিডাক্ট যেমন প্লেয়ার টু টার্ন, প্লেয়ার টু ডিডাক্ট অনেকটা প্লেয়ার ওয়ান ডিডাক্টের মত কাজ করে। প্রধান পার্থক্য হল যে শিফট রেজিস্টার যা এলইডি বন্ধ করা নিয়ন্ত্রণ করে তা বিপরীত দিকে যায়, যা আপনার প্লেয়ারের কাটার সঠিকভাবে কাজ করার পরে এটি একটি সহজ পরিবর্তন।

পর্যায়:: গেম ওভার যদি কোন সময়ে খেলোয়াড় শূন্য স্বাস্থ্যে পৌঁছায়, গেমটি এই অবস্থায় চলে যায়। অভিনব কিছু দেখায় না। যদি বিটিএন এক চাপানো হয়, তাহলে স্বাস্থ্য 99 তে পুনরায় সেট করা হয়, এবং রাজ্যটি মেনুতে ফিরে যায়, কার্যকরভাবে খেলাটি শুরু করে।

ধাপ 3: মডিউল

মডিউল
মডিউল

গেমের জন্য ব্ল্যাক বক্স ডায়াগ্রাম

ডাউনকাউন্টারক্লক (ব্রায়ান মেলির দ্বারা clk_div.vhd মডিউলের উপর ভিত্তি করে):

এই ঘড়ি যে deductors সময় পরিচালনা করে। Max_count নামের ধ্রুবকটি বারক্লকের max_count ধ্রুবকের চেয়ে 3x বেশি। এটি বারের গতির চেয়ে কর্তনকারীদের 3x ধীর করে তুলবে।

বারক্লক - (ব্রায়ান মেলি দ্বারা clk_div.vhd মডিউলের উপর ভিত্তি করে):

এই ঘড়িটি পাওয়ার গেজগুলির সময় পরিচালনা করে, যা আমরা গেমটিতে অসুবিধা যোগ করার জন্য দ্রুত বৃদ্ধি করেছিলাম। এই সময়টি আপনার পছন্দ অনুযায়ী সামঞ্জস্য করা যেতে পারে, ধ্রুবক max_count কে একটি বৃহত্তর সংখ্যা তৈরি করে গতি বাড়ানো, অথবা max_count কে একটি ছোট সংখ্যা করে এটি হ্রাস করা যেতে পারে। Sseg_dec - (ব্রায়ান মেলি লিখেছেন): এই মডিউলটি ইনপুট হিসাবে একটি 8 বিট সংখ্যা নেয়, যা এটি ডিকোড করে, সংখ্যাটিকে তার দশমিক সমতুল্য রূপান্তর করে, এবং তারপর সাতটি সেগমেন্ট ডিসপ্লেতে আউটপুট করে। এই ফাইলটি কাজ করার জন্য, আপনাকে নিশ্চিত করতে হবে যে আপনার সীমাবদ্ধতা আমাদের সাথে মেলে।

পোন:

এটি একটি শিফট রেজিস্টার যা বিটগুলিকে বাম দিকে স্থানান্তরিত করে, এটি একটি গরম বিট যোগ করে যেন এটি পাওয়ার গেজ বাড়ছে। যখন সমস্ত বিট গরম হয়, তখন সমস্ত বিট '0' তে রিসেট হয় এবং চক্রটি আবার শুরু হয়।

Ptwo:

এটি P1 মডিউলের একটি উল্টানো সংস্করণ।

Deductor1:

এটি একটি শিফট রেজিস্টার এবং একটি বিয়োগকারীর সমন্বয়। শিফট রেজিস্টার P1 এর শিফট রেজিস্টারের বিপরীত দিকে যায়, যা একটি কাটতি নির্দেশ করে। এটি প্রতিটি ঘড়ি চক্রের জন্য প্লেয়ার 2 এর স্বাস্থ্য থেকে 1 টি বিয়োগ করে, তাই এই দুটি ফাংশনের সংমিশ্রণে, মনে হবে প্রতিপক্ষের স্বাস্থ্য হেলথ বারের প্রতিটি নেতৃত্বের জন্য 1 দ্বারা হ্রাস পাচ্ছে।

Deductor2: এটি Deductor1 মডিউলের একটি উল্টানো সংস্করণ।

PlayDecoder (ekchen35649 থেকে তার 133 ইন্সট্রাকটেবল থেকে ধার করা এবং slgihtly সংশোধন করা হয়েছে): এটি সাত সেগমেন্ট ডিকোডারে "PLAY" শব্দটি প্রদর্শনের জন্য মেনু অবস্থায় ব্যবহৃত হয়।

ধাপ 4: পরীক্ষা

এই গেমটি মূলত Kirby এর একটি minigames দ্বারা অনুপ্রাণিত হয়েছিল। এটি একটি সহজ দুই-খেলোয়াড় খেলা যা একটি বেসিস 3 বোর্ড, বা যে কোন এফপিজিএ-তে খেলা যায়।

ধাপ 1: প্রয়োজনীয় উপকরণ

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

ধাপ 2: গেমটি নিজেই

কিভাবে খেলতে হবে

শুরু করতে, আপনি মাঝের বোতাম টিপুন। এটি "99", যা দুই খেলোয়াড়ের স্বাস্থ্যের প্রতিনিধিত্ব করে, সাতটি সেগমেন্ট ডিসপ্লেতে প্রদর্শিত হবে। তারপরে, LEDs ডান থেকে বামে ক্রমানুসারে আলোকিত হবে। এটি একটি পাওয়ার বার গঠন করে। একবার পাওয়ার বার পূর্ণ হয়ে গেলে, এটি পুনরায় সেট হয়। প্লেয়ারের উদ্দেশ্য হল বারটি যতটা সম্ভব উঁচু হলে তাদের সুইচ উল্টানো। যত বেশি এলইডি জ্বলবে, খেলোয়াড় দুইটির ক্ষতি তত বেশি হবে। একজন খেলোয়াড় তাদের সুইচ উল্টানোর পরে, ক্ষতিগ্রস্ত খেলোয়াড় দুজনের স্বাস্থ্য থেকে কেটে নেওয়া হয়। তারপরে, এটি প্লেয়ার টু এর পালা পাল্টায়। এখন, প্রদর্শিত সংখ্যাটি খেলোয়াড়ের স্বাস্থ্যের প্রতিনিধিত্ব করে এবং পাওয়ার বারটি বাম থেকে ডানে পূর্ণ হয়। একবার দুই খেলোয়াড় তাদের পদক্ষেপ নিলে, ক্ষতি কেটে যায়, এবং এটি আবার খেলোয়াড়ের পালা। একজন খেলোয়াড়ের 0 স্বাস্থ্য না আসা পর্যন্ত এটি পুনরাবৃত্তি হয়। এই কাজের ভিডিও সংযুক্ত করা হয়েছে।

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

ধাপ 3: FSM

এই গেমটি মূলত একটি বড় সসীম রাষ্ট্রযন্ত্র, যা FSM- এর অবস্থার উপর ভিত্তি করে কিছু জটিল যুক্তি ঘটছে।

(রাষ্ট্র চিত্রটি)

রাজ্য 1: মেনু

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

রাজ্য 2: প্লেয়ার ওয়ানস টার্ন

প্লেয়ার ওয়ান টার্ন একটি সিগন্যাল অ্যাক্টিভেট করে যার কারণে সাত সেগমেন্ট ডিসপ্লে প্লেয়ার টু এর স্বাস্থ্য প্রদর্শন করে। আরেকটি সিগন্যাল চালু হয় যা আমরা তৈরি করা অন্য মডিউল থেকে আমদানি করা একটি শিফট রেজিস্টার (Pone.vhd) চালু করি। এই শিফট রেজিস্টারটি LED এর আলোকে অন্যান্য গেমের মতো ক্রমবর্ধমান পাওয়ার গেজের মতো করে তোলে, এবং এটি যখন 0 তে পুনরায় সেট হবে তখন এটি LED এর সর্বাধিক পরিমাণে পৌঁছে যাবে যা জ্বলতে পারে। এটি barclock.vhd থেকে প্রাপ্ত ঘড়ির ক্রমবর্ধমান প্রান্তে আপডেট হয়, যা ধার করা ল্যাব ফাইল থেকে সংশোধন করা হয়েছে। আমাদের প্লেয়ার ওয়ান বারটি ডান থেকে শুরু হয়েছিল, এবং বামদিকে পূরণ করুন, কারণ প্লেয়ারের সুইচটি বাম দিকেও রয়েছে (স্বজ্ঞাত ব্যবহারকারীর অভিজ্ঞতার জন্য)। একবার সুইচটি উল্টে গেলে, রাজ্য প্লেয়ারের একটি কাটার দিকে চলে যায়, এবং LED এর সক্রিয় পরিমাণ একটি সংকেতে সংরক্ষিত হয়।

রাজ্য 3: খেলোয়াড় এক কাটা

LED এর সক্রিয় পরিমাণের সংকেত কতটুকু স্বাস্থ্য বিয়োগ করে তা নির্ধারণ করে। এটি অন্য শিফট রেজিস্টার (deductor1.vhd) করে করা হয় যা LEDs বৃদ্ধির পরিবর্তে তাদের হ্রাস করে। ঘড়ির ডিভ মডিউলগুলির মধ্যে একটিতে ক্রমবর্ধমান প্রান্তে এটি হ্রাস পায় যা আমরা ধার করেছি এবং সংশোধন করেছি (downcounterclock.vhd)। ঠিক যেমন একটি LED বন্ধ করা হয়, খেলোয়াড়ের দুইজনের মোট স্বাস্থ্য থেকে স্বাস্থ্যের একটি বিন্দু কেটে নেওয়া হয়। যদি এই প্রক্রিয়ার সময় খেলোয়াড় দু'জন স্বাস্থ্যে পৌঁছায়, আমরা থেমে যাই এবং অবিলম্বে "গেম ওভার" অবস্থায় চলে যাই। অন্যথায়, LED ভেক্টর একবার "0000000000000000" এ পৌঁছে গেলে, আমরা প্লেয়ার দুই এর পালা এগিয়ে যাই।

রাজ্য 4: প্লেয়ার টু এর পালা

প্লেয়ার টু এর পালা হুবহু প্লেয়ার ওয়ান টার্নের মত, এটির জন্য শিফট রেজিস্টার (Ptwo.bhd) ছাড়া বাম থেকে ডানে যায়, এবং সুইচ বোর্ডের ডান দিকে থাকে। প্লেয়ার 1 এর স্বাস্থ্য প্রদর্শন করার জন্য একটি সংকেত সক্রিয় হয়। একবার সুইচ 2 সক্রিয় হলে, এটি প্লেয়ার টু এর কাটার পালা নিয়ে চলে যায়।

পর্যায় 5: প্লেয়ার দুই কাটা

ঠিক যেমন প্লেয়ার টু টার্ন, প্লেয়ার টু ডিডাক্ট অনেকটা প্লেয়ার ওয়ান ডিডাক্টের মত কাজ করে। প্রধান পার্থক্য হল যে শিফট রেজিস্টার যা এলইডি বন্ধ করা নিয়ন্ত্রণ করে তা বিপরীত দিকে যায়, যা আপনার প্লেয়ারের কাটার সঠিকভাবে কাজ করার পরে এটি একটি সহজ পরিবর্তন।

পর্যায়:: গেম ওভার যদি কোন সময়ে খেলোয়াড় শূন্য স্বাস্থ্যে পৌঁছায়, গেমটি এই অবস্থায় চলে যায়। অভিনব কিছু দেখায় না। যদি বিটিএন এক চাপানো হয়, তাহলে স্বাস্থ্য 99 তে পুনরায় সেট করা হয়, এবং রাজ্যটি মেনুতে ফিরে যায়, কার্যকরভাবে খেলাটি শুরু করে।

কালো বাক্স

ধাপ 4: মডিউল

Downcounterclock (ব্রায়ান Mealy দ্বারা clk_div.vhd মডিউল উপর ভিত্তি করে):

এই ঘড়ি যে deductors সময় পরিচালনা করে। Max_count নামের ধ্রুবকটি বারক্লকের max_count ধ্রুবকের চেয়ে 3x বেশি। এটি বারের গতির চেয়ে কর্তনকারীদের 3x ধীর করে তুলবে।

বারক্লক - (ব্রায়ান মেয়ালির clk_div.vhd মডিউলের উপর ভিত্তি করে): এই ঘড়িটি পাওয়ার গেজের সময় পরিচালনা করে, যা আমরা গেমটিতে অসুবিধা যোগ করার জন্য দ্রুত বৃদ্ধি করেছিলাম। এই সময়টি আপনার পছন্দ অনুযায়ী সামঞ্জস্য করা যেতে পারে, ধ্রুবক max_count কে একটি বৃহত্তর সংখ্যা তৈরি করে গতি বাড়ানো, অথবা max_count কে একটি ছোট সংখ্যা করে এটি হ্রাস করা যেতে পারে। Sseg_dec - (ব্রায়ান মেলি লিখেছেন): এই মডিউলটি ইনপুট হিসাবে একটি 8 বিট সংখ্যা নেয়, যা এটি ডিকোড করে, সংখ্যাটিকে তার দশমিক সমতুল্য রূপান্তর করে, এবং তারপর সাতটি সেগমেন্ট ডিসপ্লেতে আউটপুট করে। এই ফাইলটি কাজ করার জন্য, আপনাকে নিশ্চিত করতে হবে যে আপনার সীমাবদ্ধতা আমাদের সাথে মেলে।

পোন: এটি একটি শিফট রেজিস্টার যা বিটগুলিকে বাম দিকে স্থানান্তরিত করে, এটি একটি গরম বিট যুক্ত করে যেন এটি পাওয়ার গেজ বাড়ছে। যখন সমস্ত বিট গরম হয়, তখন সমস্ত বিট '0' তে রিসেট হয় এবং চক্রটি আবার শুরু হয়।

Ptwo: এটি P1 মডিউলের একটি উল্টানো সংস্করণ।

Deductor1: এটি একটি শিফট রেজিস্টার এবং একটি subtractor এর সমন্বয়। শিফট রেজিস্টার P1 এর শিফট রেজিস্টারের বিপরীত দিকে যায়, যা একটি কাটতি নির্দেশ করে। এটি প্রতিটি ঘড়ি চক্রের জন্য প্লেয়ার 2 এর স্বাস্থ্য থেকে 1 টি বিয়োগ করে, তাই এই দুটি ফাংশনের সংমিশ্রণে, মনে হবে প্রতিপক্ষের স্বাস্থ্য হেলথ বারের প্রতিটি নেতৃত্বের জন্য 1 দ্বারা হ্রাস পাচ্ছে।

Deductor2: এটি Deductor1 মডিউলের একটি উল্টানো সংস্করণ।

PlayDecoder (ekchen35649 থেকে ধার করা এবং সামান্য সংশোধিত তার 133 নির্দেশযোগ্য):

এটি মেনু অবস্থায় ব্যবহার করা হয় যাতে সাত সেগমেন্ট ডিকোডারে "প্লে" শব্দটি প্রদর্শিত হয়।

করণীয়: ছবি, ভিডিও

প্রস্তাবিত: