基于LabVIEW的拼图游戏设计

基于LabVIEW的拼图游戏设计
基于LabVIEW的拼图游戏设计

摘要

关键字

目录

1、绪论

1.1 G语言与虚拟仪器的概述

1.1.1 G语言的概述

虚拟仪器编程语言LabVIEW是一种图形化的程序语言,又称为“G”语言。LabVIEW 是一个功能比较完善的软件开发环境,它是为替代常规的BASIC或C语言而设计的。作为编写应用程序的语言,除了编程方式不同之外,LabVIEW具有编程语言的所有特性。使用这种语言编程时,基本不用写代码,取而代之的是流程图。

G语言是一种适合于任何编程任务,具有扩展函数库的通用编程语言。G语言和传统高级编程语言的最大的差别在于编程方式上的不同,一般高级语言采用的方法为本编程,而G 语言采用图形化编程方式。G语言编写的程序称之为虚拟仪器VI(Virtual Instrument),因为它的界面和功能与真实仪器基本相似,在LabVIEW环境平台下开发的应用程序都会被冠以.VI的后缀,以表示虚拟仪器的含义。G语言定义了数据类型、结构类型和模块调用语法规则等编程语言的基本要素等,在功能的完整性和应用的灵活性上毫不不逊于任何高级语言,G语言同时还具有丰富的扩展函数库。这些扩展函数库主要面向数据采集、GPIB以及串行仪器控制、数据分析、数据显示与数据存储等途径。G语言还包括常用的程序调试工具,例如包括断步调试、允许设置断点、数据探针和动态显示执行程序流程等功能[1]。

1.1.2 虚拟仪器的概述

虚拟仪器(Virtual Instrument)就是在以计算机为核心的硬件平台上,根据用户对仪器的设计定义,具有虚拟面板、用软件实现虚拟控制面板设计和测试功能的一种计算机仪器系统。使用者用鼠标点击虚拟面板,就可以操作这台计算机系统硬件平台。它是将现有的计算机技术、软件设计技术和高性能模块化硬件结合在一起而建立起来的功能强大而又灵活易变的仪器。

虚拟技术、计算机技术与网络技术是信息技术最重要的组成部分,它们被称为21世纪科学技术中的三大核心技术。电子测量仪器发展至今,大体经历了模拟仪器、分立元件式仪器、数字化仪器和智能仪器。目前,微电子技术和计算机技术的飞速发展,测试技术与计算机层次的结合使得虚拟仪器应运而生。虚拟仪器的出现导致了传统仪器的结构、概念和设计观点都发生了巨大变革,使得人类的测试技术进入了一个新的发展纪元。在过去的20年中,个人电脑应用的迅速普及促进了测试测量和自动化仪器系统的革新,其中最显著的就是虚拟仪器的出现与发展。虚拟仪器为工程师和科学家们提高生产效率、测量精度以及系统性能方面做出了卓越的贡献。

虚拟仪器的概念是由美国国家仪器公司提出来的,虚拟仪器本质是虚拟现实一个方面的应用结果。也就是说虚拟仪器是一种功能意义上的仪器,它充分利用计算机系统强大的数据处理能力,在基本硬件的支持下,利用软件完成数据的采集、控制、数据分析和处理

扩展和升级。(2-1)

虚拟仪器的主要特点有:

1、在通用硬件平台确定后,又软件取代传统仪器中的硬件来完成仪器的功能;

2、仪器的功能是用户根据需要又软件来定义的,而不是事先由厂家定义好的;

3、仪器性能的改进和功能扩展只需进行相关软件的设计更新,而不需要购买新的仪器;

4、研究周期较传统仪器大为改进;

5、虚拟仪器开放、灵活,可与计算机同步发展,可与网络以及其他周边设备互联。(3-2)

虚拟仪器实际上是一种按照仪器需求组织的数据采集系统,其研究中涉及的基础理论主要是数据采集和数字信号处理。(7-1)决定虚拟仪器具有上述传统仪器不可能具备的特点的根本原因在于:“虚拟仪器的关键是软件”。

1.1.3 虚拟仪器的构成以及分类

1、虚拟仪器的构成

虚拟仪器是由通用仪器硬件平台(简称硬件平台)和应用软件两大部分组成。

(1)硬件是虚拟仪器工作的基础,主要完成被测输入信息的采集、放大、传输、存储处理和输入/输出等工作,由计算机硬件平台和测控功能硬件(I/O接口设备)组成(4-2)。

1)计算机,它是硬件平台的核心。

2)I/O接口设备,它主要完成待测输入信号的采集、放大和模/数转换等。

根据I/O接口设备的不同,虚拟仪器主要分为PC-DAQ、GPIB仪器、串口仪器、VXI 模块、PXI模块五个模块。其虚拟仪器构成图如图1-1所示。

PC-DAQ:它是以数据采集板、信号调理电路及计算机为硬件平台组成的插卡式虚拟仪器系统。这种系统采用PCI或ISA计算机本身的总线,只需要将数据采集卡\板(DAQ)插入计算机机箱内的空槽中即可使用。

串口仪器:它是以Serial 标准总线仪器与激素那几硬件平台组成的仪器测试系统。

VXI模块:它是以VXI标准总线仪器模块与计算机为硬件平台组成的仪器测试系统。

PXI模块:它是以PXI标准总线仪器模块与计算机为硬件平台组成的仪器测试系统。

(2)虚拟仪器的应用软件由应用程序和I/O接口设备驱动程序。这些软件开发工具为用户设计虚拟仪器应用软件提供了良好开发环境。

1)应用程序。它包含两个方面的程序:实现虚拟面板功能的前面板软件程序和定义测试功能的流程图软件程序。

2)I/O接口仪器驱动程序。这类程序用来完成特定外部硬件设备的扩展、驱动与通信。开发虚拟仪器,必须有合适的软件工具。目前已有多种虚拟仪器的软件开发工具。包括文本式编程语言:如C、VisualC++、Visual Basic 、Labwindows/CVI等和图形化编程语言:如Labview 、HPVEE等。这些软件开发工具为用户设计虚拟仪器应用软件提供了最大限度的方便条件与良好的开发环境。(3-3)

2、虚拟仪器的分类

虚拟仪器有多种分类方法,既可以按照应用领域分,也可以按照测量功能分,但是最常用的还是按照构成虚拟仪器接口总线的不同,分为基于数据采集(DAQ)卡的虚拟仪器、基于GPIB总线的虚拟仪器、基于VXI总线的虚拟仪器、基于RS-232C总线的虚拟仪器、基于PXI总线的虚拟仪器、基于LXI总线的虚拟仪器、基于USB总线的虚拟仪器和基于IEEE-1394总线的虚拟仪器。

1.1.4 虚拟仪器的优点与应用

1、虚拟仪器的优点可归纳为:

(1)软件是核心。根据系统设计的要求,在选定系统控制用计算机以及一些标准的一起硬件模块或者板卡后,软件部分就成为构建和使用虚拟仪器的关键所在。其中,仪器驱动程序的功能是实现与仪器硬件的接口和通信,应用软件则完成用户定义的测试和仪器的功能,并提供人机交互界面。在进行应用程序开发时,可以利用NI公司开发的LABVIEW 与LABWINDOWS/CVI,HP公司的VEE等集成开发环境。可以看出,软件在虚拟仪器的技术中占有十分重要的作用,NI公司提出的“软件即仪器”(Software is Instrument)就是这一特点的形象概括、

(2)灵活性和可扩展性。虚拟仪器打破了传统仪器由厂商定义功能和控制面板,用户无法更改模式。一起用户可根据自己不断变化的需求,自由发挥自己的想象力,,方便灵活的重组测量系统,系统的扩展,升级可随时进行,而且系统的更新的周期短,见效快,能充分的满足用户在不同的场合的应用需求。

(3)性价比高。虚拟仪器可以将在传统一起中一些由硬件完成的功能转为软件实现,减少了自动测试系统的硬件环节,降低了系统的开发成本和维护成本。虚拟仪器能够同时对多个参数进行实时高效的测量,信号传输大部分采用数字信号的形式,数字信号处理主要依赖软件来实现,大大降低了环境干扰和系统误差的影响。用户可以随时根据需求调整虚拟仪器的功能实现“一机多型”和“一机多用”。因此,是用虚拟仪器比传统仪器更加经济。

(4)人机界面友好。虚拟仪器的操控界面采用的是图形化编程技术实现的一种虚拟面

