嵌入式课程设计报告

合集下载

嵌入式控制系统工程设计课程设计

嵌入式控制系统工程设计课程设计

目录1.引言 (2)2.基本原理 (2)2.1步进电机概况 (2)2.2步进电机工作原理 (4)2.3步进电机分类 (6)3.硬件系统选择 (7)3.1核心处理器选择 (7)3.2元器件选择及接口设置 (8)4.硬件原理结构框图 (12)5.任务划分及程序大框图 (13)6.PCB设计及成本估算 (15)7.总结 (17)参考文献 (19)1.引言步进电机是一种控制电机,由于不使用反馈电路就能进行速度控制及定位控制,既所谓的电机开环控制,故越来越多的被应用于现代工业控制系统中。

其应用主要以处理办公业务能力很强的OA(Office Automation,办公自动化)机器和FA(Factory Automation,工厂自动化)机器为核心,并广泛应用于医疗器械、计量仪器、汽车、游戏机等[1]。

传统工业中的步进电机控制系统大多数采用的是8位单片机如89C51系列作为控制内核,其设计简单、价格低廉且能满足一般的控制要求,但是由于单片机本身存储空间小,外设资源较少,往往需要与PC机联机控制才能实现更高级的功能,这就带来了实时性能较差,人际交互较为复杂,操作麻烦等问题[2]。

如果采用功能强大的32位ARM处理器作为核心,集成电源、电机控制板、步进电机和人机界面于一体,形成一个完整的嵌入式一体化工业控制机,可以使得控制系统对步进电机的控制具有更高的实时性和可靠性、更友好的人机界面、更高的可操作性、更低的总成本和更高的控制精度。

本文基于这样一种设想,采用ARM7内核的LPC2131处理器为核心,设计了一个具有实时操作性和人机界面的步进电机控制器。

2.基本原理2.1步进电机概况[1]步进电机属于DC驱动的同步电机,但无法直接用DC或AC电源来驱动,需配备驱动器才能使用,所以步进电机的运行需要驱动电路。

步进电机驱动电路的任务,是按顺序指令切换DC电源的电流流入步进电机的各相线圈。

图2.1为三相VR型步进电机的绕组外加电源示意图,其中驱动电路用开关来表示。

嵌入式linux开发课程设计

嵌入式linux开发课程设计

嵌入式linux开发课程设计一、课程目标知识目标:1. 理解嵌入式Linux系统的基本概念、原理和架构。

2. 掌握嵌入式Linux开发环境的搭建与使用。

3. 学习嵌入式Linux内核配置、编译与移植方法。

4. 掌握常见的嵌入式Linux设备驱动编程技术。

技能目标:1. 能够独立搭建嵌入式Linux开发环境。

2. 熟练运用Makefile、交叉编译工具链进行代码编译。

3. 能够编写简单的嵌入式Linux设备驱动程序。

4. 学会分析并解决嵌入式Linux开发过程中的常见问题。

情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,提高学习积极性。

2. 培养学生的团队协作意识,增强沟通与表达能力。

3. 培养学生勇于克服困难,面对挑战的精神。

分析课程性质、学生特点和教学要求:本课程为高年级专业课程,要求学生具备一定的C语言基础和计算机硬件知识。

课程性质为理论与实践相结合,注重培养学生的实际动手能力。

针对学生特点,课程目标设定了明确的知识点和技能要求,旨在使学生能够掌握嵌入式Linux开发的基本方法,为后续项目实践和职业发展奠定基础。

课程目标分解为具体学习成果:1. 学生能够阐述嵌入式Linux系统的基本概念、原理和架构。

2. 学生能够自主搭建嵌入式Linux开发环境,并进行简单的程序编译与运行。

3. 学生能够编写简单的嵌入式Linux设备驱动程序,并实现相应的功能。

4. 学生能够针对嵌入式Linux开发过程中遇到的问题,提出合理的解决方案,并进行实际操作。

