Python ব্যবহার করে Excitebike এর জন্য একটি শ্রদ্ধা তৈরি করুন

Python ব্যবহার করে Excitebike এর জন্য একটি শ্রদ্ধা তৈরি করুন

Excitebike হল একটি সাইড-স্ক্রলার গেম যেখানে আপনি একটি মোটরবাইককে জাম্পের উপর দিয়ে নেভিগেট করেন, বাধার চারপাশে কৌশলে যান এবং ফিনিশ লাইনের দিকে গতি পান।





নিন্টেন্ডো প্রথমে NES-এর জন্য এই BMX রেসিং গেমটি চালু করেছে। সেখান থেকে, কোম্পানি এক্সাইটবাইককে আধুনিকীকরণ করে এবং এটিকে N64 এবং শেষ পর্যন্ত Wii-তে প্রকাশ করে।





অনেকগুলি NES কনসোল আর নেই, যা এক্সাইটবাইক খেলা আবার কঠিন করে তোলে। ওয়্যারফ্রেম ম্যাগাজিনের কিছু রেট্রো অনুরাগীদের ধন্যবাদ, পাইথন কোডের একটি স্নিপেট আপনার রাস্পবেরি পাই বা হোম পিসিতে ঘন্টার পর ঘন্টা মজার জন্য এই এনইএস ক্লাসিকটিকে পুনরায় তৈরি করতে পারে।





যখন এক্সবক্স ওয়ান মুক্তি পায়
দিনের মেকইউজের ভিডিও

কোড পাওয়া এবং সেট আপ করা

যদিও আপনি আপনার পাইথন কোড সম্পাদনা করতে ন্যানো বা ভিম ব্যবহার করতে পারেন, আপনি একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত সুবিধা নিতে চাইবেন পাঠ্য সম্পাদক বা IDE .

Excitebike-এর এই শ্রদ্ধার মধ্যে নির্মিত বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য আপনাকে Pygame Zero ইনস্টল করতে হবে। Pygame Zero-এ গেম নির্মাতাদের জন্য Python মডিউল রয়েছে যাতে সাধারণ ভিত্তিগুলি পুনরাবৃত্তি না করে ফোকাস করা যায়।



আপনার পিসিতে python3 ইনস্টল না থাকলে, আপনি করতে পারেন সর্বশেষ সংস্করণ ডাউনলোড করুন পাইথন থেকে সরাসরি। আপনিও চাইবেন নিশ্চিত করুন যে আপনি PIP ইনস্টল করেছেন খুব

পাইথন এবং পিআইপি এর সর্বশেষ সংস্করণ ইনস্টল করার সাথে, আপনার পাওয়ারশেল বা লিনাক্স টার্মিনাল খুলুন এবং টাইপ করুন:





pip3 install pgzero 

অবশেষে, আপনাকে ওয়্যারফ্রেম ম্যাগাজিনের গিটহাব রিপোজিটরি থেকে পাইথন কোডের একটি অনুলিপি নিতে হবে। একটি টার্মিনালে নিম্নলিখিত কমান্ড টাইপ করুন:

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

বিকল্পভাবে, আপনি পারেন জিপ-আপ কোড ডাউনলোড করুন সরাসরি ওয়্যারফ্রেম গিটহাব পৃষ্ঠা থেকে।





কোড ব্রেকিং ডাউন

কোডটি কী করে তা বোঝার জন্য প্রথমে Excitebike গেমটি চালান। সোর্স কোডে নেভিগেট করে এবং তারপর Pygame Zero ব্যবহার করে এটি চালান করে এটি করুন:

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

তারপরে আপনি কোডটি দেখতে একটি টেক্সট এডিটর দিয়ে exitebike.py ফাইলটি খুলতে পারেন।

  এক্সাইটবাইক পাইথন কোড স্নিপেট

দ্য আঁকা ফাংশন বাইকের ইমেজ নড়াচড়া করার সাথে সাথে পটভূমি আঁকে। ক' থাকা ' পর্দায় আঁকা একটি ব্লককে বোঝায়৷ শব্দটি, ' ব্যাকগ্রাউন্ড' ব্যাকগ্রাউন্ড ইমেজকে বোঝায় (ছবিগুলিকে ব্যাকগ্রাউন্ড ব্লকের সাথে লিঙ্ক করা আমদানি করা পাইগেম জিরো মডিউলের জন্য ধন্যবাদ)।

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

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