据实际需求来进行定制设计。测量结果可以通过计算机屏幕以曲线,图形,数据或者表格等形式显示出来。

(5)与其他设备互联功能强大。虚拟仪器通常具备标准化的总线或者通信接口,具有和其他设备互联的功能。例如,虚拟仪器能够通过以太网与Internet相连,或者通过现场总线完成对现场设备的监控和管理等。这种互联能力使得虚拟设备系统功能显著增强,应用领域明显扩大。

虚拟仪器是对传统仪器概念的重大突破,虚拟仪器与传统仪器的最重要区别之一是:虚拟仪器的功能由用户自己定义,而传统仪器的功能完全由厂商事先定义好的。相关比较如表1-1所示。

仪器虚拟仪器传统仪器

关键技术关键是软件关键是硬件

费用卡法与维护的费用低开发与维护的费用高

技术更新周期短(1-2年)长(5-10年)

价格低,可重用与可配置性强高

功能定义用户定义仪器功能厂商定义仪器功能

开放性系统开放,灵活,可与计算机

技术保持同步发展

系统封闭,固定

连接性与网络及其他周边设备方便

互联的面向应用的仪器系统功能单一,互联的有限功能的独立设备

2、虚拟仪器的应用

虚拟仪器的出现代表着从传统硬件为主的测量系统到以软件为中心的测量系统的根本性转变。新的以软件为中心的虚拟仪器系统为用户提供了创新技术并大幅降低了生产成本。相比较于示波器等传统的仪器,虚拟仪器的灵活性、低价位以及插入化和网络化硬件等技术的革新,使得它的应用前景更加广阔。

虚拟仪器技术作为现代仪器技术与计算机技术相结合的创新技术,已被广泛应用于电子、机械、通信、汽车制造、生物、医药、化工、科研、军事和教育等各个领域。尤其在工程应用和社会经济效益方面具有突出优势。

1、应用于测试与测量,它已经成为测试与测量领域的工业标准。

2、应用于过程控制盒工业自动化,得益于其强大的硬件驱动、图形显示能力和便

捷的快速程序设计,使得它为过程控制和工业自动化应用提供了优秀的解决方案。

3、应用于实验室研究与自动化,它为科学家和工程师提供了功能强大的高级数学

分析库,可满足他们计算分析的需要。

1.1.5 虚拟仪器的发展和现状

1、虚拟仪器的发展

追溯电子测量仪器的发展历史,大体经历了以下的发展历程:

第一代模拟仪器。这类仪器在某些实验室里还能看到,他是以电磁感应基本定律为

第二代分立元件式仪器。当20世纪50年代出现电子管、60年代出现晶体管时,便产生了以电子管火晶体管电子电路为基础的第二代测试仪器——分立元件式仪器。

第三代数字化仪器:。20世纪70年代,随着集成电路的出现,诞生了已集成电路芯片为基础的第三代仪器——数字式仪器。这类仪器相当普及,如数字万用表、数字频率计等。

第四代智能仪器。随着微电子技术的发展和微处理器的普及,以微处理器为核心的第四代仪器——智能式仪表迅速普及。这类仪器内置微处理器,可以进行自动测试和数据处理功能,习惯上称为智能仪器。其缺点是他的功能都是以硬件的形式存在,无论是开发还是应用,都缺乏灵活性。

虚拟仪器。目前,电子测量仪器领域出现了一种全新的仪器——虚拟仪器。虚拟仪器与智能仪器有点类似,它是将仪器装入计算机,以通用的计算机硬件以及操作系统为依托,来实现各种仪器功能。采用虚拟仪器技术构建的测试仪器,具有开发效率高、可维护性强、测试精度高、稳定性和可靠性好等优点,因此具有较高的性能价格比,便于节省投资、设备更新和功能转换与扩充[1-3]。

2、虚拟仪器的现状

近年来,世界各国的虚拟仪器公司开发了不少虚拟仪器开发平台软件,以便使用者利用这些仪器公司提供的开发平台软件组建自己的虚拟仪器或测试系统,并编制测试软件。最早和最具影响的开发软件,是NI公司的Lab VIEW软件和LABWINDOWS/CVI开发软件。Lab VIEW采用图形化编程方案,是非常实用的开发软件。Lab Windows/CVI是为熟悉C语言的开发人员准备的、在Windows环境下的标准ANSIC开发环境。除了上述的优秀开发软件之外,美国HP公司的HP-VEE和HPTIG平台软件,美国TEKTRONS公司的Ez-Test和TEK-TNS软件,以及美国HEM Data公司的Snap-MARTER平台软件,也是国际上公认的优秀虚拟仪器开发平台软件

虚拟仪器的突出成就不仅是可以利用PC机组建成为灵活的虚拟仪器,更重要的是它可以通过各种不同的接口总线,组建不同规模的自测试系统。虚拟仪器系统的基本构架包括功能强大的软件、模块化的测量硬件及标准商业科技(如个人计算机和网际网络)。虚拟仪器技术包含了专为控制应用设计的软件及针对不同频率与精确度范围的通用测量硬件,因此,工程师可以在测试或控制应用中自行定义测量功能。

1.2 LabVIEW的简介

LabVIEW(laboratory virtual instrument engineering workbench) 是一种用图表代替文本创建应用程序的图形化编程语言,它是由美国NI公司推出的虚拟仪器开发平台,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。它广泛地被工业界、学术界和研究实验室所接受,被公认为是标准的数据采集和仪器控制软件。LabVIEW大大简化了虚拟仪器系统的开发过程,缩短了系统的开发和测试周期。它作为一种图形化编程语言,是真正面向科学家和工程师的编程语言,被誉为“科学家与工程师”的语言。

以LabVIEW为代表的图形化程序语言又称“G”语言。使用这种语言编程时,基本不需要编写程序代码,而是”绘制”程序流程图。LabVIEW尽可能利用工程技术人员所熟悉的术语、图标和概念,因而它是一种面向最终用户的开发工具,可以增强工程人员构建自己的科学和工程系统的能力,可为实现仪器编程和数据采集系统提供便捷途径。

LabVIEW为虚拟仪器者提供了一个便捷、轻松的设计环境,利用它,设计者可以像搭积木一样,轻松组建一个测量系统和构建自己的仪器面板,而无需进行任何繁琐的计算机代码的编写。

LabVIEW是虚拟仪器必不可少的一部分,因为它为用户提供了一个简单易用的程序开发环境,特别考虑了工程师和科学家的需要而专门设计。它主要有以下特点:1)、图形化编程软件,设计者无需写任何文本格式的代码,是真正的工程师的语言;

2)、提供了丰富的数据采集、分析及存储的函数库;

3)、即提供了传统的程序调试手段,如设置断点、单步运行,同时提供有独到的高度执行工具,使程序动画式运行,利于设计者观察程序运行的细节,使程序的调试和开发更为便捷。采用传统的调试手段与新颖的高亮显示,更有利于编程人员进行测试;

4)、32bit的编译器编译生成32bit的编译程序,保证数据采集、测试和测量方案的高速执行;

5)、囊括了DAQ、GPIB、PXI、RS-232/485在内的各种仪器通信总线标准的所有功能函数,使得了那些不懂总线标准的用户也能够驱动不同的总线标准接口设备与仪器;

6)、提供大量与外部代码或软件进行连接的机制,诸如DLLs(动态链接库)、DDE(共享库)、ActiveX等;

7)、强大的Internet功能,支持常用网络协议,方便网络、远程测控仪器的开发。3-4 正因为LabVIEW这些强大的优势,使得它广泛应用于工程处理的每一个阶段,从研发设计到测试,再到生产无处不见LabVIEW的应用。

1.3 关于本次设计

本次设计旨在利用LabVIEW开发工具,实现拼图游戏设计和仿真。要求最终实现模拟一个拼图游戏的过程,其一次正常游戏过程为:初始化游戏—>改变小图片位置—>评估小图片位置,当小图片处于正确的位置时输出提示语对话框。

2、拼图简介

2.1 拼图游戏的简介

拼图游戏是对一种益智类游戏的通称,是通过对乱序的小图片不断地位置变换来完成图片拼接的一种游戏。它是广受欢迎的一种智力游戏,它的变化多端,难度不一,让人百玩不厌。每一个拼图的单片都有确定的位置,放对了就慢慢丰富起来,放错了就无法完整。

2.2 labview实现拼图游戏的基本思路