二、教学内容1. 嵌入式Linux系统概述- 嵌入式系统基本概念- 嵌入式Linux的发展历程- 嵌入式Linux系统的特点与优势2. 嵌入式Linux开发环境搭建- 交叉编译工具链的安装与配置- 嵌入式Linux文件系统制作- 常用开发工具的使用(如Makefile、GDB)3. 嵌入式Linux内核与驱动- 内核配置与编译- 内核移植方法- 常见设备驱动编程(如字符设备、块设备、网络设备)4. 实践项目与案例分析- 简单嵌入式Linux程序编写与运行- 设备驱动程序编写与调试- 分析并解决实际问题(如系统性能优化、故障排查)教学内容安排与进度:1. 嵌入式Linux系统概述(2课时)2. 嵌入式Linux开发环境搭建(4课时)3. 嵌入式Linux内核与驱动(6课时)4. 实践项目与案例分析(8课时)本教学内容基于课程目标,结合教材章节内容,注重理论与实践相结合,旨在培养学生的实际动手能力和解决问题的能力。

基于嵌入式的课程设计

基于嵌入式的课程设计

基于嵌入式的课程设计一、课程目标知识目标:1. 学生能理解嵌入式的概念及其在现实生活中的应用。

2. 学生能掌握嵌入式系统的基本组成部分及工作原理。

3. 学生能了解嵌入式编程的基本方法和技巧。

技能目标:1. 学生能运用所学知识,设计简单的嵌入式系统电路。

2. 学生能编写简单的嵌入式程序,实现特定功能。

3. 学生能通过实际操作,培养动手能力和团队协作能力。

情感态度价值观目标:1. 学生对嵌入式技术产生浓厚的兴趣,提高学习的积极性和主动性。

2. 学生在课程学习中,培养良好的学习习惯和探究精神。

3. 学生通过嵌入式课程的学习,认识到科技对社会发展的推动作用,增强社会责任感和创新意识。

课程性质:本课程为实践性较强的学科,旨在让学生在实际操作中掌握嵌入式技术的基本知识和技能。

学生特点:六年级学生具备一定的逻辑思维能力和动手操作能力,对新鲜事物充满好奇心。

教学要求:结合学生特点,采用项目驱动的教学方法,引导学生主动探究,注重培养学生的实践能力和团队协作精神。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的定义、发展历程和应用领域,结合课本第一章内容,让学生对嵌入式系统有一个全面的认识。

2. 嵌入式系统硬件:讲解嵌入式系统的基本硬件组成,如微控制器、传感器、执行器等,结合课本第二章,分析各部分功能及相互关系。

3. 嵌入式系统软件:介绍嵌入式编程的基本知识,如C语言编程、汇编语言编程等,依据课本第三章,让学生掌握嵌入式程序设计的方法。

4. 嵌入式系统设计与实践:结合项目案例,引导学生进行嵌入式系统电路设计、编程和调试,参考课本第四章,培养学生动手能力和实际问题解决能力。

5. 嵌入式系统应用:分析嵌入式系统在实际应用中的案例,如智能家居、物联网等,结合课本第五章,让学生了解嵌入式技术的广泛应用。

教学安排和进度:第一周:嵌入式系统概述第二周:嵌入式系统硬件第三周:嵌入式系统软件第四周:嵌入式系统设计与实践第五周:嵌入式系统应用教学内容与课本紧密关联,确保科学性和系统性。

嵌入式智能小车课程设计

嵌入式智能小车课程设计

嵌入式智能小车课程设计哎呀,说到嵌入式智能小车课程设计,真是让人兴奋啊!你想啊,这可不仅仅是拼拼图、玩玩模型那么简单。

这可是个技术活,得动脑子,得动手,还得跟小车搞好关系,真是个有趣的挑战呢。

想象一下,自己坐在电脑前,屏幕上代码闪烁,手里捏着焊枪,那感觉,简直比吃了蜜糖还甜。

先说说这小车,它可不是普通的小车,哦不!这小家伙可是个“智能”的存在,能听懂你的话,还能听从你的指挥。

你想让它前进,它就飞快地往前冲。

想让它转弯,它的灵活度可比人还强。

只要编写好程序,简直就像给它灌输魔法一样,能让它听话得不得了。

不过呀,写代码可不是那么简单的事情,多少程序员为此熬夜加班,最后搞得自己像个熊猫眼。

编程的时候,老是得调试,调试,再调试,这过程可真是个“心累”的循环。

说到这里,真想提醒大家,做这个项目之前,最好先准备一些零件。

这小车需要什么呢?电机、传感器、主控板,样样都得来。

你别小看这些小配件,真的是缺一不可。

就像做饭一样,没有调料的菜,谁愿意吃啊?所以,得提前准备好,才能做出色香味俱全的“智能小车”。

设计的时候,得考虑得周到点。

