简易贪吃蛇 计应192西 四组 程喜

项目:简易贪吃蛇

需求分析:需要一款小游戏,代码量不超过一千行,尽量五百行左右,且游戏关卡难度较低,功能丰富,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;

 

 

posted on 2021-05-23 09:55  计应192西四组  阅读(56)  评论(0编辑  收藏  举报

导航