LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

这篇具有很好参考价值的文章主要介绍了LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       LabVIEW在工业控制及仪器测量领域中用的会比较多,那么就经常会涉及到数据采集、分析和处理的问题,为了提高效率,往往会在数据采集的同时就进行数据分析和处理,这时就需要用多线程来处理,多线程的概念如果有不了解的,可以参考这位博主的讲解多线程(Thread、线程创建、线程池) - 作巴 - 博客园

       那么LabVIEW是支持多线程编程的,但是很多人在编程的时候喜欢使用局部变量和全局变量的方式来执行程序,这样的坏处就是可能会产生竞争冒险的问题,也就是说有可能出现在读取某一个变量的数据的时候正好发生了对该变量写入的操作,那读出来的数据就不确定是不是自己想要的数据了,当然在软件编程中我们可能会使用Lock的机制来避免这一问题,这里可以参考这位博主讲解C#中Lock的使用C#之lock_故里2130的博客-CSDN博客_c# lock,但是我想说的是,在LabVIEW中为了解决竞争冒险的问题以及能及时相应前面板操作的问题,生产者消费者结构不失为一种性价比很高的结构。

        生产者结构负责记录事件到队列中,而消费者负责从队列中将事件一个个取出并执行该事件,队列遵循先入先出的规则,整个过程可以有条不紊地进行。下面就以我自己编程做的这个Simon小游戏来做示例演示该结构的用法。

       下面是这个小游戏的文件夹中的文件,Control包括自己做的大量的自定义控件,file中存放游戏中保存的数据,Picture和music都是游戏中用到的素材,SubVI是游戏中调用的一些子VI,.lvpoj是工程文件,Main.vi是程序的入口。

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

       下面是游戏的主界面,游戏开始时界面动画会播放,左右的四个图标分别是排行榜、名片、联系我们和更多消息,点开分别有各种信息,界面中间填写用户名密码并选择游戏难度即可点击开始游戏,开始游戏后进入游戏界面,点击退出游戏退出主界面并关闭游戏。

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

       然后是游戏程序面板,上面一个while循环是生产者循环,主要用于记录操作者的操作事件,事件消息记录在队列中,下面这个循环是消费者循环,主要用于消息事件的处理。

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

 处理过程如下图所示

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

Simon游戏曾经一度风靡西方数十年,游戏规则如下图所示

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

       这部分消息是游戏处理过程,第一部分是AI操作,在我设计这款游戏中四个小羊分别会按顺序行走到自己的食物上并返回;第二部分是玩家操作,玩家需要按照AI执行的顺序点击小羊,小羊走到自己的食物上并返回,每点对一次小羊加一分。

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

       关于生产者消费者这个结构在使用的过程中还是会出现很多bug的,程序我放在下边供大家参考使用,使用过程中如果碰到什么问题,欢迎大家私信我一起交流学习!

链接:https://pan.baidu.com/s/1FD4JE42akpyF9G1pHGX79g 
提取码:53n9     复制这段内容打开「百度网盘APP 即可获取」文章来源地址https://www.toymoban.com/news/detail-490020.html

到了这里,关于LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Rust 基础篇】Rust 通道实现单个消费者多个生产者模式

    在 Rust 中,我们可以使用通道(Channel)来实现单个消费者多个生产者模式,简称为 MPMC。MPMC 是一种常见的并发模式,适用于多个线程同时向一个通道发送数据,而另一个线程从通道中消费数据的场景。本篇博客将详细介绍 Rust 中单个消费者多个生产者模式的实现方法,包含

    2024年02月16日
    浏览(37)
  • Kafka 之生产者与消费者基础知识:基本配置、拦截器、序列化、分区器

    kafaf集群地址列表:理论上写一个节点地址,就相当于绑定了整个kafka集群了,但是建议多写几个,如果只写一个,万一宕机就麻烦了 kafka消息的key和value要指定序列化方法 kafka对应的生产者id 使用java代码表示则为以下代码:  可使用 retries 参数 进行设置,同时要注意记住两

    2024年02月05日
    浏览(53)
  • 【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务...

    前言: 大概一年多前写过一个部署ELK系列的博客文章,前不久刚好在部署一个ELK的解决方案,我顺便就把一些基础的部分拎出来,再整合成一期文章。大概内容包括:搭建ELK集群,以及写一个简单的MQ服务。 如果需要看一年多之前写的文章,可以详见下列文章链接(例如部署

    2023年04月08日
    浏览(44)
  • 生产者-消费者模型

    目录 1、生产者-消费者模型是什么 2、Java中的实现 3、应用于消息队列 3.1 引入依赖 3.2 rabbitmq网站新建队列queue 3.3 模块中配置application.yml 3.4 生产者实现类 3.5 单元测试,发送msg到rabbitmq的队列(my_simple_queue) 3.6 消费者实现类 3.7 从rabbitmq队列(my_simple_queue)消费数据 3.8 队列的配

    2024年02月06日
    浏览(39)
  • Python多线程Thread——生产者消费者模型 python队列与多线程——生产者消费者模型

    下面面向对象的角度看线程 那么你可以试试看能不能用面向对象的方法实现生产者消费者模型吧。

    2024年02月09日
    浏览(52)
  • 生产者与消费者问题

            本篇文章我们使用C++探讨一下生产者与消费者问题.          我们学习了操作系统, 知道了进程和线程的概念, 但是如果不进行代码实战的话, 会很难理解它们. 特别是编程的初学者(比如我), 在了解了进程和线程后通常会感到疑惑: 多线程怎么用? 为啥我平时写代码

    2024年02月12日
    浏览(43)
  • 线程同步--生产者消费者模型

    条件变量是 线程间共享的全局变量 ,线程间可以通过条件变量进行同步控制 条件变量的使用必须依赖于互斥锁以确保线程安全,线程申请了互斥锁后,可以调用特定函数 进入条件变量等待队列(同时释放互斥锁) ,其他线程则可以通过条件变量在特定的条件下唤醒该线程( 唤醒后线

    2024年01月19日
    浏览(39)
  • Linux——生产者消费者模型

    目录 一.为何要使用生产者消费者模型  二.生产者消费者模型优点  三.基于BlockingQueue的生产者消费者模型 1.BlockingQueue——阻塞队列 2.实现代码  四.POSIX信号量 五.基于环形队列的生产消费模型 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者

    2024年02月08日
    浏览(43)
  • 多线程之生产者消费者

    目的是回顾多线程的几个api 多生产者+多消费者+共享池

    2024年02月07日
    浏览(47)
  • rabbitmq消费者与生产者

    在第一次学习rabbitmq的时候,遇到了许多不懂得 第一步导包 第二步新增生产者 在这里中: connectionFactory.setVirtualHost(\\\"my_vhost\\\");//填写自己的队列名称,如果你的为”/“则填写\\\'\\\'/\\\'\\\' 第三步新增消费者 消息获取成功 注意如果你用的云服务器需要打开这两个端口 5672 15672 如果你使

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包