基于Windows CE的C#打字游戏_第1页
基于Windows CE的C#打字游戏_第2页
基于Windows CE的C#打字游戏_第3页
基于Windows CE的C#打字游戏_第4页
基于Windows CE的C#打字游戏_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XX大学信息科学技术学院?嵌入式系统?大作业设计报告工程名称基于Windows CE的C#打字游戏 TOC o 1-3 h z u HYPERLINK l _Toc297313952一、设计任务 PAGEREF _Toc297313952 h 1HYPERLINK l _Toc297313953二、设计原理 PAGEREF _Toc297313953 h 2HYPERLINK l _Toc2973139541、软件设计 PAGEREF _Toc297313954 h 2HYPERLINK l _Toc2973139552、硬件平台 PAGEREF _Toc297313955 h 2HYPERL

2、INK l _Toc297313956三、设计实现 PAGEREF _Toc297313956 h 2HYPERLINK l _Toc2973139571、软件程序编写 PAGEREF _Toc297313957 h 2HYPERLINK l _Toc2973139582、 硬件平台搭建 PAGEREF _Toc297313958 h 6HYPERLINK l _Toc297313959四、程序测试与分析 PAGEREF _Toc297313959 h 13HYPERLINK l _Toc297313960五、运行结果 PAGEREF _Toc297313960 h 14HYPERLINK l

3、 _Toc297313961六、附录 PAGEREF _Toc297313961 h 14HYPERLINK l _Toc2973139621、参考资料 PAGEREF _Toc297313962 h 14HYPERLINK l _Toc2973139632、遇到的问题与解决方法 PAGEREF _Toc297313963 h 14HYPERLINK l _Toc2973139643、程序清单 PAGEREF _Toc297313964 h 15HYPERLINK l _Toc2973139654.课程体会: PAGEREF _Toc297313965 h 21姓名: 学号:班级:日期:201

4、1年6月28日一、设计任务本课程大作业的设计任务是利用Visual Studio 2005编写一个可运行在操作系统下的C#应用程序。我们所设计的应用程序是一个简单的字母打字游戏,可以实现打字游戏的开始,暂停,字符的统计,正确字符的统计和退出等根本功能。实现在操作系统下运行。二、设计原理 1、软件设计 利用Visual Studio 2005集成开发环境和实验室的嵌入式实验箱,即软硬件结合,利用控件创立窗体、开始/暂停游戏按钮和停止游戏按钮等C#控件,并编辑添加代码以实现相应的功能,最后完成C#应用程序的设计,并在Visual Studio 2005中进行的仿真测试。最后在实验室的嵌入式实验箱上

5、成功运行的打字游戏。软件集成还包括:的的操作系统文件,引导文件,烧制flash等软件2、硬件平台通过建立PC机与实验室嵌入式实验箱间的连接下载已定制好的操作系统镜像启动操作系统。必要的USB连接线,和其他硬件辅助设备网线,触摸屏笔等。三、设计实现1、软件程序编写第一步:启动Microsoft Visual Studio 2005,在Visual Studio IDE中单击File | New | Projects 菜单,在弹出的对话框左边的Project types工程类型中展开Other Languages | Visual C# | Smart Device, 选择,在对话框右边的Temp

6、lates模板中选择Device Application;在对话框的下面的Name保持默认名字以及工程所保存的位置E:,单击OK按钮。第二步:在窗体上分别添加2个label和一个按钮,按钮上的文字为开始游戏。第三步:在窗体上再添加其他的控件,如标签,字母软键盘,开始暂停按钮,退出游戏按钮和面板,如下图:第四步:将字母软件盘的字母按钮控件的name属性依次改为“A,B,C。Z。然后添加timer控件,如下图:第五步:然后双击开始游戏按钮进入到代码编辑窗体,进行代码编辑如下图:第五步: 保存所编辑的代码和修改的内容,然后在Visual Studio菜单中选择Build或选择Build Soluti

7、on 菜单,编译测试工程。所选的是在本地计算机上的仿真器运行和测试,如下图:第六步:点击部署按钮,然后点击开始游戏按钮进行本机上的调试,如下图:第七步:调试完毕之后,在实验箱上再进行调试。利用USB线将目标平台与PC机相连,连通ActiveSync;第八步:按F5,在弹出的Deploy对话框的Device列表框中选择xsbase270 ARMV4I Device,然后按“Deploy按钮,测试程序自动下载到目标平台上运行。硬件平台搭建首先,通过网线连接PC机和实验箱,修改PC机IP地址使其与实验箱设备处于同一网段,方便以后的下载。在PC机上新建超级终端,测试PC机与实验箱是否可以连通。可以连通

8、的话,那么启动了操作系统,如下列图: 如果没有出现以上界面,那么说明还没烧写好以及下载定制好的。需要按照以下步骤来下载并启动WinCE操作系统。第一步:把Training工程中的“0”复制到jflash工具目录下:例如工程所在目录为“E:WINCE600OSDesignsTraningTraningRelDirXSBase270_ARMV4I_Release,jflash工具的目录为“D:Jflash_Pxa2700G_P30”。 XSbase270_ARMV4I_Release 目录 Jflash烧写目录第二步:在jflash工具目录双击 “,翻开命令行窗口。 Jflash 目录 cmd 命

