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)
blank

相关推荐

  • 大数据人工智能的未来_未来人工智能发展前景

    大数据人工智能的未来_未来人工智能发展前景在百度大数据开放大会上,搞计算机学术理论的怀进鹏校长的演讲犹如给所有听众的一记闷棍,怀校长的学术演讲把大家弄得云里雾里,把所有人弄晕了,现场能够听懂的绝对是少数,可能都会觉得怀校长有点像个外星人一般在那自顾自的演讲。作为一个曾经有志从事人工智能研究但失之交臂的又是学计算机毕业的人却越听越兴奋,冥冥中似乎找到了未来的人工智能所能抵达的可能性,那么笔者现在就尝试把怀教授的演讲转换为大家也能够听懂的语言…

  • php jquery教程下载,jquery 怎么下载

    php jquery教程下载,jquery 怎么下载下载jquery的方法:首先使用百度搜索“jQuery”;然后点击进入jQuery网站;最后找到适合开发的版本后进行下载即可。本教程操作环境:windows7系统、jquery3.2.1版,该方法适用于所有品牌电脑。下载jquery的方法:首先,打开您的浏览器,无论是什么浏览器都可以,只要可以连接上网络就行。使用百度搜索“jQuery”.您可以选择下图所示量项中的一项,并点击进入jQuery网站。…

  • Spring基础学习-任务调度TaskScheduler

    Spring基础学习-任务调度TaskScheduler某些时候我们可能需要在某些固定的时间或者是间隔一定的时间连续执行一些任务,如每天凌晨自动跑一些批次/心跳检测等。Spring通过使用TaskScheduler来完成这些功能。本文目录:1Trigger1.1CronTrigger1.2PeriodicTrigger2TaskScheduler接口简介2.1接口简介2.2TaskScheduler的实现类2.2…

    2022年10月11日
  • activate-power-mode安装与设置(去掉activate-power-mode右上角图标)[通俗易懂]

    activate-power-mode安装与设置(去掉activate-power-mode右上角图标)[通俗易懂]一.安装点击进入点击安装重启后插件即可生效二.设置刚开始相信我们用的很不爽,每次到达到多少个单词后才会有效果触发,还有如下图这个烦人的图标,现在我们怎么把它去掉呢只需要照我的设置,Window–>activate-power-mode–>去掉combo/shake,其他三个全勾上,现在用起来就很爽了,赶紧体验吧

  • CentOS7增加或修改SSH端口号

    CentOS7增加或修改SSH端口号

    2021年10月18日
  • 计算机网络知识点汇总(谢希仁 第七版)「建议收藏」

    计算机网络知识点汇总(谢希仁 第七版)「建议收藏」写在前面这篇博客是当时在大二的时候为了学习计网总结的一篇学习笔记,其实当时的做法和抄书差不多,但是时隔两年的时间没想到有这么多的同学会来关注学习,实在受宠若惊;现在我已经大四,而且刚刚经历过秋招(2019/12),并且签约了一家薪资待遇不错的Java开发岗,所以在闲下来的时候准备将这篇博客重新整理一下,主要为了几方面:一·将之前没有整理到的内容补充详细;二·为重难点的部分加上详…

发表回复

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

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