تقاضای کمک برای برطرف کردن اشکال برنامه
[]سلام به همه دوستان
من برنامه نوسیو تازه شروع کردم و در پروزم به اشکالی بر خوردم که مربوط به مبحث آرایه هاس .اگه می شه لطف کنید و من رو راهنمایی کنید تا ایرادشو بر طرف کنم.کد برنامه به زبان c#.net در محیط visual studio 2008 در console application و درست کار می کنه فقط 1 ایراد داره که ممنون می شم راهنماییم کنید.
موضوع:برنامه snake به صورت ساده است و از کاراکتر * برای مار و غذای مار استفاده شده . وقتی مار ,غذا (1 * که به صورت random ایجاد می شه) رو خورد باید طولش اظافه بشه.و وقتی امتیازش به 25 رسی بره مرحله بعد.اگه مار به خارج از کادر برهgame over می شه.
ایراد:ایراد من اینه که وقتی مار غذا رو خورد امتیازش اضافه می شه ولی طولش اضافه نمی شه
کد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
classProgram
{
staticvoid Main(string[] args)
{
do
{
int status = Menu();
if (status == 1)
Easy(status);
elseif (status == 2)
Medium(status);
elseif (status == 3)
Difficult(status);
elseif (status == 4)
break;
} while (Console.ReadKey().Key == ConsoleKey.Y);
}
///<summary>
/// This function draws a rectangle.
///</summary>
///<param name="x">X</param>
///<param name="y">Y</param>
///<param name="width">Width</param>
///<param name="height">Height</param>
///<param name="color">Rectangle's background color</param>
staticvoid ShowRectangle(int x, int y, int width, int height, ConsoleColor color)
{
for (int i = 0; i < height; i++)
{
Console.CursorTop = i + y;
Console.CursorLeft = x;
Console.BackgroundColor = color;
for (int j = 0; j < width; j++)
Console.Write(" ");
}
}
///<summary>
/// This function print title of rectangle.
///</summary>
///<param name="x">X</param>
///<param name="y">Y</param>
///<param name="color1">Background color</param>
///<param name="color2">Foreground Color</param>
///<param name="message">show title message</param>
staticvoid ShowMessage(int x, int y, ConsoleColor color1, ConsoleColor color2, string message)
{
Console.BackgroundColor = color1;
Console.ForegroundColor = color2;
Console.SetCursorPosition(x, y);
Console.Write(message);
}
///<summary>
/// This function move snake
///</summary>
///<param name="x">X</param>
///<param name="y">Y</param>
///<param name="direction">direction of move snake</param>
///<param name="score">score</param>
///<param name="color">Background</param>
staticvoid MoveSnake(int x, int y, int score, int direction, ConsoleColor color,int time,int level)
{
//ê«¢لیé ™ ی ©ںی ¥©ک¢ êں©
ShowRectangle(3, 3, 45, 19, ConsoleColor.Blue);
//ê«¢لیé هی©يھى ںی ©ںی ëêںی¬ ںê¢یںھ
ShowRectangle(53, 5, 20, 4, ConsoleColor.Cyan);
//ê«¢لیé هی©يھى ںی ©ںی ëêںی¬ ë¢ی¤ى
ShowRectangle(53, 12, 20, 4, ConsoleColor.Cyan);
//ê«¢لیé هی©يھى ںی ©ںی «يںé ©ںی ں§ںêى ںھی
ShowRectangle(53, 19, 20, 5, ConsoleColor.Cyan);
//¢ی¢© ê«¢لیé ëêںی¬ ںê¢یںھ
ShowMessage(53, 3, ConsoleColor.Black, ConsoleColor.Yellow, "score:");
//¢ی¢© ê«¢لیé ëêںی¬ ںê¢یںھ
ShowMessage(53, 10, ConsoleColor.Black, ConsoleColor.Yellow, "resault:");
//¢ی¢© ê«¢لیé ëêںی¬ ںê¢یںھ
ShowMessage(53, 17, ConsoleColor.Black, ConsoleColor.Yellow, "show message:");
Console.BackgroundColor = ConsoleColor.Blue;
Console.CursorVisible = false;
// 1: Right, 2: Left, 3: Up, 4: Down
while (score < 20)
{
Random food = newRandom();
if (!((x > 2 && x < 48) && (y > 2 && y < 22)))
break;
int xFood = Console.CursorLeft = food.Next(4, 46);
int yFood = Console.CursorTop = food.Next(4, 20);
Console.SetCursorPosition(xFood, yFood);
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("*");
while (true)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.SetCursorPosition(x, y);
Console.Write("*");
System.Threading.Thread.Sleep(time);
if (Console.KeyAvailable)
{
ConsoleKey key = Console.ReadKey().Key;
switch (key)
{
caseConsoleKey.Escape:
return ;
caseConsoleKey.UpArrow:
if (direction != 4)
{
direction = 3;
}
break;
caseConsoleKey.DownArrow:
if(direction!=3)
{
direction = 4;
}
break;
caseConsoleKey.LeftArrow:
if (direction != 1)
{
direction = 2;
}
break;
caseConsoleKey.RightArrow:
if(direction!=2)
{
direction = 1;
}
break;
}
}
Console.SetCursorPosition(x, y);
Console.Write(" ");
switch (direction)
{
case 1:
x++;
break;
case 2:
x--;
break;
case 3:
y--;
break;
case 4:
y++;
break;
}
if (!((x > 2 && x < 48) && (y > 2 && y < 22)))
break;
if (x== xFood && y== yFood)
{
score += 5;
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(54, 6);
Console.WriteLine(score);
Console.BackgroundColor = ConsoleColor.Blue;
Console.SetCursorPosition(xFood, yFood);
Console.Write(" ");
break;
}
}
}
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.Red;
if (score == 20)
{
Console.SetCursorPosition(54, 13);
Console.Write("You won");
Console.SetCursorPosition(54, 20);
Console.WriteLine("Are you sure you ");
Console.SetCursorPosition(54, 21);
Console.WriteLine("want to go ");
Console.SetCursorPosition(54, 22);
Console.Write("next level?(y/n)");
Console.CursorVisible = true;
ConsoleKey key1 = newConsoleKey();
key1 = Console.ReadKey().Key;
if (key1 == ConsoleKey.Y)
{
if (level == 1)
{
level = 2;
Medium(level);
}
else
{
level = 3;
Difficult(level);
}
}
elseif (key1 == ConsoleKey.N)
{
Menu();
//do
//{
// int status = Menu();
// if (status == 1)
// Easy(status);
// else if (status == 2)
// Medium(status);
// else if (status == 3)
// Difficult(status);
// else if (status == 4)
// break;
//} while (Console.ReadKey().Key == ConsoleKey.Y);
}
}
else
{
Console.SetCursorPosition(54, 13);
Console.Write("game over");
Console.SetCursorPosition(54, 20);
Console.WriteLine("Are you sure you ");
Console.SetCursorPosition(54, 21);
Console.WriteLine("want to start a");
Console.SetCursorPosition(54, 22);
Console.Write("new game?(y/n) ");
Console.CursorVisible = true;
}
}
//********************************position of random star(food)*********************************
///<summary>
///</summary>
///<returns>xRandom</returns>
staticint XRandomStar()
{
Random food = newRandom();
int xRandom = Console.CursorLeft = food.Next(4, 46);
return xRandom;
}
///<summary>
/// this function return y position of random star(food)
///</summary>
///<returns>yRandom</returns>
staticint YRandomStar()
{
Random food = newRandom();
int yRandom = Console.CursorTop = food.Next(4, 20);
return yRandom;
}
//**************************************Easy***********************************
///<summary>
/// go to Easy Level
///</summary>
///<param name="status">number of level</param>
staticvoid Easy(int status)
{
Console.BackgroundColor = ConsoleColor.Black;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.SetCursorPosition(53, 1);
Console.Write("Easy Level");
MoveSnake(4, 4, 0, 1, ConsoleColor.Blue,500,status);
}
//**************************************Medium***********************************
///<summary>
/// go to Medium Level
///</summary>
///<param name="status">number of level</param>
staticvoid Medium(int status)
{
Console.BackgroundColor = ConsoleColor.Black;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.SetCursorPosition(53, 1);
Console.Write("Medium Level");
MoveSnake(4,4,0,1,ConsoleColor.Blue,300,status);
}
//****************************************Difficult*******************************
///<summary>
/// go to dificult level
///</summary>
///<param name="status">number of level</param>
privatestaticvoid Difficult(int status)
{
Console.BackgroundColor = ConsoleColor.Black;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.SetCursorPosition(53, 1);
Console.Write("Difficult Level");
MoveSnake(4, 4, 0, 1, ConsoleColor.Blue, 100,status);
}
//*********************************************Menu*************************************
///<summary>
/// go to Menu
///</summary>
///<returns>return which level of game</returns>
staticint Menu()
{
Console.Clear();
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Red;
Console.Clear();
Console.CursorVisible = false;
Console.BackgroundColor = ConsoleColor.Yellow;
for (int i = 0; i < 11; i++)
{
Console.SetCursorPosition(32, 6 + i);
for (int j = 0; j < 16; j++)
{
Console.Write(" ");
}
}
Console.SetCursorPosition(36, 8);
Console.Write("Easy");
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 10);
Console.Write("Medium");
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 12);
Console.Write("Difficult");
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 14);
Console.Write("Exit");
int status = 1;
ConsoleKey key1 = Console.ReadKey().Key;
while (key1 != ConsoleKey.Enter)
{
if (status == 1 && key1 == ConsoleKey.DownArrow)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 8);
Console.Write("Easy");
status = 2;
}
elseif (status == 2 && key1 == ConsoleKey.DownArrow)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 10);
Console.Write("Medium");
status = 3;
}
elseif (status == 3 && key1 == ConsoleKey.DownArrow)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 12);
Console.Write("Difficult");
status = 4;
}
elseif (status == 4 && key1 == ConsoleKey.UpArrow)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 14);
Console.Write("Exit");
status = 3;
}
elseif (status == 3 && key1 == ConsoleKey.UpArrow)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 12);
Console.Write("Difficult");
status = 2;
}
elseif (status == 2 && key1 == ConsoleKey.UpArrow)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 10);
Console.Write("Medium");
status = 1;
}
else
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(36, 8);
Console.Write("Easy");
}
switch (status)
{
case 1:
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(36, 8);
Console.Write("Easy");
break;
case 2:
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(36, 10);
Console.Write("Medium");
break;
case 3:
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(36, 12);
Console.Write("Difficult");
break;
case 4:
Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(36, 14);
Console.Write("Exit");
break;
}
key1 = Console.ReadKey().Key;
}
return status;
}
}
}