你要思考,这小车要在什么样的环境中运行?是在光线充足的地方,还是在黑乎乎的角落?传感器的选择就显得尤为重要了。

别问我为啥,因为它就像是小车的眼睛,能看到周围的世界。

选择合适的传感器,才能让小车灵活自如,轻松应对各种障碍物,免得撞得稀巴烂。

除了硬件,软件也得跟上节奏。

代码嘛,简直就是小车的灵魂。

你想让它聪明,得给它灌输聪明的知识。

Python、C++,这些语言听起来很高大上,但其实用起来也不是那么复杂。

就像写作文,开头要引人入胜,中间要层层递进,结尾得给人一个惊喜。

编程也是如此,得合理安排逻辑结构,这样小车才能灵活运用。

对了,大家都知道,这项目最有趣的部分是什么吗?就是调试的时候!小车乖乖地在你面前走,你突然想让它跳个舞,结果它转个圈就停住,气得你直想笑。

明明写得好好的代码,怎么就出了岔子呢?这时候,只能挠挠头,琢磨琢磨,看看哪里出问题了。

嵌入式智能小车课程设计

嵌入式智能小车课程设计

嵌入式智能小车课程设计一、课程目标知识目标:1. 学生能理解嵌入式智能小车的基本原理,掌握小车各部件的功能和相互关系。

2. 学生能掌握嵌入式系统的基本编程方法,运用编程实现智能小车的控制功能。

3. 学生能了解传感器的工作原理,并将其应用于智能小车的环境感知。

技能目标:1. 学生能运用所学知识,设计并搭建简单的嵌入式智能小车。

2. 学生能通过编程实现对智能小车的运动控制,包括速度、方向等。

3. 学生能利用传感器采集环境信息,实现对智能小车的智能控制。

情感态度价值观目标:1. 培养学生对嵌入式系统及智能硬件的兴趣,激发学生创新意识和探索精神。

2. 培养学生团队协作意识,提高沟通与协作能力。

3. 增强学生的环保意识,培养学生对人工智能在可持续发展中的作用的认识。

课程性质:本课程为实践性较强的课程,注重理论联系实际,培养学生的动手能力和创新能力。

学生特点:六年级学生对新鲜事物充满好奇,具有一定的信息技术基础,喜欢动手实践,善于合作交流。

教学要求:结合学生特点,注重启发式教学,引导学生主动探究,提高学生解决问题的能力。

在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中取得进步。

通过课程学习,使学生达到预定的知识、技能和情感态度价值观目标。

二、教学内容1. 嵌入式智能小车基础知识:- 介绍嵌入式系统的概念、发展及应用。

- 智能小车的基本结构、功能及工作原理。

2. 嵌入式系统编程:- 学习编程语言(如C语言)的基本语法。

- 掌握嵌入式系统编程方法和技巧。

- 实践编写控制智能小车的程序。

3. 传感器及其应用:- 了解常见传感器(如红外传感器、超声波传感器)的工作原理。

- 学习传感器在智能小车环境感知中的应用。

4. 智能小车设计与搭建:- 学习小车各部件的选型及组装方法。

- 实践搭建嵌入式智能小车。

5. 智能小车控制算法:- 学习简单的控制算法(如PID控制)。

- 实践编写智能小车控制程序,实现运动控制。

嵌入式系统设计课设报告范本

嵌入式系统设计课设报告范本

嵌入式系统设计课设报告福州大学《嵌入式系统设计课设》报告书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。

《嵌入式系统设计》是一门实践性很强的专业基础课,经过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。

培养大胆创造创造的设计理念,为今后就业打下良好的基础。

经过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、经过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。

D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比经过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。

任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。

嵌入式系统课课程设计

嵌入式系统课课程设计

嵌入式系统课课程设计一、教学目标本课程的教学目标是让学生掌握嵌入式系统的基本概念、原理和应用,培养学生运用嵌入式系统解决实际问题的能力。

具体分为以下三个部分:1.知识目标:(1)了解嵌入式系统的基本概念、特点和分类;(2)掌握嵌入式处理器、外围设备及其接口技术;(3)熟悉嵌入式操作系统的基本原理和常用操作系统;(4)了解嵌入式系统的设计方法和开发流程。

2.技能目标:(1)能够使用嵌入式处理器和外围设备搭建简单的嵌入式系统;(2)能够编写嵌入式系统的基本程序,实现常见的功能;(3)具备嵌入式操作系统的基本编程能力;(4)能够运用嵌入式系统解决实际问题,开展创新设计。

