Игра "Змейка"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?зд. 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 - оп