9、令行第三步:翻开目标平台电源,在命令行窗口输入“0”,下载Bootloader引导程序,在进行选择时,请选择“N。 Jflash 烧写过程第四步:最后在命令窗口出现“Verification successful!时,说明下载已成功。如果出现“verify error at address ,那么需要断开目标平台电源,重复第2、第3步。 Jflash 烧写完成选项第五步:从“开始-所有程序-附件-通讯-超级终端新建一个超级终端链接。【图32】超级终端连接描述第六步:选择连接串口,并将串口波特率设为:38400,数据流选择“无,按“确定按钮 g 超级终端设置选项超级终端成功设置菜单第七步:确定一

10、下PC与目标平台的串口接口线已接上,然后翻开平台电源开关,Bootloader程序时,按空格键进入Eboot的菜单项选择项中。 超级终端显示Boot Loader 启动菜单项选择项第八步:启动Visual Studio 2005,翻开实验3-2编译好的Training工程,在Target-connectivity Option中翻开映象的下载配置选项。 Connectivity Options 菜单项选择项第九步:在Download与Transport 选项都选择“Ethernet.在Debugger中选择“None. Target Device Connectivity Options 选项

11、第十步:点击Download选择右边的“Settings,让PB来检测设备名。 Ethernet download Settings 设置选项第十一步:用网线连通PC和目标平台,将PC和目标平台的网络连接设置在同一网段,根据超级终端的Eboot菜单提示,选取“D项,即按键盘上的D键。 目标平台发送播送包选项第十二步:在Ethernet Download Settings中,就可以自动检测到目标设备名,点击“Active Devices中的设备名就可以把设备名添加到“Device Boot Name中去。然后点击“OK,再点“Apply按钮,然后按“Close按钮关闭“Target Device

12、 connectivity Options窗口. 检测连接选项第十三步:从Visual Studio2005的Target-Attach Device菜单中,连接目标平台。 Attach device 菜单项选择项第十四步:在弹出的下载窗口就可以看到NK下载的进度。 NK下载过程第十五步:在超级终端上,可以看到写flash的进度。 Flash撤除选项第十六步:操作系统映像下载完毕后,操作系统自动启动。Windows CE 启动完成启动界面四、程序测试与分析 经过在本地的模拟仿真运行和测试,然后进行认真的分析和总结,总结出了一下几点。1.总的来说,进过在本机上仿真测试之后,程序在仿真模拟器上运行

13、一切正常,根本上没有什么bug。2.进过前期的在仿真器上的测试也发现了不少的问题,不过在我们小组的讨论和分析之下,对程序进行测试之后,修正了不少的问题。3.在真正的实验箱上运行本程序。在实验室下运行改程序,硬件和软件配置都配好后,运行程序时有一点点问题,通过分析得出可能是试验箱的API函数可能没有,所以进行了少许修改之后,就可以成功的运行在实验箱上的上。五、运行结果经过在Visual Studio2005环境中测试和排错后,应用程序没有出现错误。PC机和实验箱建立连接后,在VS2005中启动Debug按钮,选择相应设置,C#应用程序顺利运行在Windows CE系统上。 六、附录1、参考资料?

14、嵌入式系统设计与开发?马文华主编 科学出版社2、遇到的问题与解决方法 进过实验测试编程,在这次大作业实际中遇到了几个问题,小组进过讨论也总结出了一些解决的方法和经验。主要有以下三点:1.遇到的问题:对于字母所下落的位置。因为是调用随机函数,所以有时难免很超出窗体,造成所下落的字母字符有时候看不到。解决方法:经过测试和认真的研究之后改正程序代码:label1.Location = new Point(150 + rnd.Next(250), 0);/重新获的一个新的位置 这个是进过测试改正的随机范围都在可见的窗体里。解决问题的体会:通过发现问题,然后解决问题的实验过程,我们小组从中了解到及时发现

15、程序问题是很重要的,改正程序之后,又可能会引入新的错误,所以做好改正记录是编写程序必须的。2.遇到的问题:对于软键盘所调用的函数.之前是每按下一个按钮软键盘,那么写一段与之对应的代码,后来觉察代码冗余太多,这不是写程序的好习惯。解决的方法:进过我们小组分析之后决定采用公共函数调用,改正后的代码如下: public void btnclick(String s) String msg = s; if (label1.Text = msg) label1.Visible = false;/如果所按的软键盘的字母和label的字母相同,那么把字母消掉 sho();/调用重新涮新字母的函数 num+;

16、/字母总数+1 n+;/字母正确总数也+1 else if (label2.Text = msg) label2.Visible = false; sho1(); num+; n+; 解决问题的体会:通过上面的问题,我们小组从中体会出在编好程序的根底上,我们要在技术上精益求精,找出更好的算法来解决问题,才能到达知识水平的提高。所以无论在以后的编程还是学习上我们都要做到精益求精。更上一层楼。3.遇到的问题:对于暂停游戏按钮的设计.之前设计的时候好似是搞反了,就是按下按钮字符也不停,而且按钮显示的字也相反了。解决的方法:经过分析觉察之后是编程不细心造成的。所以编程细心很重要。解决问题的体会:经过这