本次设计是基于LabVIEW来对拼图游戏进行模拟仿真,利用LabVIEW中的常用编程控件,来完成对拼图游戏的基础功能的实现。然后通过等级差别来实现难度的跨越,最后利用调用子程序来实现游戏的完整,实现本次拼图游戏的设计。因此本程序能实现拼图游戏的基础功能,并且增加不同难度等级以丰富游戏。

2.3 labview实现拼图游戏的框架

本次基于LabVIEW的拼图游戏的设计的主要功能就是,在拼图游戏启动后,显示出游戏的主界面,如图所示,也就是我们拼图游戏最后要完成的效果界面。在界面框中,放置了将要实现的功能。

在主界面中,设置了初级、中级、高级三个拼图游戏的等级,除了这三个等级外还有

功能,并分别采用布尔按钮来操作。

初级。点击该按钮后,程序将立即显示初级游戏界面,该界面是由九副错乱的图片排列成的三乘三游戏界面,用户可以通过操作鼠标点击图片来不断移动图片,从而完成游戏。

中级。点击该按钮后,程序将立即显示初级游戏界面,该界面是由十六副错乱的图片排列成的四乘四游戏界面,用户可以通过操作鼠标点击图片来不断移动图片至空白图片处,从而完成游戏。

高级。点击该按钮后,程序将立即显示初级游戏界面,该界面是由二十五副错乱的图片排列成的五乘五戏界面,用户可以通过操作鼠标点击图片来不断移动图片,从而完成游戏。

帮助。点击该按钮后,程序将立即显示帮助界面,该界面是由图形控件组成,并配以对拼图游戏玩法的文字简介,操作者可以根据简介清楚掌握游戏玩法。点击退出跳转到游戏主界面。

最后,经过编程设计出初级、中级、高级和帮助四个程序VI,将它们利用子VI技术组合在一起,并对其界面排版进行设计。

2.4 拼图游戏的设计原理

本次拼图游戏设计主要是基于LabVIEW 2013虚拟平台,使用图形语言编程。设计原理是:拼图游戏主界面在初始化后,程序要对按下的按钮进行检测和分析,判断出按下的按钮;然后显示为相应功能的界面,等待操作者选择需要执行的动作,以此来实现在每个功能中不同的操作。

如选择初级,则游戏进入初级界面,在接受初始化信号之后,通过获取图片VI调用文件中的图片,再利用随机数组VI将九块小图片的位置打乱,区别于正确的位置。初始化之后通过不断地位置变化来寻找正确的位置,while循环语句完成的就是这一功能,每挪动一次位置之后,while循环语句确定该小图片是否在正确的位置上,直到所有九块图片都处于正确的位置时,进入条件结构的工作。所有的图片都处于正确的位置之后输出祝贺的提示语,并弹出对话框,选择再来一局或直接退出。选择中级、高级也会相应显示出对应操作。选择帮助,则游戏进入帮助VI,通过图形控件显示出游戏说明,帮助初玩者快速了解游戏。

拼图游戏设计主要分为初级模块,中级模块,高级模块,帮助模块。其中初级模块、中级模块和高级模块这三个模块都由获取图片,随机数组,拼图三个基本模块构成。帮助模块,由图形控件组成。

最后,经过子VI的设计和程序调用,初级模块、中级模块、高级模块和帮助模块,将他们组合在一起。

本设计主要包括四个部分:获取图片,随机数组,拼图和帮助模块,下面就分别着重介绍四个模块的功能。

2.5 拼图游戏设计的主要模块

2.4.1 获取图片模块

获取图片模块的主要功能是从文件中读取出图片。点击运行后,根据名称或相对路径,调用读取图片子VI,根据JPEG文件路径,调用出图片,再调用绘制平化像素图子VI,修改图像数据,使得符合显示要求。

2.4.2 随机数组模块

随机数组模块的主要功能是把按正确顺序排列的图片数组打乱,以区别于正常顺序的图片数组,使得拼图游戏得以初始化。该模块由两个同等大小的数组组成,一个显示图片的输入,一个显示随机排列后图片的输出。

点击程序运行按钮,程序即可开始运行,先是图片数组的输入,再经过对数组维数的重新排列,使得数组变为一维数组,并且查找出空白图片的位置,再根据数组维数,经过运算得出空白数组的坐标,以此来作为图片元素移动的标准,即只有位置在空白图片上下左右的图片元素才可以移动位置。随后通过while循环和条件结构,来确定如何具体的实现图片的随进排列。最后经过数组替换,使得随机排列后的数组显示在界面上,至此随机数组排列的功能得以实现。

2.4.3 拼图模块

拼图模块的主要功能是实现操作者对拼图游戏的操作性,点击程序运行按钮后,前面板会出现拼图界面,按初级中级高级的不同,界面显示也不同。初级显示的是一个三维数组组成的三乘三的拼图界面,中级显示的是一个由四维数组组成的四乘四的拼图界面,高级显示的一个由五维数组组成的五乘五的拼图界面。以初级为例,程序运行后,显示出一个由三维数组组成的界面,其中三维数组里的元素由八副随机打乱的图片素材和一张空白图片素材组成。操作者点击空白图片上下左右的图片素材,即可移动图片至空白图片处,可连续操作,直至拼图游戏完成。在三维素组界面左下方有个停止按钮,如果拼图游戏尚未拼成功,点击停止即返回游戏主页界面;如果拼图游戏完成,则显示出祝贺语和确定选项,点击即返回游戏主页界面。中级和高级运行和初级基本相似。至此拼图模块功能实现。

2.4.4 帮助模块

帮助模块的主要功能是帮助操作者清楚掌握游戏玩法。这个模块主要应用的是图形控件来展示。点击程序运行按钮后,程序将调用图形控件至前面板,以此来显示出帮助内容。

图形控件是LabVIEW为方便用户操作而提供的一种自定义控件,用户可以随心所欲地画出自己想要的图形,通过自定义窗口就可以随意导入图片并且按需求调整图片大小和设置控件外观。在这个模块,利用图形控件的自定义性,导入预先用图片处理器处理过的配有帮助字符的图片,再调整大小和外观,使得用户可以在运行程序后看到帮助。(132)

3、拼图游戏的具体实现

3.1 获取图片功能的具体实现

图片获取功能是整个拼图游戏的基础模块,它主要实现对拼图游戏的图片进行自动从文件导入的功能。

3.2 随机数组的具体实现

随机数组是整个拼图游戏的核心基础模块,它主要实现对拼图游戏的初始化工作。

原始数组是按照图片的正确顺序依次排列,为了游戏的更好进行随机数组就需要把原始数组打乱排列成为新的数组,以增加游戏难度。随机数组的实现主要是一个while

过程基本类似,所以统一以初级为例进行说明;稍有差异之处,会在最后另加说明。初级模块随机数组的实现主要分为以下过程:

1、原始按照图片正确顺序排列的数组作为数组输入进入到while循环中,如下图所示,利用重排数组维数和搜索一维数组控件来实现对空白图片位置坐标的定位,即空白图片在图片数组中的行列数得以确定,随后图片的随机排列将以空白图片为核心展开。While循环在本模块的作用是多次重复打乱图片排放顺序直至循环结束。

2、确定了空白图片的行列值后,利用簇合并行列值为一个整体值,即以坐标的形式展示。空白数组的坐标与(1,0)和(0,1)分别进行相加相减运算,这是确定将要打乱的图片是空白图片元素上下左右位置的图片。运算的结果分别作为独立的值进入for循环中,设定for循环的次数为三次。再用随机数和常数的乘法运算得到一个长整型的数值,这个数值和数组维数3进行相除运算,再和循环次数做简单的加法运算,最后和维数3相除,得到的余数作为进入条件结构的判断条件。在该部分进行的数值运算都是基于产生随机的数字并保证次数的延续性和数值的不重复性。

3、根据余数的不同,进入条件结构中的运算也不同。因为被除数是3,所以得到的余数只有三种可能0,1,2,因此设定条件结构的分支为三条。如果余数是0,则进入第一条分支,先判断上一步骤中空白图片和(1,0)(0,1)运算的结果是否在(0,0)和(3,3)内,即判断是否超出数组的范围。若没有超出则强制转换空白图片坐标减去(1,0)处即空白图片正上方的图片元素的行列坐标;同理余数是1时,制转换空白图片坐标加

坐标减去(0,1)处即空白图片正左方的图片元素的行列坐标。这一过程主要完成要打乱的图片处于什么样的位置的功能。

4、找到要打乱的图片所在的位置后,利用索引数组找到元素所在位置的图片,利用替换数组进行行列的替换从而得以实现图片的位置打乱功能。重复此操作直至跳出while 循环,将打乱图片位置后的数组输出即完成对数组的随机排列。

