当前位置: 首页 > java >正文

Labview邪修01:贪吃蛇

从博主很小的时候就在掌机上玩过这个贪吃蛇的小游戏,突然有一天心血来潮的想Labview是不是也可以编这个小游戏,回忆一下童年!然后就又了下面的这个程序,执行结果如下图所示。

基本功能:

1)点击开始按钮,可以随机生成长度为3的蛇和食物;

2)可以调整蛇的移动速度,低速、中速、高速;

3)键盘上的方向按钮可以控制蛇的运动方向;

4)游戏结束的条件:蛇头撞到边界或自己身体;

运行环境:

Labview 2020(32位)

1.1 界面设计

1.1.1 显示控件

下图是界面中露出的控件:

1)游戏界面,添加了颜色盒的二维数组

经典颜色盒,右击->经典->经典数值->经典颜色盒;

然后将颜色盒拖拽到数组中,形成游戏界面。

2)添加速度控制控件

枚举,右击->银色->下拉列表与枚举->枚举;

然后编辑,慢速、中速、快速。

3)添加按钮

添加两个按钮,开始、结束。

1.1.2 局部变量

界面中没有露出的控件:

蛇坐标,U32类型的二维数组,用于存储蛇的坐标;

3个颜色盒,分别用于设置游戏背景、Food颜色、蛇颜色;

方向控件,枚举控件,上、下、左、右四个内容,用于显示蛇的运动方向;

Food位置,U32类型的一维数组,用于存储Food位置;

Start?布尔显示控件,用于显示是否开始,若开始对蛇的位置实时显示、判断;

1.2 程序编写

程序的流程图如下所示:

1.2.1 项目结构

Main.vi,是整个程序的入口vi;

Start.vi,点击开始按钮执行的vi,是用来初始化蛇的位置和食物的位置;

SnakePos.vi,用于计算蛇的位置;

Loop.vi,用于执行超时事件中的内容;

Crash.vi,用于判断蛇是否撞击边框或自己,游戏结束;

FormCtrl.ctl,界面控件的引用组成的自定义控件;

1.2.2 开始事件

1)开始事件中的内容

主要是调用Start.vi。

2)Start.vi中的内容

自动生成蛇的位置和食物的位置,并且根据位置修改游戏界面中对应位置的颜色。

1.2.3 结束事件

点击结束按钮,即结束游戏并且弹出等分情况。

1.2.4 键按下事件

读取键盘上的方向按键状态,按下后修改蛇的运动方向。

1.2.5 超时

1)超时事件

如果Start?是true,就调用Loop.vi

2)Loop.vi中内容

3)SnakePos.vi中内容

根据方向计算蛇下一步的坐标。

4)Crash.vi中内容

根据蛇的位置判断是不是碰撞,如果碰撞,输出等分情况,并且停止游戏。

1.2.6 关闭前面板

1.3 运行

先选择速度,点击开始按钮,就会随机出现蛇和食物。然后按键盘上的上下左右按键,可以控制蛇方向,蛇与食物 相碰就会吃掉食物,相应的蛇会变长,如果蛇碰撞到边框或者自己的身体就会结束游戏,并且弹出等分。

源码下载链接->https://download.csdn.net/download/weixin_38637405/91802779

http://www.xdnf.cn/news/19130.html

相关文章:

  • 数据结构:归并排序 (Iterative Merge Sort)
  • 非支配排序遗传算法进化多目标优化算法
  • 【混合开发】Android+webview模拟crash崩溃补充说明
  • 【LeetCode每日一题】141. 环形链表 142.环形链表 II
  • Rspack
  • Kafka入门指南:从安装到集群部署
  • Mock 在 API 研发中的痛点、价值与进化及Apipost解决方案最佳实践
  • 【Docker/Redis】服务端高并发分布式结构演进之路
  • RS485、RS232、RS422协议
  • 若依微服务一键部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑与修复全记录)
  • 云手机的安全性如何?
  • LeetCode Hot 100 第8天
  • 群组分析 (Cohort Analysis)——哪批用户最优质?
  • 【Spring底层分析】Spring AOP补充以及@Transactional注解的底层原理分析
  • 12大主流本地文档管理系统功能与价格对比分析
  • 如何设置阿里云轻量应用服务器镜像?
  • v-model与v-bind区别
  • LG P5386 [Cnoi2019] 数字游戏 Solution
  • CesiumJS 介绍以及基础使用
  • 【完整源码+数据集+部署教程】硬币分类与识别系统源码和数据集:改进yolo11-SWC
  • GoogLeNet:深度学习中的“卷积网络变形金刚“
  • 从“安全诉讼”说起:奖励模型(Reward Model)是LLM对齐的总阀门(全视角分析)
  • 如何在实际应用中选择Blaze或Apache Gluten?
  • 【拍摄学习记录】06-构图、取景
  • 表复制某些字段的操作sql
  • LeetCode - 283. 移动零
  • 【lua】Lua 入门教程:从环境搭建到基础编程
  • 【面试场景题】dubbo可以使用自定义的序列化协议吗
  • 【ACP】2025-最新-疑难题解析-11
  • 虚拟内存和虚拟页面