3.情感态度价值观目标:(1)培养学生对嵌入式系统的兴趣,激发学习热情;(2)培养学生团队合作精神,提高沟通与协作能力;(3)培养学生创新意识,培育勇于探索的精神;(4)培养学生责任感,强化安全意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.嵌入式系统概述:嵌入式系统的概念、特点、分类和应用领域;2.嵌入式处理器:嵌入式处理器的结构、工作原理和性能评估;3.嵌入式外围设备:存储器、输入输出接口、定时器等;4.嵌入式操作系统:嵌入式操作系统的原理、结构和常用操作系统;5.嵌入式系统设计方法:需求分析、系统架构设计、软件设计等;6.嵌入式系统开发流程:项目立项、系统设计、编程调试、测试等;7.嵌入式系统应用案例:常见嵌入式系统的应用案例分析。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解嵌入式系统的基本概念、原理和应用,使学生掌握相关知识;2.讨论法:学生针对嵌入式系统的某个主题进行讨论,提高学生的思考和表达能力;3.案例分析法:分析实际案例,使学生了解嵌入式系统在实际应用中的工作原理和设计方法;4.实验法:让学生动手搭建嵌入式系统,亲身体验嵌入式程序的编写和调试过程。

四、教学资源本课程的教学资源包括:1.教材:选用国内权威、实用的嵌入式系统教材;2.参考书:提供相关的嵌入式系统著作,供学生拓展阅读;3.多媒体资料:制作课件、教学视频等,丰富教学手段;4.实验设备:提供嵌入式系统实验平台,让学生动手实践。

嵌入式实习报告7篇

嵌入式实习报告7篇

嵌入式实习报告7篇嵌入式实习报告篇1蓝牙技术概述蓝牙(Bluetooth)是目前比较流行的一种短距离无线通讯技术,其主要目的就是要在全世界范围内建立一个短距离的无线通信标准。

设计者的初衷是用隐形的连接线代替线缆。

它取代目前多种电缆连接方案,通过统一的短程无线链路,在各信息设备之间可以穿过墙壁或公文包,实现方便快捷、灵活安全、低成本小功耗的话音和数据通信。

“蓝牙”技术的目的是使特定的移动电话、便携式电脑以及各种便携式通信设备的主机之间在近距离内实现无缝的资源共享。

一、实践目的了解处理器的发展掌握WinCE嵌入式系统开发方法和开发流程。

掌握WinCE嵌入式C#编程方法。

掌握WinCE嵌入式络通信技术。

掌握Bluetooth编码技术二、实践要求1. 了解WinCE操作系统的裁剪及定制;2. 设计蓝牙广播系统(包括服务器端和客户端);3.设计蓝牙文件传输系统(包括服务器端和客户端);4. 应用程序安装和部署。

三、实践内容(1)了解Wince平台了解处理器的发展,什么是嵌入系统,嵌入式系统的应用,以及窗体与控件的概念,掌握WinCE嵌入式C#编程方法,对实验平台有一定的认识,更进一步的认识蓝牙。

了解编写应用程序的流程,理解了Windows 窗体,学会了使用基本控件如标签、文本、按钮、列表框和组合框,掌握窗体的常用属性和方法。

(2)蓝牙搜索、浏览与发送,蓝牙设备列表,配对设备清空,删除。

四、原理介绍1.嵌入式系统:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

一般由硬件设备、嵌入式操作系统、嵌入式应用软件组成。

具有专用性、高效简洁性、高可靠和低能耗性、自身特殊性的特点。

嵌入式实习报告篇2此次设计我们采用以LM3S2100为微控制器,并通过硬件和软件两方面设计,结合6位LED数码管,放大整形电路,来实现频率计在嵌入式系统中的开发与应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

仲恺农业工程学院嵌入式课程设计报告基于Linux下mono平台的俄罗斯方块游戏学院:信息科学与技术学院班级:电子信息工程111班姓名:左林雄1梁亚琦0官镇洲1指导老师:肖明明前言众所周知,C#是在Microsoft推出的.NET语言,只在.NET 平台上运行,例如Win 9x﹑ME﹑NT﹑2000﹑XP和Win CE之类的操作系统。

但是,现在却有一个叫做Mono的项目,它的目标就是把.NET及其编程语言移植到非Windows平台上。

