সাপের প্রতিনিধিত্ব করছেন
একটি সাপ গেম তৈরি করা বেশ সহজ। আপনার প্রথম যে জিনিসটি প্রয়োজন তা হ'ল আপনার সাপের শরীরকে উপস্থাপন করার উপায় । যদি আপনি আপনার সাপটিকে ব্লক বা টাইলস দিয়ে গঠিত হিসাবে বিবেচনা করেন তবে আপনার শরীরটি কেবল এই ব্লক স্থানাঙ্কের একটি তালিকা হতে পারে।
আপনার ক্ষেত্রে, আপনি যদি কনসোল অ্যাপ্লিকেশনটি করতে চান তবে এগুলির প্রতিটি কনসোলের একটি অক্ষর হবে এবং অবস্থানটি কনসোল আউটপুটটির একটি লাইন বা সারি অনুসারে হবে। সুতরাং আপনি এটি দিয়ে শুরু:
// List of 2D coordinates that make up the body of the snake
List<Point>() body = new List<Point>();
এই মুহুর্তে, আপনার তালিকা খালি, তাই আপনার সাপের কোনও শরীর নেই। ধরা যাক আপনি 5 দৈর্ঘ্যের একটি সাপ চান এবং মাথাটি অবস্থানের (5,2) থেকে শুরু করে নীচের দিকে বাড়ানো উচিত। গেমটি শুরু হওয়ার সাথে সাথে তালিকায় এই অবস্থানগুলি যুক্ত করুন:
// Initialize the snake with 5 blocks starting downwards from (5,2)
for(int i=0; i<5; ++i)
{
body.Add(new Point(5, 2 + i));
}
সাপকে রেন্ডারিং করা হচ্ছে
রেন্ডারিংয়ের জন্য কেবল শরীরের তালিকার প্রতিটি পজিশনে একটি অক্ষর আঁকুন। উদাহরণস্বরূপ উপরের উদাহরণটি আঁকতে পারে:
...................
...................
.....O............. -- y = 2
.....#.............
.....#.............
.....#.............
.....V.............
...................
|
x = 5
আপনি চরিত্রের মাথা (তালিকার প্রথম উপাদান) এবং লেজ (তালিকার শেষ উপাদান) এবং এমনকি সংলগ্ন ব্লকগুলির অবস্থানের উপর নির্ভর করে এগুলি ওরিয়েন্টের জন্য বিভিন্ন অক্ষর চয়ন করে আরও জটিল হয়ে উঠতে পারেন। তবে শুরু করার জন্য, সমস্ত কিছুকে #
কিছু বা কিছু হিসাবে কেবল রেন্ডার করুন ।
আপনি উদাহরণস্বরূপ 2D চর অ্যারে দিয়ে ব্যাকগ্রাউন্ড সহ এটি শুরু করতে পারেন:
// Array with map characters
char[,] render = new char[width, height];
// Fill with background
for(x=0; x<width; ++x)
for(y=0; y<height; ++y)
render[x,y] = '.';
এবং তারপরে সাপের দেহটিকে অ্যারেতে আঁকতে পুনরাবৃত্তি করুন:
// Render snake
foreach(Point point in body)
render[point.X, point.Y] = '#';
এবং অবশেষে আবার অ্যারেতে পুনরাবৃত্তি করুন এবং প্রতিটি সারিটির শেষে একটি লাইন ব্রেক সহ প্রতিটি অক্ষর কনসোলে লিখুন।
// Render to console
for(y=0; y<height; ++y)
{
for(x=0; x<width; ++x)
{
Console.Write(render[x,y]);
}
Console.WriteLine();
}
সাপকে সরানো হচ্ছে
অবশেষে, আন্দোলন। আপনার প্রথম যে জিনিসটি প্রয়োজন তা হ'ল Direction
সাপটি চলাচল করছে তার খোঁজ রাখা । এটি একটি সহজ এনাম হতে পারে:
// Enum to store the direction the snake is moving
enum Direction { Left, Right, Up, Down }
এবং সর্পটিকে সরানোর কাজটি কেবল তালিকা থেকে শেষ ব্লকটি সরিয়ে এবং সামনে রেখে সঠিক দিকটিতে যুক্ত করা যায় । অন্য কথায় কিছু:
// Remove tail from body
body.RemoveAt(body.Count - 1);
// Get head position
Point next = body[0];
// Calculate where the head should be next based on the snake's direction
if(direction == Direction.Left)
next = new Point(next.X-1, next.Y);
if(direction == Direction.Right)
next = new Point(next.X+1, next.Y);
if(direction == Direction.Up)
next = new Point(next.X, next.Y-1);
if(direction == Direction.Down)
next = new Point(next.X, next.Y+1);
// Insert new head into the snake's body
body.Insert(0, next);