以上就是初级拼图游戏的随机数组模块的功能实现。中级和高级只是数组维数和条件分支处有细微差异。如图所示,其余实现原理以及过程均相同。

3.3 拼图的具体实现

拼图模块是整个游戏的核心模块,它主要实现的是操作者对整个游戏的操控。因为初级中级高级拼图模块的实现过程基本类似,所以统一以初级为例进行说明;稍有差异之处,会在最后另加说明。

初级拼图面板界面如图所示,它由三维数组组成,八福随机排列的图片和一副空白图片作为数组元素添加在数组里面。点击空白图片上下左右的图片元素即可实现图片的移动。具体实现分为以下过程。

1、原始数组创建以及图片元素显示

要实现图片元素的显示,需要调用获取图片子VI。根据图片路径结合获取图片子VI实现对文件中八副图片的调用,并把这八副图片和一副空白图片作为数组元素创建出一个数组,并且确定数组所在的坐标为(0,0)。随后用重排数组控件调整数组为三维数组,并把该数组设定为原始数组。再调用初级随机数组子VI,并把经过随机排列后的原始数组设定为数组。

2、拼图操作

实现拼图操作的主要程序是一个while循环、一个事件结构和一个条件结构。如图所示(1)while循环实现的是对拼图操作的一个控制,程序正常运行则进入事件结构,程序需要停止就终止程序运行。

(2)事件结构显示的是对不同的操作程序的运行情况。主要分为三个事件:对数组元素的鼠标操作、超时和游戏停止。

A、对数组元素的鼠标操作,程序如图所示

把鼠标按下位置的坐标创建为属性节点,它和坐标(4,4)的差值除以每个数组元素边框值(170,99),所得到的商和余数取长整型后的数值即为数组元素中鼠标按下操作所对应的图片在数组中的行列数,如(1,2)代表第一行第二列的图片元素。把经过随机排列的数组转换为一维数组,并找出空白图片在一维数组中的位置,除以数组维数3,即可得到空白图片在数组中的行列数。把鼠标按下位置图片元素的行列数和空白图片的行列数做差值,结果取绝对值并相加再和1进行等值运算,随后进入条件结构。等值运算是为了判断鼠标所在位置的图片即所要移动的图片与空白图片的位置关系,确保每次移动的图片都必须满足与空白图片的坐标差值为1,即位于空白图片上下左右的位置的图片才可以移动。

如果等值运算的结果相同,表明此时鼠标点击处的图片可以移动。此时进入真值条件框中,用数组替换子集控件来完成鼠标按下处图片元素与空白图片的坐标互换,即位置互

操作为空操作,即图片移动无效。至此完成一次拼图操作。

B、超时操作

该操作是判断拼图游戏是否完成。用等于?控件来判断原始数组和数组是否所有图片元素都对应相同,先把两个数组都重新排列成一维数组,再依次对应两个一维数组中图片元素是否都对应相同。若都相同则表示拼图成功,进入真值条件框,此时显示对话框信息即恭喜操作者完成游戏;若不是都相同则表示没能完成拼图,进入假值条件框中,此时操作为空操作,操作者需继续重复拼图操作。

该操作是实现操作者完成游戏或者终止游戏时的停止功能。当操作者完成游戏时输出恭喜语句并提示停止,点击停止即返回到拼图主页面;当操作者终止游戏时,点击停止按钮,则程序返回到主页面。

3、返回主页面

按照游戏常规设置,点击停止按钮后游戏即返回主页。返回主页具体实现如图所示:

这里主要是用子VI来实现。具体子VI的实现过程将在随后的3.5子VI的具体实现中进行详细说明。

以上就是初级拼图游戏的拼图模块功能实现。中级和高级只是在原始数组创建、面板框、数组维数和数组元素边框值处有细微差异。如图所示,其余实现原理以及过程均相同。

3.4 帮助的具体实现

帮助功能面板图所示:

点击程序运行,面板即显示出帮助功能;点击退出,则该面板跳转到游戏主页面板。

帮助功能具体实现如下图所示:

首先,创立图形控件。从网上找到合适的图片,用照片处理器进行修改加工并在图片上添加对游戏操作的说明性文字。利用LabVIEW里图形控件的高级自定义功能,实现对控件外观的随意修改。选择从文件导入选项导入处理好的图片,调整好图像边框和滚动条的位置使得其适应导入图片的大小。再在文件菜单中选择保存改动选项,则就将改动的结果应用到源程序中,这样图像控件就创建完成。

接下来,用while循环语句来对该模块的停止操作进行控制。用布尔控件连接到while循环的停止按钮上,并加以定时控件,来实现该操作的停止功能。

最后,按照游戏常规设置,点击停止按钮后游戏即返回主页。返回主页具体实现如图所示:

这里主要是用子VI来实现。具体子VI的实现过程将在随后的3.5子VI的具体实现中进行详细说明。

基于Android 益智拼图游戏设计毕业论文

基于Android 益智拼图游戏设计毕业论文 目录 摘要........................................................... I I Abstract....................................................... I II 1 绪论. (1) 1.1 课题开发的背景 (1) 1.2 课题意义 (1) 2 Android架构与开发平台搭建 (2) 2.1 Android的系统架构 (2) 2.2 Window下Android开发环境的搭建 (4) 3 流程介绍与概要设计 (5) 3.1 游戏流程介绍 (5) 3.2 系统概要设计 (6) 3.2.1 界面布局模块 (6) 3.2.2 难度选择模块 (6) 3.2.3 图片选择模块 (7) 3.2.4 步数和时间模块 (7) 3.2.5 游戏实现模块 (7) 4 系统详细设计与实现 (8) 4.1 界面布局实现 (8) 4.1.1 选择界面布局 (8) 4.1.2 游戏界面布局 (9) 4.2 游戏功能实现 (11) 4.2.1 难度选择 (11) 4.2.2 图片选择 (12) 4.2.3 步数和时间设置 (13) 4.2.4 拼图的实现 (14)

5 系统测试 (17) 5.1 Android仿真器介绍 (17) 5.2 功能模块测试 (17) 5.3 出现的错误及解决方案 (20) 6 总结与展望 (21) 参考文献 (22) 附录 (23) 致谢 (33)

基于Android益智拼图游戏设计 摘要 随着移动设备的日益普及,使用Android技术开发手机软件受到越来越多人的青睐。在此背景下,本课题开发了一款Android平台下的手机游戏——益智拼图。 本文首先对Android的研究背景,系统架构以及开发环境进行介绍,然后就玩家对游戏的需求进行一定的分析,最后运用Android技术实现拼图游戏的开发,并合理布局游戏界面,使游戏界面更加美观和人性化,实现了游戏的基本功能,最终可以让玩家享受拼图游戏的乐趣。 关键词:Android;拼图游戏;Activity;架构

C#面向对象课程设计--拼图游戏

《C#程序设计》课程设计 题目:拼图游戏 专业:计算机科学与技术 学号: 姓名: 指导老师: 完成日期: 2012/12/26

《C#课程设计》评分标准 题目:拼图游戏专业:计算机科学与技术学号:姓名:

目录 1 前言 (4) 2 需求分析 (4) 要求 (4) 任务 (4) 运行环境 (4) 开发工具 (4) 3 概要设计与详细设计 (5) 系统流程图 (5) 结构功能图 (5) 4 编码与实现 (6) 编码分析 (6) 具体代码实现(附源代码) (9) 5 课程设计总结 (18) 参考文献 (19)

1.前言 拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。拼图的设计对每一个C#语言设计者进行语言提高和进阶都是一个很好的锻炼机会。拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高C#开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。一个3×3的魔板,有一个格子是空的,其他格子内随机放置1-8共8个编号的方块,通过单击任意一个与空格子相邻的方块可以把该方块移入空格子,不断的移动方块,直到方块按照图片的原来的顺序排好。 2 需求分析 要求 (1)用C#语言实现程序设计; (2)利用PictureBox控件来实现图片的移动 (3)超过200步提示重新来 (4)界面友好(良好的人机互交),程序要有注释。 任务 (1)制作流程图 (2)编写代码; (3)程序分析与调试。 运行环境 (1)WINDOWS2000/XP/win7系统 (2)编译环境 开发工具

数字拼图游戏

