Hello Guys, আজ আমরা একটি অতি পরিচিত ও জনপ্রিয় গেম তৈরি করবো। যে গেমটি আমরা মোবাইল ডেক্সটপ ল্যাপটপ এ হরহামেশাই খেলে থাকি। গেমটির নাম snake গেম। যাকে বাংলায় বলে শাপ খেলা। যেহেতু গেমটি অনেক জনপ্রিয় তাই অনেকেই টাকা দিয়ে গেমটি কিনে খেলে। কিন্তু আমারা সি শার্প শিক্ষার্থী তাই আমরা টাকা দিয়ে গেমটি কিনব না বা অন্নের তৈরি গেম খেলবো ও না। তাহলে কি আমরা গেমটি খেলবো না? অবশ্যই খেলবো তাও এবার নিজের মাতৃভাষা বাংলায়।
তবে নিজেরা গেমটি তৈরি করে তারপর খেলবো।
আগেই বলে দিচ্ছি গেমটি আগের গেম গুলো থেকে একটু কঠিন। এখানে আমাদের ক্লাস ডিক্লিয়ার করতে হবে। এবং ক্লাস এর ফাংশনগুলকে কল করতে হবে। তবে ভয় পাবেনা। আমি আছি না? যত সহজে সম্ভব চিত্র সহ লিখবো।
চলুন তাহলে শুরু করা যাক।
Create a new Windows application project. এবং অ্যাপ্লিকেশানটির নাম snake game দিন। এবং ওকে ক্লিক করুন তাহলে একটি ফর্ম ওপেন হবে। এখন ফর্ম এর প্রোপার্টিজ থেকে এর back color change করে black করি।
>
এখন ফর্ম এ তিন টি লেভেল নেই। যাদের নাম যথাক্রমে label1, label2, label3। এখন label1, label2, label3 এদের প্রোপার্টিজ থেকে auto size = false, back color = white, Fore color = black করি।
এখন label3 এর টেক্সট পরিবর্তন করে লিখি “গেমটি খেলতে স্পেসবার প্রেস করুন।”
</div> <div> <pre>using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace snake_game { public class snake { // Decliar variable private Rectangle[] snakeRec; private SolidBrush brush; private int x, y, width, height; public Rectangle[] SnakeRec { get { return snakeRec; } } //////////////////////////////// public snake() { snakeRec = new Rectangle[3]; brush = new SolidBrush(Color.Red); x = 20; y = 0; width = 10; height = 10; for (int i = 0; i < snakeRec.Length; i++) { snakeRec[i] = new Rectangle(x, y, width, height); x -= 10; } } public void drawSnake(Graphics paper) { foreach (Rectangle rec in snakeRec) { paper.FillRectangle(brush, rec); } } public void drawSnake() { for (int i = snakeRec.Length - 1; i > 0; i--) { snakeRec[i] = snakeRec[i - 1]; } } public void moveDown() { drawSnake();> snakeRec[0].Y += 10; } public void moveUp() { drawSnake(); snakeRec[0].Y -= 10; } public void moveLeft() {</div> drawSnake(); snakeRec[0].X -= 10; } public void moveRight() { drawSnake(); snakeRec[0].X += 10; } public void growSnake() { List<Rectangle> rec = snakeRec.ToList(); rec.Add(new Rectangle(snakeRec[snakeRec.Length-1].X,snakeRec[snakeRec.Length-1].Y,width,height)); snakeRec = rec.ToArray(); } } }
</div> <div>using System;</div> <div>using System.Collections.Generic;</div> <div>using System.Linq;</div> <div>using System.Text;</div> <div>using System.Drawing;</div> <div></div> <div>namespace snake_game</div> <div>{</div> <div> public class Food</div> <div> {</div> <div> private int x, y, width, height;</div> <div> private SolidBrush brush;</div> <div> public Rectangle foodRec;</div> <div></div> <div> public Food(Random randFood)</div> <div> {</div> <div> x = randFood.Next(0, 29) * 10;</div> <div> y = randFood.Next(0, 29) * 10;</div> <div> brush = new SolidBrush(Color.Red);</div> <div> width = 10;</div> <div> height=10;</div> <div> foodRec = new Rectangle(x, y, width, height);</div> <div>}</div> <div> public void foodlocation(Random randFood)</div> <div> {</div> <div> x = randFood.Next(0, 29) * 10;</div> <div> y = randFood.Next(0, 29) * 10;</div> <div></div> <div> }</div> <div></div> <div></div> <div> public void drawFood(Graphics paper)</div> <div> {</div> <div> foodRec.X = x;</div> <div> foodRec.Y = y;</div> <div> paper.FillRectangle(brush,foodRec);</div> <div> }</div> <div></div> <div> }</div> <div>}</div> <div>
</div> <div> public Form1()</div> <div> {</div> <div> InitializeComponent();</div> <div> }</div>
<div>এর InitializeComponent(); এর নিচে এবং } এই চিনহের উপরে food = new Food(randFood); এই কোড টুকু লিখি।</div>
<div>এখন</div>
<div> public Form1()</div> <div> {</div> <div> InitializeComponent();</div> <div> food = new Food(randFood);</div> <div> }</div> <div>
</div> <div> Random randFood = new Random();</div> <div> Graphics paper;</div> <div> snake snakes = new snake();</div> <div> Food food;</div> <div> bool left = false;</div> <div> bool right = false;</div> <div> bool up = false;</div> <div> bool down = false;</div> <div> int score = 0;</div> <div> public void collision()</div> <div> {</div> <div> for (int i = 1; i < snakes.SnakeRec.Length; i++)</div> <div> {</div> <div> if (snakes.SnakeRec[0].IntersectsWith(snakes.SnakeRec[1]))</div> <div> {</div> <div> restart();</div> <div> }</div> <div> }</div> <div> if (snakes.SnakeRec[0].X < 0 || snakes.SnakeRec[0].X > 290)</div> <div> {</div> <div> restart();</div> <div></div> <div> }</div> <div> if (snakes.SnakeRec[0].Y < 0 || snakes.SnakeRec[0].Y > 290)</div> <div> {</div> <div> restart();</div> <div> }</div> <div> }</div> <div></div> <div> public void restart()</div> <div> {</div> <div> timer1.Enabled = false;</div> <div>
এখন ফর্ম এর কোড উইন্ডোতে গিয়ে
</div> <div> if (e.KeyData == Keys.Space)</div> <div> {</div> <div> timer1.Enabled = true;</div> <div> label3.Text = "";</div> <div> down = false;</div> <div> up = false;</div> <div> left = false;</div> <div> right = true;</div> <div> }</div> <div> if (e.KeyData == Keys.Down && up == false)</div> <div> {</div> <div> down = true;</div> <div> up = false;</div> <div> right = false;</div> <div> left = false;</div> <div> }</div> <div> if (e.KeyData == Keys.Up && down == false)</div> <div> {</div> <div> down = false;</div> <div> up = true;</div> <div> right = false;</div> <div> left = false;</div> <div> }</div> <div> if (e.KeyData == Keys.Left && right == false)</div> <div> {</div> <div> down = false;</div> <div> up = false;</div> <div> right = false;</div> <div> left = true;</div> <div> }</div> <div> if (e.KeyData == Keys.Right && left == false)</div> <div> {</div> <div> down = false;</div> <div> up = false;</div> <div> right = true;</div> <div> left = false;</div> <div> }</div> <div>
</div> <div> private void Form1_Paint(object sender, PaintEventArgs e)</div> <div> {</div> <div> }</div> <div>
</div> <div> label2.Text = Convert.ToString(score);</div> <div> if (down) { snakes.moveDown(); }</div> <div> if (up) { snakes.moveUp(); }</div> <div> if (right) { snakes.moveRight(); }</div> <div> if (left) { snakes.moveLeft(); }</div> <div> this.Invalidate();</div> <div> collision();</div> <div> for (int i = 0; i < snakes.SnakeRec.Length; i++)</div> <div> {</div> <div> if (snakes.SnakeRec[i].IntersectsWith(food.foodRec))</div> <div> {</div> <div> score += 1;</div> <div> snakes.growSnake();</div> <div> food.foodlocation(randFood);</div> <div> }</div> <div> }</div> <div>
এখন F5 বাটন টি চেপে প্রোগ্রামটি রান করুন এবং গেমটি মজা করে খেলুন আর আমার জন্য দোয়া করবেন।
সোর্স কোডটি ডাউনলোড করুন।
আর যদি বুজতে না পারেন তবে ফেসবুক। যত দ্রুত সম্ভব আপনার উত্তর দেয়ার চেষ্টা করবো।প্রথম প্রকাশিত এইখানে।
আমি ইসলাম আমিনুল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 2 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 32 টি টিউন ও 27 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 4 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
ধন্যবাদ