नाग का प्रतिनिधित्व
स्नेक गेम बनाना बहुत सरल है। पहली चीज जो आपको चाहिए वह है आपके सांप के शरीर का प्रतिनिधित्व करने का एक तरीका । यदि आप अपने साँप को ब्लॉकों या टाइलों से बना मानते हैं, तो आपका शरीर बस इन ब्लॉक निर्देशांक की एक सूची हो सकता है।
आपके मामले में, यदि आप कंसोल एप्लिकेशन को करने का इरादा रखते हैं, तो इनमें से प्रत्येक कंसोल पर एक चरित्र होगा, और स्थिति कंसोल आउटपुट की एक पंक्ति या पंक्ति के अनुरूप होगी। तो आप इस के साथ शुरू करते हैं:
// 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
आप चरित्र के सिर (सूची पर पहला तत्व) और पूंछ (सूची पर अंतिम तत्व) के लिए विभिन्न पात्रों को चुनकर और अधिक जटिल हो सकते हैं और यहां तक कि उन्हें आसन्न ब्लॉकों के पदों के आधार पर उन्मुख कर सकते हैं। लेकिन शुरुआत के लिए, बस एक #या कुछ के रूप में सब कुछ प्रस्तुत करना।
आप उदाहरण के लिए एक 2 डी चार सरणी के साथ शुरू कर सकते हैं जिसमें पृष्ठभूमि इस तरह है:
// 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);