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

C#贪吃蛇游戏(全代码)C#贪吃蛇游戏Form方法100毫秒刷新秒刷新(蛇的移动速度由此决定)画蛇创建食物画食物吃掉食物生存还是毁灭游戏结束button点击事件链其他静态变量游戏主体类蛇食物这是本人第一篇博客,感谢收看,之后对游戏做出的修改,将以方法代码块放在最后Form方法100毫秒刷新privatevoidtimer1_Tick(objectsender,EventArgse){…

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

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


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

Form方法

100毫秒刷新

private void timer1_Tick(object sender, EventArgs e)
        { 
   
            DrawSnake();
            DrawFood();
        }

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

        private void timer2_Tick(object sender, EventArgs e)
        { 
   
            Snake.SnakeMove(Snake.wasd);
            EatFood();
            TobeOrNotTobe();
            label2.Text = score.ToString();
        }

画蛇

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);
        }

创建食物

public void newfood()
        { 
   
            Food food = new Food();
            foodx = food.Location_x;
            foody = food.Location_y;
        }

画食物

public void DrawFood()
        { 
   

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

        }

吃掉食物

 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;
            }
        }

生存还是毁灭

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;
            }
        }

游戏结束

public void GameOver()
        { 
   
            label3.Visible = true;
            label4.Visible = true;
            label5.Text = score.ToString();
            label5.Visible = true;
            button1.Text = "重新开始";
            button1.Visible = true;
        }

button点击事件链

        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;
        }

其他静态变量

        static int score;
        static int foodx, foody;

游戏主体类

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

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);
            }
        }
    }
}

食物

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;
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 压缩文件的加密与破解

    压缩文件的加密与破解压缩文件的加密与破解0x00前言0x01过程1.压缩文件的加密注意点:2.压缩文件的解密0x00前言这是我对压缩文件的加密与破解的学习记录。0x01过程1.压缩文件的加密安装Winzip、Winrar软件进行加密在建好的文档右键—-&gt;添加到压缩文件—-&gt;选择rar/zip—-&gt;高级—-&gt;设置密码注意点:1.尽量不要使用Winra…

  • Python 资源大全中文版[通俗易懂]

    Python 资源大全中文版[通俗易懂]Python资源大全中文版requests官方文档:http://cn.python-requests.org/zh_CN/latest/BeautifulSoup官方文档:https:/

  • 直通线和交叉线[通俗易懂]

    直通线和交叉线[通俗易懂]感觉这个问题已经成为历史了。直通线:两端均使用568A或者568B的线序,用于不同类的网络设备互联,如电脑和交换机,交换机和路由器等交叉线:一端使用568A先序,一端568B线序,用于同类设备的连接,如交换机与交换机,电脑和电脑等不过现在的网络设备都支持自动适配接口类型功能,所以不管是直通线还是交叉线,都可以正常使用。568A和568B标准: 568A标准:白绿,绿,白橙,蓝,白…

  • DBeaver – 一款免费开源的通用数据库工具

    DBeaver – 一款免费开源的通用数据库工具DBeaver是一款免费开源的通用数据库管理和开发工具。DBeaver基于Java开发,可以运行在各种操作系统上。通过JDBC连接到数据库,它可以支持几乎所有的数据库产品。还等什么,下载使用吧!

  • Python Web 框架工具包 werkzeug「建议收藏」

    Python Web 框架工具包 werkzeug「建议收藏」一、什么是werkzeugwerkzeug官方的介绍说是一个WSGI工具包,不是一个web服务器,也不是一个web框架,它可以作为一个Web框架的底层库,因为它封装好了很多Web框架的东西,例如Request,Response等等;例如我最常用的Flask框架就是一Werkzeug为基础开发的。Werkzeug教程基础中文文档二、Werkzeug实现密码校…

  • pycharm远程部署_pycharm部署服务器

    pycharm远程部署_pycharm部署服务器pycharm连接远程服务器1.pycharm中打开tools->deployment->configuration…2.填写下图信息3.填写mappings信息4.add一个远程python解释器经过以上步骤,远程解释器就配置好了使用1.上传文件到服务器一般解释器配置好后,本地项目会自动上传到服务器上,当上传完成就可以通过使用服务器环境在本地运行程序了…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号