项目:简易贪吃蛇
需求分析:需要一款小游戏,代码量不超过一千行,尽量五百行左右,且游戏关卡难度较低,功能丰富,2G以下的设备运行后期易于维护和升级
项目如下:
界面设置
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponet();
//设置窗口边框样式
this.WindowStyle = WindowStyle.None;
//设置窗口是否支持透明度
this.AllowsTransbarencv = true;
加载事件
private void Window_Loaded(object sender,RouteEventArgs e)
{
//设置窗口大小及样式
this.Background = Brushes.Transparent;
//当前窗体设置最大化
this.WindowState = WindowState.Maximized;
this.Background = Brushes.Transparent;
she.Background = new RadialGradientBrush(Colors.White,Colors.CornflowerBlue)
//设置窗体透明度
she.Opactiy = 0.8;
为了程序的效果正常显示
she.Width = this.Width;
she.Height = this.Height;
蛇??的创建
private void snake()
{
for(int i = 0; i < 4; i ++)
{
//设置蛇头
Border st = new Border();
st.Width = gs;
st.Height = gs;
//给蛇做标签使蛇默认向右走
st.Tag = "Right";
if(i == 0)
{
st.Background = Brushes.BlueViolet;
}
else
{
st.Background = Brushes.Blue;
}
//设置蛇头的边框长度
//st.BorderThickness = new Thickness(10);
//设置蛇头的边框颜色渐变
//st.BorderBrush = new LinearGradientBrush(Colors.Green,Colors.Yellow,0)
//设置蛇头为圆形 取值为蛇头大小的一半
st.CornerRadius = new CornerRadius(10);
//设置蛇初始位置
Canvas.SetLeft(st, (SumX/2)*gs - i * gs);
Canvas.SetTop(st, 100);
she.Children.Add(st);
食物的创建
//食物的创建
Border food = new Border();
private void foods()
{
food.Background = Brushes.Black;
food.Height = gs;
food.Width = gs;
Canvas.SetLeft(food, sj.Next(SumX) * gs);
Canvas.SetLeft(food, sj.Next(SumY) * gs);
food.CornerRadius = new CornerRadius(10);
she.Children.Add(food);
}
键盘事件
private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Right:
sn[0].Tag = "Right";
break;
case Key.Left:
sn[0].Tag = "Left";
break;
case Key.Up:
sn[0].Tag = "Up";
break;
case Key.Down:
sn[0].Tag = "Down";
break;
}
蛇的移动
private void Timer1_Tick(object sender, EventArgs e)
{
for (int i = 0, i<sn.Count;i++)
{
//如果蛇集合的tag等于"Left" 则蛇集合的位置等于蛇向??左减一个蛇身的宽度 从而实现移动
if (sn[i].Tag.ToString() == "Left")
{
Canvas.SetLeft(sn[i], Canvas.GetLeft(sn[i])-gs);
}
else if (sn[i].Tag.ToString() == "Right")
{
Canvas.SetLeft(sn[i], Canvas.GetLeft(sn[i])-gs);
}
else if (sn[i].Tag.ToString() == "Up")
{
Canvas.SetTop(sn[i], Canvas.GetTop(sn[i])-gs);
}
else if (sn[i].Tag.ToString() == "Down")
{
Canvas.SetTop(sn[i], Canvas.GetTop(sn[i])-gs);
}
食物事件
//如果蛇的位置等于食物的位置 那么食物的位置再次随机出现
if (Canvas.GetLeft (sn[0] == Canvas.GetLeft (food) && Canvas.GetTop (sn[0]) == Canvas.GetTop(food))
{
Canvas.SetLeft(food, sj.Next(SumX) * gs);
Canvas.SetTop(food, sj.Next(SumY) * gs);
//增添蛇身
Border tianjia = new Border();
tianjia.Width = tianjia.Height = gs;
tianjia.Tag = " ";
tianjia.Background = Brushes.DarkRed;
tianjia.CornerRadius = new CornerRadius(10);
// 设置吃到食物 蛇添加食物的位置
Canvas.SetLeft(tianjia, Canvas.GetLeft(sn[sn.Count - 1]));
Canvas.SetTop(tianjia, Canvas.GetTop(sn[sn.Count - 1]));
she.Children.Add(tianjia);
she.Add(tianjia);
开始暂停按钮
Button but = new Button();
but.Width = 80;
but.Height = 40;
but.Content ="开始游戏";
but.FontSize = 16;
Canvas.SetLeft(but , 1340);
Canvas.SetTop(but,300);
she.Children.Add(but);
but.Click += But_Click;
Button bur = new Button();
bur.Width = 80;
bur.Height = 40;
bur.Content = "暂停游戏";
bur.FontSize = 16;
Canvas.SetLeft(bur, 1330);
Canvas.SetTop(bur,360);
she.Children.Add(bur);
bur.Click += Bur_Click;
原文:https://www.cnblogs.com/cc12/p/14800515.html