前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#贪吃蛇游戏(全代码)

C#贪吃蛇游戏(全代码)

作者头像
全栈程序员站长
发布2022-08-31 10:06:34
1.5K0
发布2022-08-31 10:06:34
举报

大家好,又见面了,我是你们的朋友全栈君。

C#贪吃蛇游戏

这是本人第一篇博客,感谢收看,之后对游戏做出的修改,将以方法代码块放在最后

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Form方法

100毫秒刷新

代码语言:javascript
复制
private void timer1_Tick(object sender, EventArgs e)
        { 
   
            DrawSnake();
            DrawFood();
        }

秒刷新(蛇的移动速度由此决定)

代码语言:javascript
复制
        private void timer2_Tick(object sender, EventArgs e)
        { 
   
            Snake.SnakeMove(Snake.wasd);
            EatFood();
            TobeOrNotTobe();
            label2.Text = score.ToString();
        }

画蛇

代码语言:javascript
复制
public void DrawSnake()
        { 
   
            RectangleF[] rectangles = new RectangleF[Snake.realsnake.Count];

            int num;
            for (num = 0; num < Snake.realsnake.Count; num++)
            { 
   
                rectangles[num] = new RectangleF(Snake.realsnake[num].Location_x,
                    Snake.realsnake[num].Location_y, Snake.width, Snake.height);
            }
            this.Refresh();
            Graphics g = this.CreateGraphics();
            SolidBrush myBrush = new SolidBrush(Color.Black);
            g.FillRectangles(myBrush, rectangles);
        }

创建食物

代码语言:javascript
复制
public void newfood()
        { 
   
            Food food = new Food();
            foodx = food.Location_x;
            foody = food.Location_y;
        }

画食物

代码语言:javascript
复制
public void DrawFood()
        { 
   

            Graphics f = this.CreateGraphics();
            SolidBrush mybrush = new SolidBrush(Color.Red);
            f.FillRectangle(mybrush, foodx, foody, 10, 10);

        }

吃掉食物

代码语言:javascript
复制
 public void EatFood()
        { 
   
            if (Snake.realsnake[Snake.realsnake.Count - 1].Location_x == foodx
                && Snake.realsnake[Snake.realsnake.Count - 1].Location_y == foody)
            { 
   
                newfood();
                Snake.EatLong();
                score += 1;
            }
        }

生存还是毁灭

代码语言:javascript
复制
public void TobeOrNotTobe()
        { 
   
            int x = Snake.realsnake[Snake.realsnake.Count - 1].Location_x;
            int y = Snake.realsnake[Snake.realsnake.Count - 1].Location_y;
            if (!(x <= 500 && x >= 0 && y <= 500 && y >= 0))
            { 
   
                GameOver();
                timer2.Enabled = false;
            }
        }

游戏结束

代码语言:javascript
复制
public void GameOver()
        { 
   
            label3.Visible = true;
            label4.Visible = true;
            label5.Text = score.ToString();
            label5.Visible = true;
            button1.Text = "重新开始";
            button1.Visible = true;
        }

button点击事件链

代码语言:javascript
复制
        private void button1_Click(object sender, EventArgs e)
        { 
   

            Snake.Snakestart();
            newfood();
            score = 0;
            timer1.Enabled = true;
            timer2.Enabled = true;
            button1.Visible = false;
            label3.Visible = false;
            label4.Visible = false;
            label5.Visible = false;
        }

其他静态变量

代码语言:javascript
复制
        static int score;
        static int foodx, foody;

游戏主体类

点击开始游戏,开始游玩。

代码语言:javascript
复制
using System.Collections.Generic;

namespace 贪吃蛇form
{ 
   
    public class Snake
    { 
   
        public int Location_x;//0为x,1为y
        public int Location_y;
        public static int width = 10, height = 10;
        public static List<Snake> realsnake = new List<Snake>();

        //当前方向
        public static int wasd;




        public Snake()
        { 
   
            Location_x = 250;
            Location_y = 250;

        }
        public static void Snakestart()
        { 
   
            wasd = 4;

            realsnake.Clear();
            Snake s0 = new Snake();
            Snake s1 = new Snake();
            Snake s2 = new Snake();
            Snake s3 = new Snake();
            realsnake.Add(s0);

            s1.Location_x = s0.Location_x - 10;
            realsnake.Add(s1);
            s2.Location_x = s1.Location_x - 10;
            realsnake.Add(s2);
            s3.Location_x = s2.Location_x - 10;
            realsnake.Add(s3);
            //添加四个长度,横向添加list 初始化小蛇蛇完成
        }

        public static void SnakeMove(int x)//8426
        { 
   
            int i = realsnake.Count - 1;

            if (x == 8)
            { 
   
                //对list蛇身进行处理
                Snakelist();
                realsnake[i].Location_y -= 10;
            }
            else if (x == 4)
            { 
   
                Snakelist();
                realsnake[i].Location_x -= 10;
            }
            else if (x == 2)
            { 
   
                Snakelist();
                realsnake[i].Location_y += 10;
            }
            else if (x == 6)
            { 
   
                Snakelist();
                realsnake[i].Location_x += 10;

            }
        }

        public static void Snakelist()
        { 
   
            int j = 0;
            int x, y;
            int i = realsnake.Count - 1;
            for (j = 0; j < i; j++)
            { 
   
                x = realsnake[j + 1].Location_x;
                y = realsnake[j + 1].Location_y;
                realsnake[j].Location_y = y;
                realsnake[j].Location_x = x;
            }
        }
        public static void EatLong()
        { 
   
            Snake S_eat = new Snake();
            int xx = realsnake[realsnake.Count - 1].Location_x;
            int yy = realsnake[realsnake.Count - 1].Location_y;
            if (wasd == 8)
            { 
   
                S_eat.Location_y = yy - 10;
                S_eat.Location_x = xx;
                realsnake.Add(S_eat);
            }
            else if (wasd == 4)
            { 
   
                S_eat.Location_x = xx - 10;
                S_eat.Location_y = yy;
                realsnake.Add(S_eat);
            }
            else if (wasd == 2)
            { 
   
                S_eat.Location_y = yy + 10;
                S_eat.Location_x = xx;
                realsnake.Add(S_eat);
            }
            else if (wasd == 6)
            { 
   
                S_eat.Location_y = yy;
                S_eat.Location_x = xx + 10;
                realsnake.Add(S_eat);
            }
        }
    }
}

食物

代码语言:javascript
复制
using System;

namespace 贪吃蛇form
{ 
   
    public class Food
    { 
   
        public int Location_x;
        public int Location_y;
        public Food()
        { 
   
            Random x = new Random();
            Random y = new Random();
            Location_x = x.Next(0, 49) * 10;
            Location_y = y.Next(0, 49) * 10;
        }
    }
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143842.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#贪吃蛇游戏
  • Form方法
    • 100毫秒刷新
      • 秒刷新(蛇的移动速度由此决定)
        • 画蛇
          • 创建食物
            • 画食物
              • 吃掉食物
                • 生存还是毁灭
                  • 游戏结束
                    • button点击事件链
                      • 其他静态变量
                  • 游戏主体类
                      • 食物
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档