Игра "Змейка"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?зд. Osborne, 2010

.Сайт www.gamedev.ru

.Джеффри Рихтер Программирование на языке C# - мастер-класс - М.: Издательство Питер, 2008

 

 

Исходный код

 

Класс Program.class Program

{

 

[STAThread]void Main()

{.EnableVisualStyles();.SetCompatibleTextRenderingDefault(false);.Run(new UserBox());

}

}

 

Класс UserBox - предоставляет начальное окно программы. В нем содержится небольшое описание процесса игры и поле для ввода имени пользователя.partial class UserBox : Form

{UserBox()

{();.Text = "Игра змейка. \nЦель игры: управляя змейкой собирать яблоки которые появляются на игровом поле. \nДля управления змейкой используйте клавиши вниз, вверх, влево, вправо \nДля начала игры нажмите любую клавишу управления и змейка начнет движение. \nДля продалжения нажмите \"Enter\" ";

}void textBox1_KeyDown(object sender, KeyEventArgs e)

{(e.KeyCode == Keys.Enter)

{.Hide();x = new SnakeCSharpWindow(textBox1.Text);.Show();

}

}

}

 

Класс SnakeCSharpWindow - основной класс в котором описана логика игры.partial class SnakeCSharpWindow : Form

snake=newLinkedList(); //LinkedList doesnt have add...Table table = new Table();Person person = new Person();Apple apple = new Apple(false, snake);

SnakeCSharpWindow(string player)

{

menu = new MainMenu();item = new MenuItem("&Файл");.MenuItems.Add(item);

// Add the menu entries to the "File" menu.MenuItems.Add(new MenuItem("&Выход", new EventHandler(Exit)));= new MenuItem("&Уровень");.MenuItems.Add(item);

// Add the menu entries to the "File" menu.MenuItems.Add(new MenuItem("Быстрее", new EventHandler(LevelUp)));.MenuItems.Add(new MenuItem("Медленне", new EventHandler(LevelDown)));

// Create a new Menu= new MenuItem("&Помощь");.MenuItems.Add(item);

// Add the menu entries to the "Help" menu.MenuItems.Add(new MenuItem("&О проекте", new EventHandler(OnAbout)));

// Attach the menu to the window= menu;.ClientSize = new System.Drawing.Size(640, 480);.FormBorderStyle = FormBorderStyle.FixedSingle;.Name = "SnakeCSharpWindow";.Text = "SnakeCSharp";.Paint += new PaintEventHandler(SnakeCSharpWindow_Paint);.KeyDown += new KeyEventHandler(SnakeCSharpWindow_KeyDown);.Tick += new EventHandler(t_Tick);.Start();.AddFirst(new Dir(10, 10));.Player = player;

}

void LevelUp(object sender, EventArgs ev)

{(bonus < 5)

{.Interval -= 20;+= 1;

}

}

void LevelDown(object sender, EventArgs ev)

{(bonus > 1)

{.Interval += 20;-= 1;

}

}

void OnAbout(object sender, EventArgs ev)

{

about = new AboutBox1();.ShowDialog();= null;

}

SnakeCSharpWindow_KeyDown(object sender, KeyEventArgs e) //Change direction

{(e.KeyCode == Keys.Left) { dir = new Dir(-10, 0); }(e.KeyCode == Keys.Right) { dir = new Dir(10, 0); }(e.KeyCode == Keys.Up) { dir = new Dir(0, -10); }(e.KeyCode == Keys.Down) { dir = new Dir(0, 10); }(e.KeyCode == Keys.Escape) { this.Close(); }

}

SnakeCSharpWindow_Paint(object sender, PaintEventArgs e)

=(bonus*200)){LevelUp(sender,e);}i=0;point=1;(m){point=3;}(Dircurinsnake)//Drawsnakeandcheckselfcollision">{.Graphics.DrawRectangle(new Pen(Color.Red, 3), 0, 0, 640, 480);.Graphics.FillRectangle(apple.Color, apple.Coordinates.X, apple.Coordinates.Y, 10, 10);.Graphics.DrawString(points.ToString(), new Font("Arial", 30), new SolidBrush(Color.Orange), new PointF(540, 10));.Graphics.DrawString("Уровень: " + bonus.ToString(), new Font("Arial", 20), new SolidBrush(Color.DarkBlue), new PointF(10, 10));(points >= (bonus *200)) { LevelUp(sender, e); }i = 0;point = 1;(m) { point = 3; }(Dir cur in snake) //Draw snake and check self collision

{.Graphics.FillRectangle(Brushes.Black, cur.point.X, cur.point.Y, 10, 10);(i != 0 && snake.First.Value.point.X == cur.point.X && snake.First.Value.point.Y == cur.point.Y) { TheEnd(e); }++;

}(snake.First.Value.point.X == 640 | snake.First.Value.point.Y == 480 | snake.First.Value.point.Y == 0 | snake.First.Value.point.X == 0) { TheEnd(e); }

(snake.First.Value.point.X == apple.Coordinates.X && snake.First.Value.point.Y == apple.Coordinates.Y) //Collision apple

=1000){Triumph(e);}">{(count_apple % 5 == 0) { apple = new Apple(true, snake); m = true; }{ apple = new Apple(false, snake); m = false; }_apple++;+= (point * bonus);.AddLast(snake.Last.Value);(points >= 1000) { Triumph(e); }

}

}

t_Tick(object sender, EventArgs e) //Move Snake

{.AddFirst(new Dir(snake.First.Value.point.X + dir.point.X, snake.First.Value.point.Y + dir.point.Y));.RemoveLast();.Refresh();

}

TheEnd(PaintEventArgs e)

temp=table.GetAllPersons();w=90;=newFont("Tahoma",15);=newSolidBrush(Color.Orange);n=temp.Count;(n>10){n=10;}(inti=0;i 10) { n = 10; }(int i = 0; i < n; i++)

{.Graphics.DrawString(temp[i].Player + " : " + Convert.ToString(temp[i].Points), drawFont, drawBrush, new PointF(200, w));+= 20;

}.Close();

}

Triumph(PaintEventArgs e)

temp=table.GetAllPersons();.OrderByDescending(y=>y.Points);w=190;=newFont("Tahoma",15);=newSolidBrush(Color.Orange);n=temp.Count;(n>10){n=10;}(inti=0;i 10) { n = 10; }(int i = 0; i < n; i++)

{.Graphics.DrawString(temp[i].Player + " : " + Convert.ToString(temp[i].Points), drawFont, drawBrush, new PointF(200, w));+= 20;

}.Close();

}

void Exit(object sender, EventArgs e)

{.Close();

}

}

 

Класс AboutBox1 - предоставляет нам окно О программеAboutBox1()

{();.Text = String.Format("О проекте");.labelProductName.Text = "Курсовой проект \"Змейка\"";.labelVersion.Text = String.Format("Студента группы 052001");.labelCopyright.Text = "Горбача Андрея";.labelCompanyName.Text = null;.textBoxDescription.Text = "Программа создана как курсовой проект. \n"+ "Для повышения знаний и умений создателя.\n" +

"Программа предназначена для любых возрастов.\n";

}

 

Класс Dir - описывает квадрат, из которого состоит змейка.class Dir

{Point point { get; set; }Dir(int x, int y)

{= new Point(x, y);

}

}

 

Класс Apple - оп