শেষ ল্যাপ একটি অনুরূপ হিসাব. শুরুর সময়ের পরিবর্তে, মোটরবাইকটি পূর্বনির্ধারিত ট্র্যাক অবস্থান অতিক্রম করার সময় থেকে সময় গণনা করা হয় (উল্লেখিত trackPos <-4800 কোডে)। উদ্ধৃতি নীচের আইটেম একটি চিত্র প্রতিনিধিত্ব করে.

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

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

একবার আপনি পাইথন কোডের একটি ব্যাকআপ কপি তৈরি করার পরে, স্ক্রিনে পাথরের কী হয় তা দেখতে নীচের নম্বরগুলি পরিবর্তন করার চেষ্টা করুন!

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

আপনি কি আপনার মোটরবাইকটিকে একটি মনস্টার ট্রাক, ফোর-হুইলার বা অন্য যানবাহন দিয়ে প্রতিস্থাপন করতে চান? হয়তো আপনি ফিনিস লাইন একটি ইউনিকর্ন রেস করতে চান?

আপনাকে যা করতে হবে তা হল একটি 50x50px চিত্র (একটি স্বচ্ছ ব্যাকগ্রাউন্ড সহ) আঁকতে হবে। তারপরে, এই ফাইলটি (picture.png) 'এ রাখুন ছবি ' ফোল্ডার (এর মধ্যে উৎস-কোড-এক্সাইটবাইক ফোল্ডার)। কিছু বাস্তবতা যোগ করতে আপনি দুটি ছবি (একটি সামান্য বৃদ্ধির উচ্চতা সহ) তৈরি করতে চাইবেন। আপনাকে যা করতে হবে তা হল 'এর রেফারেন্স পরিবর্তন করুন এটা কর এখানে:

একটি ভিন্ন শরীরের উপর আপনার মুখ রাখুন
bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  excitebike ট্রাক সঙ্গে পাইথন খেলা

এছাড়াও ছবির নামের সাথে (ছবির এক্সটেনশন ছাড়া) একটি অনুসন্ধান এবং প্রতিস্থাপন কর্ম সম্পাদন করা নিশ্চিত করুন।

CheckBikeRamp() এটি এমন একটি ফাংশন যা Y অক্ষ গণনা করার কাজ করে যাতে আপনার মোটরবাইক (বা ট্রাক) র‌্যাম্পের উপরে যায় (এবং আপনি ভাগ্যবান হলে কিছু গুরুতর বায়ু পান)। দ্য কীবোর্ড ডান এবং keyboard.left পরামিতি সংজ্ঞায়িত করা হয় হালনাগাদ() ফাংশন

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

বিপরীতভাবে, অন_কি_ডাউন(কী) ফাংশন আপনার মোটরবাইককে নাক ডাকা হবে।

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

দ্য muckLane পরামিতি নিম্নলিখিত গণনা ব্যবহার করে আপনার মোটরবাইকের গতি কমিয়ে দেবে:

muckLane = int((bike.laneY-375)/50)+1

কোডের 66 লাইন নির্ধারণ করে কখন স্ক্রিনে 'মাক' ছবি প্রদর্শন করতে হবে। এখন কম্পিউটার জানে যে কখন আপনার মোটরবাইক আঁচিলের উপর দিয়ে যাবে, আপনি ট্র্যাকের উপর দিয়ে যাওয়ার সাথে সাথে এটি আপনার মোটরবাইকের গতি অর্ধেকে কমিয়ে দেবে। পরবর্তী কি হয় তা দেখতে muckLane মান /50 থেকে /25 বা /75 এ পরিবর্তন করুন।

রেসার (আহেম, পাইথন প্রোগ্রামার)! আপনার ইঞ্জিন শুরু করুন!

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

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

আপনি যখন আপনার Excitebike বর্ধিতকরণে খুশি হন, তখন কেন একটি টেক্সট অ্যাডভেঞ্চার গেম তৈরি করবেন না? অনেকগুলি বিভিন্ন অংশ রয়েছে যা নিশ্চিত করবে যে আপনি ঘন্টা, দিন বা এমনকি সপ্তাহের জন্য উত্তেজনাপূর্ণ কিছু শিখছেন!