之前写了一个贪吃蛇,代码实在太乱了,上一个是用polyline做的,这次这个是用一个个的elipse来渲染蛇的身体,其中一个圆点,就是一个elipse了。蛇的移动是通过定时器来实现的,方向键 A D控制蛇的方向。这个方向用的向量来做的。前端界面用的canvas。
 
实现这两个主要的功能需要这么些类:食物类 Food ,主要成员:
public Point PtPos; //canwas上的坐标
public int Width, Height;
Rect Rec =default;//用于判断小蛇和事物相交
蛇身段:SnakeBody,主要成员:
public int w;
public Point pt;
小蛇:
向量类:V2d
我认为最不好做的部分,就是小蛇移动部分,其思路 是 蛇头+头向量得到新的头,然后再把其余几点的坐标向前挪动一位。如果移动过程中,有按方向键,就需要把这个向量 旋转一定的角度。再像刚才那样算新的蛇头。
做这个的体会是,前端主要是负责渲染,比如把点集合渲再界面的蓝色小圆形,其实我们做这种c/s端程序,是应该把数据和渲染分开的。模型 视图模型 视图 三者 靠中间的视图模型解耦,模型直接与业务层联系起来,业务层也只应该操作模型,不操作视图模型和视图里的元素,不会和视图(前端UI界面)耦合, 这样做的好处,我认为是,可以一套业务逻辑,再不同的ui界面展示。比如把wpf换成winform,我们的业务可以几乎不变,只需要改变视图模型,以及换成winfrom的ui操作。就如同 现在的前后端分离,业务不和前端网页耦合,我认为大概就是也就是业务后端不会操作前端页面的任何元素标签。前端也只需要拿到需要渲染的数据就行。C#的Mvc这个也并没有做到完全的前后端分离,但是却至少大大减少了前端和后端的耦合了。
 
 
 
前端代码:
 
工程下载:

重做贪吃蛇 万向移动型 蛇的移动和吃食部分C# wpf版的更多相关文章

  1. c语言贪吃蛇详解3.让蛇动起来

    c语言贪吃蛇详解3.让蛇动起来 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 上次 ...

  2. 原生JS实战:经典贪吃蛇(开局10倍速度,来看看你最高能得多少分!)

    本文是苏福的原创文章,转载请注明出处:苏福CNblog:http://www.cnblogs.com/susufufu/p/5875523.html 该程序是本人的个人作品,写的不好,未经本人允许,请 ...

  3. 多线程的Python 教程--“贪吃蛇”

    本指南的里代码可以在这里下载:  threadworms.py ,或者从  GitHub.代码需要  Python 3 或 Python 2 ,同时也需要安装  Pygame . 点击查看大版本图片 ...

  4. C#简单实现贪吃蛇程序(LinQ + Entity)

    做梦想起来的C#简单实现贪吃蛇程序(LinQ + Entity) 最近一直在忙着单位核心开发组件的版本更新,前天加了一个通宵,昨天晚上却睡不着,脑子里面突然不知怎的一直在想贪吃蛇的实现方法.以往也有类 ...

  5. Python:游戏:贪吃蛇原理及代码实现

    一.游戏介绍 贪吃蛇是个非常简单的游戏,适合练手.先来看一下我的游戏截图: 玩法介绍:回车键:开始游戏空格键:暂停 / 继续↑↓←→方向键 或 WSAD 键:控制移动方向. 食物分红.绿.蓝三种,分别 ...

  6. Python制作AI贪吃蛇

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都 ...

  7. 使用Love2D引擎开发贪吃蛇游戏

    今天来介绍博主近期捣腾的一个小游戏[贪吃蛇],贪吃蛇这个游戏相信大家都不会感到陌生吧.今天博主将通过Love2D这款游戏引擎来为大家实现一个简单的贪吃蛇游戏,在本篇文章其中我们将会涉及到贪吃蛇的基本算 ...

  8. 手把手教学h5小游戏 - 贪吃蛇

    简单的小游戏制作,代码量只有两三百行.游戏可自行扩展延申. 源码已发布至github,喜欢的点个小星星,源码入口:game-snake 游戏已发布,游戏入口:http://snake.game.yan ...

  9. JS高级---面向对象的编程思想(贪吃蛇梳理)

    面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...

  10. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

随机推荐

  1. C#开发的绑定类型默认应用例子 - 开源研究系列文章

    这次在用C#编写一个看图软件小工具,然后其它的基本完成了,就是绑定看图软件到那些个图片扩展名的时候碰到了问题,就是如何将看图软件绑定图片文件的默认应用,以及解绑默认应用.这个涉及到注册表操作,但是找度 ...

  2. 【FAQ】集成分析服务的常见问题及解决方案

    常见问题一:如何验证Analytics是否上报/接入成功?以及关键日志含义是什么? 在初始化Analytics SDK前添加SDK日志开关如下: HiAnalyticsTools.enableLog ...

  3. openGauss数据库源码解析——慢SQL检测

    openGauss 数据库源码解析--慢 SQL 检测 慢 SQL 检测的定义: 基于历史 SQL 语句信息进行模型训练,并用训练好的模型进行 SQL 语句的预测,利用预测结果判断该 SQL 语句是否 ...

  4. Prometheus AlertManager 生产实践-直接根据 to_email label 发 alert 到对应邮箱

    概述 通过之前的文章 - Prometheus Alertmanager 生产配置趟过的坑总结, 我们已经知道 AlertManager 作为告警平台,是非常强大的,可以去重 (deduplicati ...

  5. Linux之parted

    [摘要] parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区,并且允许调整分区的大小. 使用它你可以创建.清除.调整.移动和复制ext2.ext ...

  6. WAF 原理入门

    WAF 入门 WAF 功能 WAF 全称叫 Web Application Firewall,和传统防火墙的区别是,它是工作在应用层的防火墙,主要对 web 请求/响应进行防护.那么 WAF 有什么功 ...

  7. 重新点亮linux 命令树————rpm软件包管理[十一七]

    前言 简单介绍一下软件管理 正文 软件包管理器 rpm 包和rpm 命令 yum 仓库 源代码编译安装 内核升级 grub配置文件 软件包管理器: 包管理器是为了方便软件安装.卸载,解决软件依赖关系的 ...

  8. web开发可不可以是这样的?

    service不外乎就是数据校验,调用其它service,调用第三方api,读写数据库,既然这样,那我认为Service也可以做成可配置化的样子,配置项大致有 所需参数配置:参数列表,参数类型,参数长 ...

  9. 微信小程序三种授权登录的方式

    经过一段时间对微信小程序的研发后 总结出以下三种授权登录的方式,我给他们命名为'一次性授权''永久授权''不授权' 1.一次性授权常规写法,需要获取用户公开信息(头像,昵称等)时,判断调取授权登录接口 ...

  10. 轻松处理高于平常10倍的视频需求,还能节省60%的IT成本,蓝墨做对了什么?

    近年来,Serverless 一直在高速发展,并呈现出越来越大的影响力.主流的云服务商也在不断地丰富云产品体系,提供更好的开发工具,更高效的应用交付流水线,更好的可观测性,更细腻的产品间集成,但一切才 ...