安徽新华学院计科软件测试方法和技术 课程设计任务书 一、设计题目:数字拼图游戏(出题人:於世芳) 说明:一个拼图游戏。 二、目的与要求 1.目的 培养学生综合利用JAVA语言进行程序设计的能力,主要是培养学生利用JAVA的标准控件进行应用程序设计的技能。 2.基本要求 ?能够实现拼图功能。 ?可以通过初始化任意次的重新游戏。 ?游戏完成后做出相应提示. 3.创新要求 在基本要求达到后,可以参考其他拼图游戏,进行创新设计,创新方向提示如下: ★将数字换成图片。 ★可以记录游戏者成绩并排行 ★增加暂停功能或窗口最小化时暂停计时。 三、设计方法和基本原理 1.问题描述 程序界面见题图。 2.问题的解决方案 ①设计程序界面 因为用的全是基本控件,界面设计没有什么难度,这里涉及到动态添加控件数组,可参见课本控件数组一节内容。 ②编写代码 代码包括事件处理过程和功能函数,还有必要的声明。变量声明部分声明本程序所需要的变量和数组。

事件处理包括下面的主要事件: Form_Load() 作一些初始化的工作。主要是设定初始等级,动态添加控件数组。 Private Static Sub cmdButton_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) 游戏运行。 cmd_Click( ) 游戏初始化 其它功能的处理不再一一描述了 四、主要技术问题的描述 虽然界面操作有些复杂,但难点显然并不在于此。下面是初始化设置中的一段程序:package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.Event; import flash.text.TextField; //import mx.controls.Alert; public class Main extends Sprite{ var arr:Array=new Array(1,2,3,4,5,6,7,8); var ditu:Array=new Array(new Array(3),new Array(3),new Array(3)); var pailie:Array=new Array(new Array(0,0),new Array(40,0),new Array(80,0), new Array(0,40),new Array(40,40),new Array(80,40), new Array(0,80),new Array(40,80),new Array(80,80));

Java课程设计——拼图游戏

拼图游戏 1.游戏规则介绍 (1)本游戏中有一个格子是空的,其他格子内随机放置由要拿来拼图切割成的8个小图片。在开始游戏之前,会出现一张完整的图片,点击“菜单”里面的“开始”, 进行拼图游戏,通过将空格旁边的小图片与空格交换位置(不断的移动方块), 来实线拼图,直到方块一行一行的按图片的原始样子拼好即可完成该游戏。在 移动过程中,窗口右边会显示移动的步数。 (2)游戏拼完后,会弹出一个信息框,询问是否再玩一局,点击“Yes”将再打开一个游戏开始的界面,可以继续新的一局游戏,点击“No”将结束游戏,关闭所有窗 口。 2.游戏实现的功能 (1)点击运行程序,将弹出一个窗口,显示一张完整的图片。 (2)菜单栏的菜单,会出现3个菜单项:“开始”、“重新开始”、“结束”。 点击“开始”,即开始一局游戏;“在游戏的任何时候点击”重新开始“,即结束 当前游戏,重新开始一局新的游戏;点击“退出“,立即退出游戏,关闭窗口。 (3)在游戏过程中,游戏界面右边会同步显示当前的步数。 游戏的一些界面: (1)主界面: (2)菜单项:

(3)帮助--->关于 (4)点击开始 (5)游戏过程 (6)游戏成功

(7)破纪录 3.程序实现 Pt类: (1)建立一个类Pt,public class Pt extends JFrame implements KeyListener{}。该类继承父类JFrame,实现KeyListener接口。 (2)Pt类的构造函数Pt()。定义窗口参数,添加菜单栏和多个标签;调用读文件函数read (),读取该游戏的最高记录,并将该记录输出到标签上;为各个菜单添加事件,鼠标点击“开

MFC课程设计之拼图游戏设计报告

拼图游戏 实验报告 一、实验目的