17、次实验我们小组3、程序清单using System;usingeric;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace 打字 public partial class Form1 : Form int n = 0;/字母总数 int num = 0;/正确的字母数 public Form1() InitializeComponent(); /label1的字母由上到下移动的函数 public void

18、 move() label1.Top=label1.Top+10; if(label1.Topthis.Height-80) Random rnd = new Random();/随机函数,产生随机数 label1.Text = GetUpperCase(rnd);/随机获得一个大写字母 label1.Top=0; label1.Location = new Point(50 + rnd.Next(100), 0);/重新获得一个新的位置 num+;/总数+1ng(); /label2的字母由上到下移动的函数 public void move1() label2.Top = label2.To

19、p + 10; if (label2.Top this.Height-80) Random rnd1 = new Random();/随机函数,产生随机数 label2.Text = GetUpperCase(rnd1);/随机获得一个大写字母 label2.Top = 0; /label2.Location = new Point(50 + rnd1.Next(100), 0); num+; label7.Text = num.ToString(); /调用时间函数 private void timer1_Tick(object sender, EventArgs e) move(); mo

20、ve1(); /随机产生大写字母函数 public string GetUpperCase(Random rnd) / A-Z ASCII值 65-90 int i = rnd.Next(65, 91); char c = (char)i; return c.ToString(); /当所按按钮和label1的所下的字母相同时,调用的函数 public void sho() Random rnd = new Random(); label1.Text = GetUpperCase(rnd);/随机获得一个大写字母 label1.Visible = true; label1.Location =

21、 new Point(150 + rnd.Next(250), 0);/重新获的一个新的位置 /当所按按钮和label2的所下的字母相同时,调用的函数 public void sho1() Random rnd1 = new Random(); label2.Text = GetUpperCase(rnd1);/随机获得一个大写字母 label2.Visible = true; label2.Location = new Point(150 + rnd1.Next(250, 470), 0);/重新获的一个新的位置 /按下开始游戏的按钮调用的函数 private void button1_Cl

22、ick(object sender, EventArgs e) label1.Visible = true; label2.Visible = true; timer1.Enabled = true;/设置时间函数为真 button1.Visible = false; timer1.Interval =500; /按下退出游戏按钮的函数 private void button29_Click(object sender, EventArgs e) Application.Exit(); /按下暂停游戏按钮的函数 private void button28_Click(object sender

23、, EventArgs e) if (button28.Text = 暂停游戏) button28.Text = 开始游戏; /label1.Visible = true; /label2.Visible = true; timer1.Enabled = false; else button28.Text = 暂停游戏; timer1.Enabled = true; /窗体加载时调用的函数 private void Form1_Load(object sender, EventArgs e) Random rnd = new Random(); / label1.Font = new Font

24、(宋体, 50); / label2.Font = new Font(宋体, 50); label1.Visible = false; label2.Visible = false; label1.Text = GetUpperCase(rnd);/label1随机获的一个大写字母 label2.Text = GetUpperCase(rnd);/label2随机获的一个大写字母 /按下字母B按钮时调用的函数 private void B_btn_Click(object sender, EventArgs e) btnclick(B_btn.Text); private void C_btn

25、_Click(object sender, EventArgs e) btnclick(C_btn.Text); private void D_btn_Click(object sender, EventArgs e) btnclick(D_btn.Text); private void E_btn_Click(object sender, EventArgs e) btnclick(E_btn.Text); private void F_btn_Click(object sender, EventArgs e) btnclick(F_btn.Text); private void G_btn

26、_Click(object sender, EventArgs e) btnclick(G_btn.Text); private void H_btn_Click(object sender, EventArgs e) btnclick(H_btn.Text); private void I_btn_Click(object sender, EventArgs e) btnclick(I_btn.Text); private void J_btn_Click(object sender, EventArgs e) btnclick(J_btn.Text); private void K_btn

27、_Click(object sender, EventArgs e) btnclick(K_btn.Text); private void L_btn_Click(object sender, EventArgs e) btnclick(L_btn.Text); private void M_btn_Click(object sender, EventArgs e) btnclick(M_btn.Text); private void N_btn_Click(object sender, EventArgs e) btnclick(N_btn.Text); private void O_btn

28、_Click(object sender, EventArgs e) btnclick(O_btn.Text); private void P_btn_Click(object sender, EventArgs e) btnclick(P_btn.Text); private void Q_btn_Click(object sender, EventArgs e) btnclick(Q_btn.Text); private void R_btn_Click(object sender, EventArgs e) btnclick(R_btn.Text); private void S_btn

29、_Click(object sender, EventArgs e) btnclick(S_btn.Text); private void T_btn_Click(object sender, EventArgs e) btnclick(T_btn.Text); private void U_btn_Click(object sender, EventArgs e) btnclick(U_btn.Text); private void V_btn_Click(object sender, EventArgs e) btnclick(V_btn.Text); private void W_btn_Click(object

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论