而C#是目前为止唯一被移植到非Windows平台的.NET语言。

在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库、编译器/解释器、运行环境。

库以类和方法(函数)的形式提供常用的例程,简化大型程序的编写。

.NET框架也不例外,包含了许多类库。

另外,把程序转换成可执行形式以及运行执行文件时,编译器和运行环境是必不可少的。

Mono软件包包含了.NET类库的一部分、一个C#编译器和.NET运行环境CLR(mon Language Runtime,公共语言运行时环境)。

Mono声称支持Linux、Solaris、Free BSD和MS Windows;除了Intel x86系列的CPU(486,各类Pentium等)之外,据说还要支持Sparc、PowerPC和StrongArm处理器。

设计概述:一.linux下mono的平台搭建过程1.构建编译环境2.安装libgdiplus、mono以及编译环境所需要的其它库文件3.安装Libgdiplus和Mono二.在Windows下游戏功能的实现1.游戏界面设计2.配置界面设计3.砖块样式界面设计三.设计心得项目介绍:本设计是基于跨平台的程序编译功能的实现基础上进行的,在实现功能之前,首先要测试实验平台的稳定性与可操作性。

因此品台的搭建对于功能的实现是必不可少的。

环境搭建过程:sudo apt-get install build-essentialsudo apt-get install automake autoconfsudo apt-get install bison gettext libtool libglib2.0-dev libfreetype6-dev libfontconfig-dev以上完成对mono源文件的编译安装。

我们应该知道要想实现程序的完整功能,仅有的编译器是不够的,因此在此基础之上我们还要安装一些实现编译过程的依赖:sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-devlibjpeg62-dev(或libgpeg-dev)安装过程:1、安装libgdipluscd libgdiplus-2.10./configure --prefix=/usrmakesudo make installcd ..2、安装Monocd mono-3.0.12./configure --prefix=/usrmakesudo make installcd ..平台测试:在Linux文本编辑器中输入下面的内容,把文件保存为HelloMono.cs:class HelloMono{public static void Main(string[ ] args){ System.Console.WriteLine("Hello Mono");}}执行下面的命令编译C#文件:mcs HelloMono.csmcs是Mono的C#命令行编译器。

与MS .NET SDK的csc编译器相似,mcs也有很多命令行选项。

上面的命令将生成可执行文件HelloMono.exe。

注意这个执行文件不是Linux执行文件,而是一个.NET 执行文件,或者说,这个文件的可执行代码形式是中间语言(IL,Intermediate Language)。

要运行这个执行文件,必须执行如下命令:mono HelloMono.exeLinux控制台上将显示出"Hello Mono"。