1、通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。 2、通过实践进一步领会程序设计的特点和应用,提高运用C++ 以及面向对象知识解决实际问题的能力,初步掌握MFC变成的基本功能。 3、通过实践掌握用C++ 编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。 二、小组分工 为了发挥组内同学的各自特长,我们小组分工如下: 1、苏嘉彬——前期进行系统需求分析,系统结构设计,完成拼图界面的设计工作, 后期完成课程设计报告 2、嵇鹏飞(组长)——完成主要程序的编写工作(图形分割、存储、拼图) 3、依代吐力·艾尼——搜集资料,完成计时器的设计工作,软件接口的设计及测 试 三、程序设计思路 1、初步方案讨论 拼图游戏是同学们喜欢的益智游戏之一,带着浓厚的兴趣,我们选择拼图游戏设计 作为我们小组本次MFC课程设计的课题。在讨论中,有的同学希望用单文档(SDI) 的形式完成本次设计,有的同学则偏向于用对话框(Dialogue)的形式,最终我们小组 讨论决定最终的设计采用对话框形式实现拼图功能。 2、方案变更、疑难解决 (1)最初我们决定采用对话框形式来实现拼图的基本功能,但是在实施过程中出 现了几次很严重的错误:Debug Assertion Failed,缺少ivewers.dll文件等等,在最后的 尝试中我们发现如果采用单文档(SDI)形式写拼图的话,可以实现最基本的功能,因 此我们最终决定使用单文档来完成该课程设计。 (2)一开始我们讨论决定采用的方式是将位图读入后再进行图片的分割,而在实 际的操作过程中由于图片的分割有一定的困难,因此我们最后采用的方式是将位图进行 分割完毕后再逐个用Brush在指定位置上进行绘画,实现图形的分割。 3、系统需求分析 (1)系统功能 简单的拼图游戏应该有拼图、计时、判断拼图成功、游戏者用时统计排名等功能, 拼图内部还应该有难度选择、相邻拼图块自动拼图等功能。图1所示是拼图游戏的用例 图,表明拼图游戏的主要功能。 图1 (

java课程设计-拼图游戏代码

package love; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.*; public class Games extends JFrame implements ActionListener { private JButton buttons[][];// 存储按键的数组 private Container container;// 一个容器 private GridLayout layout;// 布局方式为GridLayout private int count = 0, is[] = new int[8];// count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组 public Games() { super("拼图游戏");// 设置标题 layout = new GridLayout(3, 3);// 3行3列 container = getContentPane();// 该容器的布局方式,及其重要,否则产生空引用异常 container.setLayout(layout);// 将该布局方式作用于容器 buttons = new JButton[3][3];// 给按键数组分配储存空间 int locate1, locate2;// locate1用来指示当前产生的元素 locate2用来指示locate1之前的元素 for (locate1 = 0; locate1 < 8; locate1++) {// 该方法作用是产生1到8这8个数,随机分配给数组,即无序排列 int g = new Random().nextInt(8) + 1;// 随机产生一个空白按键,即不显示的那个 is[locate1] = g; for (locate2 = locate1 - 1; 0 <= locate2; locate2--) { if (is[locate1] == is[locate2]) break; } if (locate2 != -1) locate1--; } int temp = 0; int r = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的行 int l = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的列 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) {

Flash拼图游戏制作课程设计报告

目录 第1章需求分析 (1) 1.1 引言 (1) 1.2 课程设计题目 (1) 1.3 课程设计目的 (1) 1.4 程序运行环境及开发工具 (1) 1.5 课程设计任务及要求 (1) 第2章概要设计 (2) 2.1 设计原理及方法 (2) 第3章详细设计 (3) 3.1 第一步: (3) 3.2 第二步: (3) 3.3 第三步 (4) 3.4 第四步 (5) 3.5 第五步 (5) 3.6 第六步 (6) 3.7 第七步 (7) 3.8 第八步 (8) 3.9 第九步 (8) 3.10 第十步 (9) 3.11 第十一步 (9) 3.12 第十二步 (10) 3.13 第十三步 (10) 3.14 第十四步 (11) 第4章系统调试与运行结果 (13) 4.1 系统调试 (13) 4.2 运行结果 (14) 第5章总结与体会 (15) 参考文献: (15)

第1章需求分析 1.1 引言 FLASH作为一款目前最流行的网络动画制作软件,恐怕不知道的人少之又少。其实FLASH强大的功能不光能让我们轻松制作动画,我们还可以利用它完成一些意想不到的工作。比如说是拼图游戏,在这个领域应用非常广泛!而且可以制作各种丰富有趣的小游戏来,是非常的有趣的! 1.2 课程设计题目 拼图游戏设计 1.3 课程设计目的 本课程的设计的目的是通过实践使同学们经历多媒体应用系统开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的案例,理解并初步掌握常用多媒体软件的使用,利用多媒体计算机等设备进行音频与视频数据的获取和处理、图像处理与图像文件格式转换、超文本超媒体在交互式多媒体软件的应用;通过《多媒体课程设计》实验,使学生能够达到提高多媒体技术的实际开发应用能力,了解系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作过程。 1.4 程序运行环境及开发工具 硬件:PC机一台 软件:Windows 7,PhotoshopCS4,Flash8 1.5 课程设计任务及要求 设计“拼图游戏”,游戏是Flash制作中很重要的一部分,主要应用的是flash内

VB课程设计报告--拼图游戏

VB课程设计报告 —拼图游戏 知识点:控件数组,公共对话框控件,PictureClip控件,多模块程序设计,图片的应用。 1.题目介绍 “拼图”是一种老少皆宜、容易上手的益智类小游戏,本题目要求编制一个拼图游戏程序。使用方法如下: (1)指定一幅图片,将其分割成m × n 个小图块并且打乱顺序后重新排列,其中有一块没有图块的“空挡”。 (2)使用鼠标单击与空挡相邻的图块使该图块与空挡的位置互换。(3)利用空挡位置移动各图块,最终恢复图片原貌,完成拼图。移动的步数越少则说明游戏者的水平越高。游戏过程中,可以打开参考图帮助找到正确的位置。 2.功能要求 (1)运行程序,在进入游戏之前显示一个背景图片。 (2)选择菜单中的“打开图片”命令,显示打开图片对话框,“打开图片”对话框使用公共对话框控件实现,并且只能指定以*.jpg *.bmp 为扩展名的文件。可以在查看菜单中选着“缩略图”进行预览。(3)选择图片之后,程序弹出“指定行列数”对话框,提示将图片分几行几列。使用微调按钮可以调节行数和列数,限制在3-7之间。(4)指定行列数之后,单击确定返回主窗口,程序自动按照指定的

行列数将图片进分割,然后随机排列。 (5)打乱的图片中一空挡位置,用户单击与空挡相邻的图块可以与其互换位置。点击了空挡或者与其不相邻的,程序不做任何操作。原图只少右下角的图块。 (6)图片复原时,程序显示消息框表示祝贺,同时显示游戏共使用的步数。 (7)游戏过程中,如果用户希望参考原图,可以单击“显示原图”按钮,打开“参考图”窗口。 (8)窗体中的背景颜色可以改变,从菜单中选择“背景颜色”命令,弹出“颜色”飞、公共对话框,用户从中选择一颜色即可。 (9)在游戏过程中或在完成后,均可退出程序或选择“打开图片”菜单命令重新开始一个新图片。 (10)“参考图”窗口应是一个非模态窗口,在关闭主窗口时同时卸载,而不是隐藏,否则该程序不会完全关闭,仍会驻留内存。 3.程序设计 概述:(1)PictureClip 控件来管理打开图片并将其分为指定的行列图块,其Picture、Rows、Cols等属性值应在程序中设定。 (2)使用image控件数组来显示图块,设计时只需在窗体上放置一个image控件并将其的index设为0 ,其他的用load语句加载。 (3)“打开图片”和“颜色”对话框commondialog控件实现。设置其filter属性使之只能打开bmp和jpg类型的图片文件。 (4)将image控件的stretch属性设计为TRUE。

C++课程设计报告 - 拼图游戏

目录 一、需求分析 (1) 1.课程设计目的 (1) 2.程序所实现的功能 (1) 二、设计内容 (1) 1. 主模块图 (1) 2.1. 主程序流程图 (2) 2.2 用例图 (2) 2.3主程序调用关系图 (3) 2.4函数主要调用关系图 (3) 三、设计方案论述 (3) 四、调试分析 (4) 1.实际完成的情况 (4) 2.程序的性能分析 (4) 3.上机过程中出现的问题及其解决方案 (4) 4.程序中可以改进、扩充的功能及设计实现构想 (4) 五、用户手册 (4) 六、设计总结 (5) 七、程序中主要的功能函数 (6) 八、主要参考文献 (6) 九、附录 (6)

一、需求分析 1.课程设计目的 (1)运用C++语言设计拼图游戏具有极强的实践性,加强我们对C++课程基础知识点的理解掌握和灵活运用理能力,培养实际分析问题能力,养成良好的编程习惯;了解C++面向对象的设计方法与技巧,有效地、深刻地理解课程内容,体会理论、方法和设计原则;培养分析实际问题和解决问题的能力,具备使用面向对象程序设计开发工具设计实际系统的能力。 (2)进一步领会程序设计的特点和应用,提高运用C++ 以及面向对象知识解决实际问题的能力,初步掌握MFC编程的基本功能,掌握一种可视化编程的方法,学习使用CStatic控制操作位图,加强对C++面向对象程序设计的理解。 (3)掌握用C++ 编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识,学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。 (4)锻炼实际的编程能力,提高调查资料、查阅技术文献、资料以及编写软件设计文档的能力,提高自学编程的能力。 2.程序所实现的功能 (1)本程序除了实现了拼图所要求的基本功能外,还添加了背景音乐、计算步数和游戏所用的时间,当游戏开始时背景音乐自动循环播放,步数随player操作自动增加,时间自动增加。 (2)进入游戏界面后,player可以在菜单栏中选择游戏的难度、图片风格和拼图图像,亦可以自定义图片,若选择“简单”,程序将图片分成9块,若选择“困难”,程序将图片分成16块. (3)单击“重置”或按F3菜单项会弹出一个对话框让用户确认是否重置游戏。 (4)单击任意图象,图像将随机排列,并开始计时和记步,用户通过鼠标单击空格周围的图片来改变其位置,用户没单击一次,步数增加一次。 (5)游戏中用户可通过单击“提示”菜单项或按F4来查看图像的缩略图及游戏相关信息。 (6)游戏状态栏显示用户所用时间及步数,成功时状态栏给出提示信息和所花费时间、步数,用户可选择其他图像或难度进行游戏。 二、设计内容 1.主模块图

拼图游戏案例的设计

拼图游戏案例的设计 摘要:拼图游戏的设计,首先考虑窗口布局,因为在窗口的上部需要边界布局,而 那二十五个小按钮需要采用网格布局,因而直接将组件添加到Jframe窗口中是不可行的,可以通过将窗口上部和下部的组件分别添加到两个面板Jpanel中,将两个面板加到Jframe窗口中。然后实现图片的随机排放,通过循环生成图片正确摆放顺序的二维数组和图片随机摆放顺序的二维数组来实现。最后,实现图片的移动,通过两个按钮的行索引想减得绝对值与列索引想减得绝对值的和是否为1,来判断被点击按钮与空白按钮是否相邻,如果相邻,则令显示空白图片的按钮显示被单击按钮显示的图片,令被单击的按钮显示空白的图片。 关键字:Java软件拼图游戏Jpanel面板 引言:拼图游戏是一种弹性很好且耐玩的游戏,它可以启发智力及帮助其养成解决 事情的能力。玩拼图有助于手眼协调,它能训练和了解“部分”与“全部”的关系—可以知道许多的“部分”能拼凑出一个“全部”,以及“一个全部”是由“许多部分”所组成的。拼图平面组合的概念—积木是立体的组合,而拼图是一种平面组合的概念,在局限的2D范围内拼出一个物品,一个合乎与逻辑的东西。拼图游戏需要耐心的操作和手眼协调能力,只要一不协调就不能将数据块放在正确的位置。 一基础知识 JButton(按钮)组件:通过SetText(String text)方法设置按钮的标签文本,通过setIcon(Icon defaultIcon)方法设置按钮在默认状态下显示的图片。JButton组件只是在按下和释放两个状态之间进行切换,当Button按钮被点击时,会触发ActionEvent事件,此事件由ActionListener(事件监听器)接受并做处理,因而调用按钮的addActionListener(ActionEvent e)方法,为该按钮指定监听者。 Jlabel(标签)组件:Jlabel组件用来显示文本和图像,通过setText(String text)方法设置标签显示的文本,通过setIcon(Icon icon)方法设置标签显示图片。BorderLayout布局管理器:由BorderLayout类实现的布局管理器称为边界布局管理器,它的布局方式是将容器划分为五个部分,即NORTH(容器顶部)、WEST(容器左侧)、CENTER(容器中间)、EAST(容器右侧)、SOUTH(容器底部)。如果组件容器采用了边界布局管理器,在将组件添加到容器时,需要设置组件的显示位置,通过方法add(Component comp,Object constraints)添加并设置,该方法的第一个参数为欲添加的组件对象,第二个参数为组件的显示位置。 GridLayout布局管理器:由GridLayout类实现的布局管理器称为网格布局管理器,它的布局方式是将容器按照用户的设置平均划分成若干网,通过构造方法GridLayout(int rows,int cols)创建网格布局管理器对象是,参数rows用来设置网格的行数,参数cols用来设置网格的列数。 JPanel面板:如果将所有的组件都添加到Jframe窗体提供的默认组件容器中,则在一个界面中的所有组件只能采用一种布局方式,很难得到一个美观的界面,并且有些布局方式只能管理有限个组件。通过使用Jpanel面板,首先将面板和组件添加到Jframe窗体中,然后再将子面板和组件添加到上级面板中,这样就可以向面板中添加无数个组件,并且通过对每个面板采用不同的布局管理器,解决众多组件间的布局问题。Jpanel面板默认采用FlowLayout布局管理器。 Java程序的Application类型:特点是“Java应用”是可以独立运行的java程序。需要经过三个步骤:编写源文件,一个java应用程序必须有一个类含有public static void main (String args[])方法,这个类是应用程序的主类,源文件的名字和主类的名字完全相同。编译java源程序,创建源文件后,就要使用编译器(javac.exe)对其进行编译。运行java程序,从主类的main方法开始执行。 二拼图游戏设计思路与步骤 题目要求:所谓拼图游戏,是指将一个完整的图片分割成若干个规则的小图片,然后将这些小图片随机地拼接在一起,然后由玩家按照原图重新拼接出正确的图片。程序运行界面如下图所示,左上角的图片为供玩家参考的原图,下面每一个小网格都是一个小图片,在开始游戏时这些小图片是杂乱无章的,在图中有一个网格是空白的,玩家可以通过单击与其相邻的网格,即位于其上、下、左、右的四个网格,将被单击网格中显示的小图片移动到空白网格中,然后被单击的网格将变为空白,经过这样反复的移动,将会将图片重新拼接成原图像。当点击按钮“下一局”时,每个移动模块中的图片自动随机更新。 第 1 页共6 页第 2 页共6 页

拼图游戏平台设计

毕 业 论 文(设计) 题目拼图大世界专业计算机应用技术 姓名 年级 03计机高级工班 指导教师

前言 多媒体技术是当前计算机科学与技术领域的热点技术,它诞生于20世纪80年代,在20世纪90年代获得突破性的发展,并获得广泛的应用。多媒体技术使计算机具有综合处理文本、声音、视频、图形、图像的能力,它的迅速发展已经深刻影响、改变着人们的生活、工作方式。多媒体的应用丰富多彩,不仅涉及计算机的各应用领域,也涉及教育培训、电子出版、通信、文化娱乐等领域或行业。多媒体计算机技术正朝着高分辨率、高速度、简单化、标准化和智能化方向发展。 Authorware是功能强大的交互式多媒体软件,被广泛应用于多媒体教学和商业领域,在多媒体制作与发展领域有着举足轻重的地位。它能完美地结合文本、图形、音频、视频以及动画等素材,制作出精美的、跨媒体的学习软件、应用软件等,然后通过互联网、局域网或光盘等多种载体进行发布。基于以上原因,Authorware正在被越来越多的多媒体工作者使用。 拼图游戏相信大家都不会陌生,现在我们不妨利用Authorware来制作一个拼图游戏,借此切身体会Authorware 的强大交互设计。现在网络上有各式各样的拼图游戏,其中有用Authorware、flash、Animated Puzzles等做的拼图游戏,如Dreamweaver中有一个行为叫Drag layer (拖动层),用它也可以设计出拼图游戏。而在这里我要为大家做的是用Authorware制作拼图游戏。这个拼图游戏的特战在于,颜色鲜艳,采用静、动相结合的方式,在页面里加入了大量的flash 动画、GIF动态图片,从而令到页面更生动。还有一关于拼图的历史文化信息,游戏玩家可在闷时阅读。 希望大家在通过玩这个游戏,令大家情开朗、愉快,能让大家流连忘返。 - 2 -

毕业论文--基于安卓系统的拼图游戏设计

毕业论文 设计(论文)题目:基于Android 益智拼图游戏设计

目录 摘要........................................................... I V Abstract ......................................................... V 1 绪论. (1) 1.1 课题开发的背景 (1) 1.2 课题意义 (1) 2 Android架构与开发平台搭建 (2) 2.1 Android的系统架构 (2) 2.2 Window下Android开发环境的搭建 (4) 3 流程介绍与概要设计 (5) 3.1 游戏流程介绍 (5) 3.2 系统概要设计 (6) 3.2.1 界面布局模块 (6) 3.2.2 难度选择模块 (6) 3.2.3 图片选择模块 (7) 3.2.4 步数和时间模块 (7) 3.2.5 游戏实现模块 (7) 4 系统详细设计与实现 (8) 4.1 界面布局实现 (8) 4.1.1 选择界面布局 (8) 4.1.2 游戏界面布局 (9) 4.2 游戏功能实现 (11) 4.2.1 难度选择 (11) 4.2.2 图片选择 (12) 4.2.3 步数和时间设置 (13) 4.2.4 拼图的实现 (14) 5 系统测试 (17) 5.1 Android仿真器介绍 (17)

5.2 功能模块测试 (17) 5.3 出现的错误及解决方案 (20) 6 总结与展望 (21) 参考文献 (22) 附录 (23) 致谢 (33)

基于Android益智拼图游戏设计 摘要 随着移动设备的日益普及,使用Android技术开发手机软件受到越来越多人的青睐。在此背景下,本课题开发了一款Android平台下的手机游戏——益智拼图。 本文首先对Android的研究背景,系统架构以及开发环境进行介绍,然后就玩家对游戏的需求进行一定的分析,最后运用Android技术实现拼图游戏的开发,并合理布局游戏界面,使游戏界面更加美观和人性化,实现了游戏的基本功能,最终可以让玩家享受拼图游戏的乐趣。 关键词:Android;拼图游戏;Activity;架构

课程设计与开发

课程设计与开发

任务导向式课程设计与开发方法培训 解决任何问题的核心是:学习成长改变 学习:要有终身学习的能力,也就是学力 成长:当你的成长速度跟不上爱人时,婚姻就出现问题 当你的成长速度跟不上学生时,教育就出现问题 当你的成长速度跟不上老板时,工作就出现问题 当你的成长速度跟不上下级时,管理就出现问题 当你的成长速度跟不上市场时,公司就出现问题 改变:改变才是最伟大的历练。 情商和平台:一根绳子可以卖五块,但绑在螃蟹上就值五十块,这就是平台。想成功先发疯,头脑简单往前冲。 进入课程: 小组讨论: 问题:任务完成过程中的知识点如何体现? 开发目标 信息化 标准定位 到底对学生有没有帮助? 一、课程开发是什么? 开发一门课,包含什么 为什么有这么多问题出现? 1.没有统一的方法论。 2.每一个任课教师永远站在局部,不知专业标准是什么。 3.其实课程开发的能力是教育部对每一个教师的要求。 二、为什么是企业的人来分享职业教育课程设计与开发? 1.我国职业教育面临的挑战 一是高校专业设置,人才培养方向与市场需求变化不同步

课程开发项目管理 团队、时间和预算是三个要素 (一)课程开发计划 团队、时间和预算 团队: 1.需要什么角色的人(项目经理、教学设计者、业务内容专家、图形美化师、文档开发者、种子讲师); 2.主要角色的职责与能力要求 游戏:拼图游戏 时间 阶段划分(时间配比):分析(20-25%)、设计(10-20%)、开发(25-40%)、验证(15-30%)、评估(5-10%)。 预算 实操练习: 任务:根据选定的课题,明确开发团队角色分工、细化开发进度,参照课程开发计划模板,完成课程开发计划 成果:《课程开发计划》海报

java拼图游戏设计报告

《Web程序开发》课程 大作业 拼图游戏 % 46 张杰 $

一、题目说明 拼图游戏不仅可以帮助人们打发时间,还可以用于锻炼儿童脑力,帮助少儿开发大脑思维,拼图游戏结合了许多元素,可以图片切割,游戏拼图,游戏成功时和打破记录时的判断,同时还有游戏时间和步数的记录,并以文档形式进行保存。在拼图时首先把图片添加到background 目录下,程序会自动获取该目录下的所有文件,并加载到游戏中,进行切割后,显示在拼图按钮上。 本游戏使用Java 语言设计,开发平台为JDK 。开发工具Eclipse 。JDK 是Sun Microsystems 针对Java 开发员的产品。自从Java 推出以来,JDK 已经成为使用最广泛的Java SDK 。JDK 是整个Java 的核心,包括了Java 运行环境,Java 工具和Java 基础的类库。JDK 是学好Java 的第一步。从SUN 的开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 二、题意分析 因为要制作拼图游戏,所以首先要实现图片的导入。这是通过getImage()函数来实现的,该函数有两个参数,第一个参数指明图片的路径,第二个参数指明图片的名称。然后,因为要实现图片摆放的随意性,所以要通过initgame()函数来实现。Initgame()函数是自写函数,在函数体内,通过调用()函数产生随机数,用来达到图片位置摆放的随意性和随机性。最后,因为要实现人机交互.,所以首先要通过一系列函数来实现对鼠标事件的监听和响应,这是通过函数addMouseListener(this) 和addMouseMotionListener(this)来完成的。这样程序会区分用户对鼠标不同的操作,正确执行相应的功能。 ( 游戏操作流程: : 游戏完成 操作游戏

VB课程设计:拼图游戏

Visual Basic课程设计报告 题目1:拼图游戏难度: *** 指导教师: 姓名: 学号: 专业: 班级: 学院: 日期:

1.题目简介 (1)本题目要求设计一个拼图游戏程序,要求如下: 指定一幅完整的图片,将其分割成m*n个小图块,打乱后重新排列,其中有一个没有图片的“空当”如图———— (2)使用鼠标单击与空当相邻的图块可以与其互换位置。 (3)利用空当位置使原图恢复原来的顺序,并记下玩家的移动步数,游戏过程中可以查看参考图以方便顺利通过游戏。

2、设计思路与总体方案 本程序包含五个窗体模块,其中以窗体frmMain的作用最为主要,该模块负责加载选定的图片并按所选的行列数分割,进行随机排列并加载空当,实现鼠标点击时其中的图块时与相邻的空当进行替换,实现拼图完成这个结束动作。 该模块中主要的变量有Rows ,Cols ,Arrange() ,space,started,steps showref Function isOK() 其中,Rows ,Cols ,showref这三个为全局变量,分别表示行数,列数,以及是否显示参考图(因此showref为逻辑型变量)其余变量为模块级变量,started也为逻辑变量,负责显示游戏是否已开始,Arrange()数组表示联系图像控件与数组的关系,space显示空当的位置,steps来记录玩家所走的步数,Function isOK()用来检验拼图是否已经完成的函数,为逻辑性变量。除外,过程变量tt(0 to2),b(0 to 2),s ,r ,c用来写入或读取排行榜中的记录。 其中,还设有菜单栏,通过CommonDialog控件负责实现“打开图片”与“配置颜色”对话框,并同时还拥有打开frmRecod(排行榜窗体模块)的工能。 主要代码(游戏初始时加载图片): Dim i As Integer Dim n As Integer CD.Filter = "图片文件(*.JPG,*.BMP)|*.jpg;*.bmp" CD.DialogTitle = "打开图片" CD.InitDir = App.Path & "\pics" CD.ShowOpen (显示指定图片对话框)If CD.FileName = "" Then Exit Sub If started Then For i = 1 To Rows * Cols - 1 '(清除已有的控件数组元素) Unload imgPT(i) Next imgPT(0).Picture = LoadPicture() If showref Then frmRef.Image1.Picture = LoadPicture() Else Me.Picture = LoadPicture() End If frmDivide.Show 1, Me ' (显示指定行列对话框)PC.Picture = LoadPicture(CD.FileName) PC.Rows = Rows PC.Cols = Cols n = Rows * Cols imgPT(0).Width = 320 / Cols ('窗体以像素为单位)

C语言课程设计_拼图游戏

C语言课程设计--拼图游戏 一、实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完整的图片。要求如下: 1.游戏的初始界面如图一,单击空格键进入游戏,进入游戏之后系统将完成的图片分 成大小相同的15分并随机摆放成如图二。 图一 图二

2.启动游戏,单击空格键进入游戏。通过鼠标单击周围有空格的方块来移动方块,直 到全图拼接成图二中右下角的图案样式,游戏结束,重新回到图一界面。 3.游戏的原理是定义一个4 * 4的方块矩阵(二维数组),前15个的值按顺序从1-15依 次递增,第16个留空为0。按照这个顺序排列的矩阵值代表游戏胜利。初始化的时 候,将该16个矩阵值随机排布即得到本局关卡。为0的空位代表附近上下左右的4 个方块可以移动过来 4.每次单击鼠标左键,方块移动一格。鼠标必须移动到方块范围内单击才能有效移动 方块。 二、实验指南 实验一开始实验 【实验任务】 步骤一、打开FunCode,创建一个的C语言项目; 步骤二、导入Puzzle模板。 【实验思路】 按实验指导完成。 【实验指导】 1、打开FunCode,点击“项目”菜单,选择“创建C语言工程” 注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。 2、点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“Puzzle” 模板,点击“导入到工程”按钮,如图二。

图一图二 3、导入成功后的,界面如下图所示: 实验二单击空格键,开始游戏 【实验内容】 步骤、启动游戏显示“空格开始”,单击空格键进入游戏初始界面。 【实验思路】 系统会自动响应d OnKeyDown函数来响应键盘按下消息,这部分代码实现在main.cpp 里。我们要做的就是通过在main.cpp的dOnKeyDown函数里实现我们的代码。当用户单击键盘上的空格键之后,设置GameBegin即“空格开始”精灵不可见。 【实验指导】

基于Java的拼图游戏设计

目录 1 开发环境及相关技术的介绍 (1) 1.1 开发环境 (1) 1.2 Java语言特点 (1) 2 游戏实现功能解析及界面 (1) 2.1游戏规则介绍 (1) 2.2游戏实现功能 (2) 2.2.1主窗口界面 (2) 2.2.2主窗口菜单 (3) 2.2.3 游戏过程中的出现的相关窗体 (6) 3 游戏程序实现 (8) 3.1 程序类主要功能介绍 (8) 3.2 程序源代码 (9) 4 小结 (27)

基于Java的拼图游戏设计 1 开发环境及相关技术的介绍 1.1 开发环境 操作系统:Microsoft Windows XP 程序语言:Java 开发环境:JDK-6u6-windows-i586-P 1.2 Java语言特点 1). 平台无关性 Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。 2). 安全性 Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。 3). 面向对象 Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。 4). 分布式 Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。 5). 健壮性 Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。 2 游戏实现功能解析及界面 2.1游戏规则介绍 1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其他格子内随

VC++拼图游戏设计

2011届本科毕业生论文 题目:VC++拼图游戏设计 Title: Design of Vc++ Puzzle Game 姓名 学号 所在学院 专业 指导教师 完成日期

声明 本人郑重声明: 所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作及取得的研究成果。其中除加以标注和致谢的地方,以及法律规定允许的之外,不包含其他人已经发表或撰写完成并以某种方式公开过的研究成果,也不包含为获得其他教育机构的学位或证书而作的材料。其他同志对本研究所做的任何贡献均已在文中作了明确的说明并表示谢意。 本毕业设计(论文)成果是本人在江西师范大学读书期间在指导教师指导下取得的,成果归江西师范大学所有。 特此声明。 声明人(毕业设计(论文)作者)学号: 声明人(毕业设计(论文)作者)签名: 签名日期:年月日

摘要 本文介绍了一个基于VC的趣味拼图游戏开发的全过程,MFC规范的出现使得我们开发VC游戏成为可能,今天我们要实现的是一个简单的拼图游戏。这个拼图游戏是一个3*3的拼图,由9个随机分割打乱的小图片构成,其中置一格为空。通过消息映射控制移动空框边的小图片来实现拼图,从游戏前得准备到主要类和设备接口的实现,最后运行、调试和打包。 关键词:VC,拼图,MFC,游戏,随机分割打乱。

Abstract Introduces a jigsaw puzzle based on VC interest development entire process, the emergence of ordinary MFC standard allows us to develop VC games become possible, today we are going to realize is that a simple puzzle. This puzzle is a 3 * 3 of the jigsaw puzzle, disrupted by nine random division of the small picture composition, buy a case is empty. By moving the empty box edge little pictures from game to achieve puzzles, before the main class and to the realization of the device interface, finally running, debugging and packaged. Key words: Visual c + +, Puzzle, Mfc, Game, Sorting frame.

相关文档
最新文档