下面开始俄罗斯方块的功能实现:1.游戏界面总体效果图2.配置窗口总体效果3.砖块样式效果图代码(主要)实现过程:一.砖块样式配置bel控件(lblMode)点击“事件”,选择“Paint”Graphics gp=e.Graphics;gp.Clear(Color.Black);Pen p=new Pen(Color.White);for (int i=31;i<155;i=i+31)gp.DrawLine(p,1,i,155,i);for (int i=31;i<155;i=i+31)gp.DrawLine(p,i,1,i,155);SolidBrush s=new SolidBrush(blockColor); for (int x=0;x<5;x++){for(int y=0;y<5;y++){if(struArr[x,y]){gp.FillRectangle(s,31*x+1,31*y+1,30,30);}}}点击“事件”,选择“MouseClick”private bool[,] struArr=new bool[5,5];private Color blockColor=Color.Red;-------------------------------------------------------- if (e.Button!=MouseButtons.Left)return;int xPos,yPos;xPos=e.X/31;yPos=e.Y/31;struArr[xPos,yPos]=!struArr[xPos,yPos];bool b=struArr[xPos,yPos];Graphics gp=lblMode.CreateGraphics();SolidBrush s=new SolidBrush(b ? blockColor:Color.Black);gp.FillRectangle(s,31*xPos+1,31*yPos+1,30,30);gp.Dispose();添加ColorDialog控件添加label(lblColor)控件点击“事件”,选择“click”colorDialog1.ShowDialog();blockColor=colorDialog1.Color;lblColor.BackColor=colorDialog1.Color;lblMode.Invalidate();III.添加listView控件(lsvBlockSet)点击“事件”,选择“ItemSelectionChanged”if (e.IsSelected){blockColor=Color.FromArgb(int.Parse(e.Item.SubItems[1].Text)); lblColor.BackColor=blockColor;string s=e.Item.SubItems[0].Text;for(int i=0;i<s.Length;i++){struArr[i/5,i%5]=(s[i]=='1')?true:false;}lblMode.Invalidate();}IV.“Add”按钮(btnAdd)bool isEmpty=false;foreach (bool i in struArr){if(i){isEmpty=true;break;}}if (!isEmpty){MessageBox.Show("Patternis empty,pleaseclick onthe left side ofthe windowwith the mouseto drawa pattern!","Prompt form",MessageBoxButtons.OK,rmation);return;}StringBuilder sb=new StringBuilder(25);foreach (bool i in struArr){sb.Append(i?"1":"0");}string blockString=sb.ToString();foreach(ListViewItem item in lsvBlockSet.Items){if (item.SubItems[0].Text==blockString){MessageBox.Show("The pattern already exists!","Prompt window",MessageBoxButtons.OK,rmation);return;}}ListViewItem myItem=new ListViewItem();myItem=lsvBlockSet.Items.Add(blockString);myItem.SubItems.Add(Convert.ToString(blockColor.ToArgb()));V.“Delete”按钮(btnDel)if(lsvBlockSet.SelectedItems.Count==0){MessageBox.Show("Please select an item to delete in the right window!","Prompt window", MessageBoxButtons.OK,rmation);return;}lsvBlockSet.Items.Remove(lsvBlockSet.SelectedItems[0]);btnClear.PerformClick();VI.“Clear”(btnClear)for (int x=0;x<5;x++){for(int y=0;y<5;y++){struArr[x,y]=false;}}lblMode.Invalidate();VII.“Update”(btnUpdate)if(lsvBlockSet.SelectedItems.Count==0){MessageBox.Show("Please select an entry to be modified in the right window!","Prompt window", MessageBoxButtons.OK,rmation);return;}bool isEmpty=false;foreach (bool i in struArr){if(i){isEmpty=true;break;}}if (!isEmpty){MessageBox.Show("MessageBox.Show("Patternis empty,pleaseclick onthe left side ofthe windowwith the mouseto drawa pattern!","Prompt form",MessageBoxButtons.OK,rmation);return;}StringBuilder sb=new StringBuilder(25);foreach (bool i in struArr){sb.Append(i?"1":"0");}lsvBlockSet.SelectedItems[0].SubItems[0].Text=sb.ToString();lsvBlockSet.SelectedItems[0].SubItems[1].Text=Convert.ToString(blockColor.ToArgb());参数配置I.添加GroupBox1控件(gbKeySet)“键盘设置”i.拖入六个label控件ii.拖入六个TextBox控件(改名)全部选中,选择“事件”,选择“KeyDown”if((e.KeyValue>=33 && e.KeyValue<=36)||(e.KeyValue>=45 && e.KeyValue<=46)||(e.KeyValue>=48 && e.KeyValue<=57)||(e.KeyValue>=65 && e.KeyValue<=90)||(e.KeyValue>=96 && e.KeyValue<=107)||(e.KeyValue>=109 && e.KeyValue<=111)||(e.KeyValue>=186 && e.KeyValue<=192)||(e.KeyValue>=219 && e.KeyValue<=222)){foreach(Control c in gbKeySet.Controls){Control TempC=c as TextBox;if(TempC!=null &&((TextBox)TempC).Text!=""){if(((int)((TextBox)TempC).Tag)==e.KeyValue){((TextBox)TempC).Text="";((TextBox)TempC).Tag=Keys.None;}}}((TextBox)sender).Text=e.KeyCode.ToString();((TextBox)sender).Tag=(Keys)e.KeyValue;}II.添加GroupBox2控件(gbEnvironmentSet)“环境设置”i.拖入四个label控件ii.拖入三个TextBox控件(改名)一个label控件(lblBackColor)选择“事件”,选择“click”colorDialog1.ShowDialog();lblBackColor.BackColor=colorDialog1.Color;多个砖块信息类解决方案中添加InfoArr.cs类各个方块信息类private ArrayList info = new ArrayList();private int _length=0;public int Length//长度{get{return _length;}}public BlockInfo this[int index]//砖块信息{get{return (BlockInfo)info[index];}}public string this[string id]//{set{if(value ==""){return;}for(int i=0;i<info.Count;i++){if(((BlockInfo)info[i]).GetIdStr()==id){try{((BlockInfo)info[i]).BColor=Color.FromArgb(Convert.ToInt32(value));}catch(System.FormatException){MessageBox.Show("Brick style information is not legal!?Please delete BlockSet.xml file and restart the program","Error message!",MessageBoxButtons.OK,MessageBoxIcon.Error);}}}} }二:新建配置类I.私有变量属性#region 私有变量相应的属性public Keys DownKey//向下方向键{get{return _downKey;}set{_downKey=value;}}public Keys DropKey//直接放下键{get{return _dropKey;}set{_dropKey=value;}}public Keys MoveLeftKey//左移键{get{return _moveLeftKey;}set{_moveLeftKey=value;}}public Keys MoveRightKey//右移键{get{return _moveRightKey;}set{_moveRightKey=value;}}public Keys DeasilRotateKey//顺时针旋转{get{return _deasilRotateKey;}set{_deasilRotateKey=value;}}public Keys ContraRotateKey//逆时针旋转{get{return _contraRotateKey;}set{_contraRotateKey=value;}}Ⅱ.把信息保存为xml文件public void SaveToXmlFile() //把信息保存为xml文件{XmlDocument doc =new XmlDocument();doc.LoadXml("<BlockSet></BlockSet>");XmlNode root=doc.SelectSingleNode("BlockSet");for(int i=0;i<info.Length;i++){XmlElement xelType=doc.CreateElement("Type"); XmlElement xelID=doc.CreateElement("ID");xelID.InnerText=((BlockInfo)info[i]).GetIdStr(); xelType.AppendChild(xelID);XmlElement xelColor=doc.CreateElement("Color"); xelColor.InnerText=((BlockInfo)info[i]).GetColorStr(); xelType.AppendChild(xelColor);root.AppendChild(xelType);}三.新建方块类解决方案中添加Block.cs类protected Point[] structArr;protected int _xPos;protected int _yPos;protected Color _blockColor;protected Color disapperColor;protected int rectPix;public Block(){}public Block(Point[] sa, Color bColor, Color dColor, int pix) {_blockColor=bColor;disapperColor=dColor;rectPix=pix;structArr=sa;}public Point this[int index]//声明一个坐标索引{get{return structArr[index];}}public int Length{get{return structArr.Length;}}--------------------------------public void DeasilRotate()//顺时针旋转{int temp;for(int i=0;i<structArr.Length;i++){temp=structArr[i].X;structArr[i].X=structArr[i].Y;structArr[i].Y=-temp;}public void ContraRotate()//逆时针旋转{int temp;for(int i=0;i<structArr.Length;i++){temp=structArr[i].X;structArr[i].X=-structArr[i].Y;structArr[i].Y=temp;}}private Rectangle PointToRect(Point p)//坐标点转化为画布坐标值{return new Rectangle((_xPos + p.X)*rectPix+1,(_yPos-p.Y)*rectPix+1,rectPix-2,rectPix-2);}public virtual void Paint(Graphics gp)//制定画板下绘制砖块{SolidBrush sb=new SolidBrush(_blockColor);foreach(Point p in structArr){lock(gp){gp.FillRectangle(sb,PointToRect(p));}}}public void erase(Graphics gp)//擦除矩形{SolidBrush sb=new SolidBrush(disapperColor);foreach(Point p in structArr){lock(gp){gp.FillRectangle(sb,PointToRect(p))}}}四.游戏运行窗体的设计解决方案中添加FrmTeris窗体I.PictureBox控件(pbRun)点击“事件”,选择“paint”,调用palette中相应的方法bel控件(lblReady)点击“事件”,选择“paint”,调用palette中相应的方法III.添加Panel控件IV.“Start”按钮(btnStart)if(p !=null){p.Close();}p=new Palette(paletteWidth,paletteHeight,rectPix,paletteColor, Graphics.FromHwnd(pbRun.Handle),Graphics.FromHwnd(lblReady.Handle));p.Start();VII.“Pause”按钮(btnPause)if(p==null){return;}if(btnPause.Text=="pause"){p.Pause();btnPause.Text="continue";}else{p.EndPause();btnPause.Text="pause";}VIII.“Config”按钮(btnConfig)if(btnPause.Text==""){btnPause.PerformClick(); }using(FrmConfig frmConfig=new FrmConfig()) {frmConfig.ShowDialog();}五.将windows下的程序移植到linux下运行运行结果截图:设计心得:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

相关文档
最新文档