正版全新  C#项目开发实战密码 俄罗斯方块游戏多媒体学习人事管理 c#程序设计教材 c#编程 c语pdf下载pdf下载

正版全新 C#项目开发实战密码 俄罗斯方块游戏多媒体学习人事管理 c#程序设计教材 c#编程 c语百度网盘pdf下载

作者:
简介:本篇主要提供正版全新 C#项目开发实战密码 俄罗斯方块游戏多媒体学习人事管理 c#程序设计教材 c#编程 c语pdf下载
出版社:
出版时间:2015-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息

书名:C项目开发实 密码

定价:69.8

作者:扶松柏

出版社:清 大学出版社

出版日期:2015-08-01

ISBN:9787302403272

字数:860000

页码:

版次:1

装帧: 装

开本:16开

商品重量:0.4kg

编辑


内容提要


C是当今使 为 繁的编程语言 一,一直在开发 域中占据重要的 位。本书 过12个综合案例的实现过程,详细讲 C在实践项目中的综合运 过程,这些项目 作者的学生时 ,到项目经 结束,一直贯穿 作者重要的开发时期。

1章讲 一个 块 的具 实现流程; 2章讲 多媒 学习社区 统的具 实现流程; 3章讲 大 科技人 管 统的具 实现流程; 4章讲 在 留言簿 统的具 实现流程; 5章讲 浪漫满屋 信录 统的具 实现流程; 6章讲 在 点歌 统的具 实现流程; 7章讲 在 商城 统的具 实现流程; 8章讲 一个企 交互 统的具 实现流程; 9章讲 一个餐饮管 统的具 实现流程; 10章讲 一个短信*发 统的具 实现流程。 11章讲 市 销存 统的具 实现流程; 12章讲 家庭 监控 统的具 实现流程。

在具 讲 每个实例时,都遵循项目的 来展开, 接到项目到具 开发,直到后的调 发布。内容循序渐 ,并穿*学习技巧 职场生存法则,引 读者全 握C。

本书不但适合C初学者阅读,也可供 C基础的读者学习,亦可作为 造诣的程序员的参 书。

目录


作者介绍


文摘



  
1章   块
  
   块 是一 经 靡的 机 机 产品,它造就过 人惊奇的商 价值,影响过一 产 链。
  这 初是由苏 的 作人Alex Pa*i*ov 作的,它看似简单,却变 穷, 人玩 来 瘾。
  本章 介绍如何在Visual Studio 2013环境下开发一 块 , 而使读者 够迅速了 使 Visual Studio 2013 成开发环境创建小型、简单 的 法。
  在开发过程中,读者 可以 验到C所具 的 大 ,并熟悉 可 的编程 式。
  
  
  
  
  001 C的 界
  002.NET Framework简介
  003几个重要的概念
  004C的 位
  005C与Java、C++的关
  006C的基本语法
  007C的数据类型
  008基本类型
  009给变量命名
  010变量的声 赋值

1.1  赢 在 划
      : \ 1章\赢在 划.avi
  
  当一名程序员 实习生开始 ,依次经历码 、软件工程师、架 师、CTO等职位的磨砺后,蓦然回首,会发现自己的成 并非偶然!如果需要 结出自己的成 秘诀,那么秘诀就是“ 别人更加细致 工作”。
  在众多应届毕 生中,我们要 胜出,就要坦然 对职场竞争,作为刚刚步入职场的程序员,应该 细节 为自己的成 备,这里的细节就是指职 划。良 的职 划决定了程序员以后的发展 向 具 轨迹,沿着 划的 迹 的人, 成 率要 高 那些 似“ 头苍蝇”的迷茫者。
1.1.1  赢在 点——程序员的职 划
   常来 ,程序开发人员的职 发展 如下所 的几个 择:
* 注 技*,成为技* 家。
* 转型到技*型销售、技* 持等。
* 着技*的成长, 技*性管 向高 管 。
   述三个 向是都 看得很清楚的,并且这三个 向都是以技*为基础的。在扎实的技*基础 ,如果 较 的抽象设 力,而且又 算 注 技*开发,则 架 师是一个不错的 择;如果待人接 力 出,善 跟 户 交 ,则可以转型到销售部 , 技* 持;如果性 更适合 管 , 商表现很 出,则技*管 岗位乃至高 管 岗位应该是下一步的 向。
  所以,对 已经工作 年以 的程序员来 ,一般可以 几 基本的职 择:技* 家、软件架 师、实施顾 或销售。并且, 是C、C++、C、Java、.NET还是数据库 域,都要首先成为 家,然后才可 继续发展为架 师。尽管架 师的职位待遇优 ,可以工作一辈子,但这 工作职位是很 限的,目 在我国的IT 中,对架 师的条件要求 较苛刻,且并不是很合 的,与 的现状相 ,是 差距的。
1.1.2  赢在项目开发伊始—— 项目分析
  很多开发者, 别是一些初 开发者, 程序时, 是在看到 需求后,就 即投入到 码编 工作中,需要什么 ,就编 函数去一一实现。
  按 这 习惯 ,在后期调 时,却 会出现这样或那样的,可 需要返工,重新 大量的修改。
  幸运的是,初学者所接触到的,一般都是小项目,修改的工作量也不是很大。
  但是,如果在大型项目中,要对几千 码返回修改,则是一件很恐怖的 !
  可 ,提 项目分析 划是非常重要的。
  一个软件项目的开发 要分为5个阶段,分别是需求分析阶段、设 阶段、编码阶段、测 阶段 维护阶段。这里,需求分析阶段所得到的结果,是软件项目开发中 他4个阶段的条件。 以往的经验来看,需求分析中的一个小小的偏差,就可 导致整个项目 法达到 期的效果,或者 ,可 导致终开发出的产品不是 户所需要的。
  软件需求分析的任 ,不是确定 统是怎样 成工作的,而是确定 统 须 成 些工作,也就是对目标 统提出 整、 确、清晰、具 的要求。它所 的工作是 入描述软件的 性 ,确定软件设 的限 ,以及软件 他 统的接 细节,定义软件的 他 效性要求。
  我们可以 软件需求分析的过程具 分为4个阶段,分别是对 题的识别、分析与综合、 定 评审。
1. 对 题的识别
  对 题的识别是指 统分析人员研究可 性分析报告 软件项目实施 划,确定目标 统的综合要求,并提出这些需求实现的条件,以及需要达到的标 。这些需求 要分为 性需求 非 性需求 ,具 如下。
  (1) 需求:列举出所开发的软件在 应具备什么。
  (2)性 需求:给出所开发软件的技*性 指标,如存储容量限 、运 时间限 、 全保密性要求等。
  (3)环境需求:软件 统运 时所处环境的要求。如硬件 的机型、 部设备、数据 信接 ;软件 的 统软件( 括 作 统)、网络软件、数据库管 统;使 的部 、 作人员的技** 等。
  (4)可靠性需求:对所开发的软件在投入运 后不发生故障的概率按实际的运 环境提出要求。所以对 重要的软件,或是运 失效会造成 重后果的软件,应提出较高的可靠性要求。
  (5) 全保密要求:应当在这 恰当 出 定,对所开发的软件给予 殊的设 ,使 在运 中的 全保密性 得到 要的保证。
  (6) 户界 需求:为 户界 细致 定应该达到的要求。
  (7) 源使 需求:开发的软件在运 时 开发时所需要的各 源。
  (8) 软件成本消耗 开发 需求:在软件项目 项后,要 据合 定,对软件开发的 各步骤的费 提出要求,作为开发管 的依据。
  (9) 先估 以后 统可 达到的目标,这样,可以 较容 对 统 要的补充 修改。 了这些 需的需求, 题识别的另一个工作是建 分析所需要的 信途径,以保证 顺利 对 题 分析。
2. 分析与综合
  分析与综合的目标,是给出目标 统的详细逻辑 型。在此步骤中,分析 综合工作需 复 。
3. 定
  需要编 需求分析文档,这 文档又称为软件需求 书。 了编 软件需求 书 ,还要 定数据要求 书,以及编 初步的 户 册。

4. 评审
  需求分析评审,是指在需求分析的后一步,对 统 的 确性、 整性 清晰性以及 他需求给予评价。
1.2   一个项目
      : \ 1章\ 一个项目.avi
  
  在 一个项目 ,要 思 划工作,并 据需要 定开发流程。本项目的开发流程如图1-1所 。

图1-1  本项目的开发流程
  对 初次开发 整软件项目的程序员来 ,开发的 一个项目十分重要。在开发伊始,可 会信 不 。此时,就需要建 充分的自信 。
  作为一名程序员, 对项目时,我们要仔细分析, 法尝 , 法去实现,这样才 步,才 找到自己的不 。
1.3   描 述
      : \ 1章\ 描述.avi
  
  在程序员开发一个应 统 ,需要弄清这个应 统的使 过程 的具 。几乎所 的程序员都会知 这一点,但是绝大多数开发者都对此不重 ,认为 基本、 简单 所当然。
  在此我们提 开发人员,要重 市场调研工作。因为市场的发展是瞬息万变的,一 间可 会诞生很多的新奇 的应 。
  所以,要 更 块 项目的 分析工作,需要 这 玩几次,全 了 块 的具 玩法。
  为此,作者 网 下载了一 块 ,并详细 了 玩。
   界 效果如图1-2所 。很 丽,是不是?我们 取 , 个简单的。
   据 块 的 则 要求,可以 结出 块 的基本 块。当然,因为 块 是一 在市 中流 多年的 ,所以 的基本玩法 大家都耳熟 详。这就 利 在项目 划伊始 玩法 划设 。显然,这是一个 较“庞大”的工程,相关的要点 在接下来的内容中 讲 。

图1-2  某 块 的界
  (1)由软件项目的开发流程,可以 出一个简单的项目 划书,整个 划书分为如下 个部分:
* 统需求分析。
* 结 划。
  (2) 块 项目的具 开发流程如图1-3所 。

图1-3   块 项目的具 开发流程
* 分析:分析整个 统所需要的 。
* 结 划: 划 统中所需要的 块。
* 设 :分析 统处 流程,探 统核 块的运作。
* 数据结 :设 统中需要的数据结 。
* 划函数: 先 划 统中需要的 函数。
* 具 编码:编 统的具 实现 码。

1.3.1   块分析
  本项目实例的 要 就是控 的运 ,实现 的 整过程。具 来 , 要 括如下 块。
  (1) 运 界 :供 户在可 下控 。
  (2) 控 菜单:可以控 的开始、 出 别 择。
  (3) 设置菜单:可以设置 的显 样式,并提供 助等信息。
1.3.2   的 块结
   的 块结 如图1-4所 。

图1-4   的 块结
1.3.3   的运 流程
  具 的运 流程如图1-5所 。

图1-5  具 的运 流程
  

1.4  搭建开发
      : \ 1章\搭建开发 .avi
  
  一 的开发工具 够决定整个项目 展的顺利性。但是长久以来,我们一直很困惑,因为Visual Studio .NET已经推出 几个版本,市 中流 的是Visual Studio 2010,而当 新的版本是Visual Studio 2013。
  工具的不断更新虽然提升了开发效 ,但也提高了学习成本。本项目 使 Visual Studio 2013工具开发,这样可以 验Visual Studio 2013的新 。
1.4.1   装Visual Studio 2013
  在 装Visual Studio 2013 ,需要先 确如下硬件要求:
* 酷睿II 2.0GHz以 的CPU。
* 至少应 2GB的RAM内存, 中1GB 维持 作 统运 。
* 至少10GB的硬盘 间。
  Visual Studio 2013的具 装步骤如下所 。
  (1) 装盘放入 驱,或双击存储在硬盘内的 装文件autorun.exe, 出“开始 装”界 ,如图1-6所 。
  (2)在出现的“ 装路径”界 中 择 装路径,并勾 “ 意 装条 ” 项,单击“下一步”按钮, 入 装 始页界 ,在这里 择 要 装的 ,如图1-7所 。在此建议 中,避免以后 装时遇到不可 知的 烦。

图1-6  “开始 装”界 图1-7   择 装的
  (3)单击“ 装”按钮,出现 装 界 ,开始 装,如图1-8所 。
  (4) 装 成后,出现“重启”界 ,在该界 中单击“ 即重新启*”按钮。
  (5)重启后, 会继续 装, 成后, 成所 的 装工作,如图1-9所 。

图1-8   装 界 图1-9   装成
  (6) 成 装后,可以 “开始”菜单中启*Visual Studio 2013,如图1-10所 。

图1-10  启*Visual Studio 2013
   开 装后的Visual Studio 2013时, 会 出“ 择默认环境设置”对 框,如图1-11所 。本书中 C开发ASP.NET程序,所以 择“Visual C开发设置” 项。
  然后单击“启*Visual Studio”按钮,开始加载 户环境设置,如图1-12所 。

图1-11  “ 择默认环境设置”对 框图1-12  加载 户环境设置
   置 成后, 来到Visual Studio 2013的 成开发界 ,如图1-13所 。

图1-13  Visual Studio 2013默认的 成开发界
1.4.2   划项目文件
   装Visual Studio 2013 后,发现 以往版本的界 看了,具 增 的 还得在后 的使 中才 会到。接下来,需要新建一个名为“you”的窗 项目文件。并新建项目中需要的程序文件,在VS 源管 中的效果如图1-14所 。

图1-14  实例中 源管 的效果
  各个 成文件的具 如下。
* 文件Form1.cs:是项目的窗 文件,项目运 后, 调 各窗 素的对应 性来显 窗 ,并且设置各控件的对应 件处 程序。
* 法定义文件you.cs: 是使 C设 项目所需要的各 法,当 他文件需要时,只需调 法的文件名即可。
* 文件Program.cs:是整个项目的入 文件。
* 文件Form1.Designer.cs:设置窗 各控件 件的 性。
  历时 ,确定 了整个项目的 块, 了整 划,并 开发工具开始开发了。这几 会到 设 是一个项目的开始,也是后续工作得以顺利 的 提。所以在此阶段应当是一丝不苟的, 虑到影响因素,尽量为后续工作 坚实的基础。这样看似 的工作使 了较多的时间,但实际 是节 了后 的时间。 结 毕 后,决定 点休息,为接下来的界 设 养 蓄锐。
1.5  界 设
      : \ 1章\界 设 .avi
  
  界 设 是实现窗 项目的 一个步骤,需要在Visual Studio 2013窗 中*入布 控件。 统窗 界 是项目运 后显 的界 ,也是 的运 界 , 户可以在此窗 实现对 的控 。
  使 Visual Studio 2013可以轻松 实现对 窗 界 的设 。在界 设 的过程中,需要遵循软件 户界 的设 原则。
  软件 户界 (Software User Interface)是指软件 户交流的 、部件 程序等。软件界 的设 ,既要 创意以达到 引眼球的目的,又要符合图形 版 设 的相关原 。
   常来讲,软件 户界 的设 应遵循以下几个基本原则。
  (1) 向 户(User-oriented)
  设 软件首先要 确到底谁是使 者,要 在 户的 点 场 来设 软件。要 到这一点, 须要与 户 沟 ,了 他们的需求、目标、期望 偏 等。界 的设 者要清楚, 户 间差别很大,他们的 力各 不 。另 , 户使 的 算机机 置也是千差万别的, 括显 、声 、内存、 作 统等都可 不 。设 者如果忽 了这些差别,设 出的程序在不 机 的表现就会 较混 。
  (2)KISS(Keep It Simple and Stupid)
  KISS原则就是Keep It Sample and Stupid(简单 快),简洁 作是设 的重要的原则。毕竟,软件建设出来是为普 人*服 的,没 要在界 设置过多的 作。该原则一般的要求是减少大幅图 * 的使 ,确保 作尽量简单,并且 确的 作提 ,软件所 的内容 服 都在显眼处向 户 出 等。
  (3)布 控
  在界 布 ,很多设 者重 不够,界 设 得过 板。如果界 布 凌 ,堆砌了大量的信息,就会 扰 常使 。
  (4) 的搭 文字的可阅读性
  颜 是影响界 的重要因素,不 的颜 对人的 觉 不 的影响,例如, 橙 使人 奋 跳加快, 使人 到阳 ,是一 快活的颜 , 显得 较庄重。
  为 便阅读软件 的信息,可以参 报纸的编 式, 软件内容分栏设 。
  另一 够提高文字可读性的因素是所 择的字 , 的字 (Arial、Courier New、Garamond、Times New Ro*n、中文宋 等) 阅读,适合 文。 殊字 标题效果较 ,但是不适合 文。如果在整个界 中使 很多 殊字 (如 Cloister、Gothic、Script、Westminster、 文 云、 文 楷),则人们阅读 来 觉会很糟糕,会使阅读颇为费力,眼睛很快就会疲劳,不得不转移到 他界 。
  (5) 谐一致性
   过对软件的各 素(颜 、字 、图形、 白等)使 的 ,使得设 良 的界 看 来显得 谐。
  或者 ,软件的众多单 界 应该看 来像一个整 。
  软件设 要保持一致性,这是很重要的一点。
  一致性的结 设 可以让浏览者对软件的形象 刻的 忆,一致的导 设 可以让浏览者迅速而又 效 入软件中自己所需要的部分,一致的 作设 可以让浏览者快速学会在整个软件中的各 作。如果 坏这一原则,就会误导浏览者,并且让整个软件显得 章,给人留下不良的印象。
  (6)个性
  符合网络文
  企 软件不 传统的企 商 活*,要符合Inter网络文 的要求。整个互 网的文 是一 休闲的、非 式性的、轻松活泼的文 。
  在软件 使 幽默的网络语言,可以创造出一 休闲的、轻松愉快的、非 式的氛围,会使软件的 量大增。
  塑造软件个性
  软件的整 整 氛表达要与企 形象相符合,并应该很 现企 CI。
  在这 , 较经 的案例 :可 可乐个性鲜 的 卫软件Life Tastes Good;工整、全 、细致的 软件We bring good things to life(GE带来美 的生活);崇 科技创新文 的3M 软件Cre*ing solutions for business, industry and home等。
  在接下来的内容中, 遵循 述界 设 原则,创建 块 软件的界 。
1.5.1   作 窗
  本 项目窗 界 的设 过程如下。
  (1) 开Visual Studio 2013,新建一个名为“you”的Windows窗 应 程序,“新建项目”界 如图1-15所 。
  (2) 据 向 户的设 原则, 工具箱中依次 4个Button控件 1个TrackBar控件拖入窗 中,各控件 到下的具 设置如下。
* 一个Button控件:设置name 性为“buttonReplay”,Text 性为“重新开始”,设置 Click 件为“buttonReplay_Click”。
* 二个Button控件:设置name 性为“buttonSave”,Text 性为“保存”,设置 Click 件为“buttonSave_Click”。
* 三个Button控件:设置name 性为“buttonLoad”,Text 性为“载入”,设置 Click 件为“buttonLoad_Click”。
* 设置TrackBar控件控件:设置name 性为“trackBarReviewSpeed”,Ma*m 性为“15”,Mini*m 性为“1”,设置 Scroll 件为“trackBar1_Scroll”。
* 四个Button控件:设置name 性为“buttonReview”,Text 性为“Re&view”,设置 Click 件为“buttonReview_Click”。

图1-15  新建Windows窗 应 程序
  设置 毕后的窗 界 效果如图1-16所 。

图1-16  窗 界 的效果
  (3)为了 便 户灵活 使 软件, 工具箱中拖入MenuStrip控件到窗 部,并分别设置“文件”、“设置 项” “ 助”这3个菜单,如图1-17所 。

图1-17  设置 菜单
  (4)设置 菜单中的各个菜单命 ,首先设置“文件”菜单,在 下 设置6个菜单项。 到下各个菜单项的具 信息如下。
* 一个菜单项:设置name 性为“replayToolStripMenuItem”,Text 性为“重新&开始”,设置 Click 件为“replayToolStripMenuItem_Click”。
* 二个菜单项:设置name 性为“replayExtendedToolStripMenuItem”,Text 性为“Replay(Extended)”,设置 Click 件为“replayExtendedToolStripMenuItem_ Click”。
* 三个菜单项:设置name 性为“saveToolStripMenuItem”,Text 性为“&Save”,设置 Click 件为“saveToolStripMenuItem_Click”。
* 四个菜单项:设置name 性为“loadToolStripMenuItem”,Text 性为“&Load”,设置 Click 件为“loadToolStripMenuItem_Click”。
* 五个菜单项:设置name 性为“reviewToolStripMenuItem”,Text 性为“Re&view”,设置 Click 件为“reviewToolStripMenuItem_Click”。
* 六个菜单项:设置name 性为“eToolStripMenuItem”,Text 性为“E&t”,设置 Click 件为“eToolStripMenuItem_Click”。
  (5)设置“设置 项”菜单,在 下 设置1个名为“styleToolStripMenuItem”的菜单项,然后在此菜单项下再设置3个子菜单, 到下各子菜单项的具 信息如下。
* 一个子菜单项:设置name 性为“style1ToolStripMenuItem”,Text 性为“style1”,设置 Click 件为“style1ToolStripMenuItem_Click”。
* 二个子菜单项:设置name 性为“style2ToolStripMenuItem”,Text 性为“style2”,设置 Click 件为“style2ToolStripMenuItem_Click”。
* 三个子菜单项:设置name 性为“style3ToolStripMenuItem”,Text 性为“style3”,设置 Click 件为“style3ToolStripMenuItem_Click”。
  (6) 工具箱*入 件OpenFileDialog SaveFileDialog,分别设置name 性为“openFileDialog1” “saveFileDialog1”。
  (7) 工具箱中拖入ProgressBar控件到窗 底部,并且设置该控件的name 性为“progressBarReview”。
  (8) 工具箱中分别拖入3个I*geList控件, 设置 窗 界 的 显 样式。各控件的具 设置信息如下:
* 一个I*geList控件,设置name 性为“i*geList1”。
* 二个I*geList控件,设置name 性为“i*geList2”。
* 三个I*geList控件,设置name 性为“i*geList3”。
1.5.2  窗 素设置文件
  经过1.5.1小节中的设置 作后,项目的窗 界 基本设 毕。在窗 素设置文件Form1.Designer.cs内,定义了各窗 控件的具 性设置。在下 的内容中 分别介绍。
1.控 按钮
  在窗 侧的各控 按钮控件的 是控 的 程,例如 开始、载入 保存。对应 性的设置 码如下:
  
// buttonReplay
this.buttonReplay.Loc*ion = new System.Drawing.Point(180, 197);
this.buttonReplay.Name = 'buttonReplay';
this.buttonReplay.Size = new System.Drawing.Size(75, 23);
this.buttonReplay.TabIndex = 0;
this.buttonReplay.Text = '重新开始';
this.buttonReplay.UseVisualStyleBackColor = true;
this.buttonReplay.Click += new System.EventHandler(this.buttonReplay_Click);
// buttonReview
this.buttonReview.Loc*ion = new System.Drawing.Point(180, 338);
this.buttonReview.Name = 'buttonReview';
this.buttonReview.Size = new System.Drawing.Size(75, 23);
this.buttonReview.TabIndex = 1;
this.buttonReview.Text = 'Re&view';
this.buttonReview.UseVisualStyleBackColor = true;
this.buttonReview.Click += new System.EventHandler(this.buttonReview_Click);
// trackBarReviewSpeed
this.trackBarReviewSpeed.Loc*ion = new System.Drawing.Point(180, 292);
this.trackBarReviewSpeed.Ma*m = 15;
this.trackBarReviewSpeed.Mini*m = 1;
this.trackBarReviewSpeed.Name = 'trackBarReviewSpeed';
this.trackBarReviewSpeed.Size = new System.Drawing.Size(75, 42);
this.trackBarReviewSpeed.TabIndex = 2;
this.trackBarReviewSpeed.Value = 1;
this.trackBarReviewSpeed.Scroll += new System.EventHandler(this.trackBar1_Scroll);
// buttonSave
this.buttonSave.Loc*ion = new System.Drawing.Point(180, 238);
this.buttonSave.Name = 'buttonSave';
this.buttonSave.Size = new System.Drawing.Size(75, 23);
this.buttonSave.TabIndex = 3;
this.buttonSave.Text = '保存';
this.buttonSave.UseVisualStyleBackColor = true;
this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click);
// buttonLoad
this.buttonLoad.Loc*ion = new System.Drawing.Point(180, 267);
this.buttonLoad.Name = 'buttonLoad';
this.buttonLoad.Size = new System.Drawing.Size(75, 23);
this.buttonLoad.TabIndex = 4;
this.buttonLoad.Text = '载入';
this.buttonLoad.UseVisualStyleBackColor = true;
this.buttonLoad.Click += new System.EventHandler(this.buttonLoad_Click);
// progressBarReview
this.progressBarReview.Loc*ion = new System.Drawing.Point(3, 381);
this.progressBarReview.Name = 'progressBarReview';
this.progressBarReview.Size = new System.Drawing.Size(252, 17);
this.progressBarReview.TabIndex = 5;
  
2.窗 菜单
  在窗 部的各菜单 项都 括对应的子 项,甚至还 项, 是对 控 设置,并显 的使 助信息。对应 窗 菜单各 项的 性设置 码如下所 :
  
// fileToolStripMenuItem
this.fileToolStripMenuItem.DropDownItems.AddRange(
  new System.Windows.Forms.ToolStripItem {
     this.styleToolStripMenuItem});
this.optionToolStripMenuItem.Name = 'optionToolStripMenuItem';
this.optionToolStripMenuItem.Size = new System.Drawing.Size(65, 32);
this.optionToolStripMenuItem.Text = '&设置 项';
// styleToolStripMenuItem
this.styleToolStripMenuItem.DropDownItems.AddRange(
  new System.Windows.Forms.ToolStripItem {
     this.keyboardToolStripMenuItem,
     this.aboutToolStripMenuItem});
this.helpToolStripMenuItem.Name = 'helpToolStripMenuItem';
this.helpToolStripMenuItem.Size = new System.Drawing.Size(65, 32);
this.helpToolStripMenuItem.Text = '& 助';
// keyboardToolStripMenuItem
this.keyboardToolStripMenuItem.Name = 'keyboardToolStripMenuItem';
this.keyboardToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.keyboardToolStripMenuItem.Text = '& 作键';
this.keyboardToolStripMenuItem.Click += 
  new System.EventHandler(this.keyBoardToolStripMenuItem_Click);
// aboutToolStripMenuItem
this.aboutToolStripMenuItem.Name = 'aboutToolStripMenuItem';
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.aboutToolStripMenuItem.Text = '&关 ';
this.aboutToolStripMenuItem.Click += 
  new System.EventHandler(this.aboutToolStripMenuItem_Click);
// menuStripMain
this.menuStripMain.Items.AddRange(
 new System.Windows.Forms.ToolStripItem;
       style2ToolStripMenuItem.I*ge = i*geList2.I*ges;
       style3ToolStripMenuItem.I*ge = i*geList3.I*ges;
       youControl.ProgressBar = progressBarReview;
       openFileDialog1.FileName = 
         P*h.GetDire*oryName(Applic*ion.ExecutableP*h) + @'\sample.trf';
       saveFileDialog1.FileName = 
         P*h.GetDire*oryName(Applic*ion.ExecutableP*h) + @'\sample.trf';
         }
  
2. 编 件处 码
   过单击窗 Form1内的各个控件 件,可以 对应的 件处 程序,实现 的运 对 的控 。在本章1.5节的窗 设 过程中,已经了 了各控件的 件名称,在此只对 件的具 处 码 介绍。各 件的具 码如下。
  (1) 侧按钮控件的处 件
   侧按钮控件是指“重新开始”、“保存”、“载入”、“滑*条” “Review”控件,各控件对应 件的处 码如下所 :
  
priv*e void buttonReplay_Click(ob*e* sender, EventArgs e)
{
     youControl.Replay(true, false);
}
priv*e void buttonReview_Click(ob*e* sender, EventArgs e)
{
     youControl.Review;
}
priv*e void trackBar1_Scroll(ob*e* sender, EventArgs e)
{
     youControl.ReviewSpeed = trackBarReviewSpeed.Value;
}
priv*e void buttonSave_Click(ob*e* sender, EventArgs e)
{
     if (saveFileDialog1.ShowDialog != DialogResult.OK) return;
     if (P*h.GetExtension(saveFileDialog1.FileName) == string.Empty)
         saveFileDialog1.FileName = 
           P*h.ChangeExtension(saveFileDialog1.FileName, '.trf');
     youControl.SaveToFile(saveFileDialog1.FileName);
}
priv*e void buttonLoad_Click(ob*e* sender, EventArgs e)
{
     if (openFileDialog1.ShowDialog != DialogResult.OK) return;
     if (!File.Ests(openFileDialog1.FileName)) return;
     youControl.LoadFromFile(openFileDialog1.FileName);
}
  
  (2)窗 菜单的处 件
  窗 菜单是指窗 部的“文件”、“设置 项”、“ 助”三个 菜单,并 它们的各子菜单 菜单。 述各菜单对应 件的处 码如下所 :
  
priv*e void replayToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     buttonReplay_Click(buttonReplay, new EventArgs);
}
priv*e void saveToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{                                                                    
     buttonSave_Click(buttonSave, new EventArgs);
}
priv*e void loadToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     buttonLoad_Click(buttonLoad, new EventArgs);
}
priv*e void reviewToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     buttonReview_Click(buttonReview, new EventArgs);
}
priv*e void eToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     Close;
}
priv*e void keyBoardToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     MessageBox.Show('左移: Left、A 移: Right、D' 
       + '下移: Down、S变换: Up、W变 : Back、F直下: Space、J、Enter',
       '按键 ');
}
priv*e void blogToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     Process.Start('blog.sina../u/589d32f5010008ls');
}
priv*e void aboutToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     MessageBox.Show(' 块设 : 涯沦落人' 
       + '日期: 2013-11-24 : xxx@126.', '关 本程序');
}
priv*e void style1ToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     if (sender == style1ToolStripMenuItem)
         youControl.I*geList = i*geList1;
     else if (sender == style2ToolStripMenuItem)
         youControl.I*geList = i*geList2;
     if (sender == style3ToolStripMenuItem)
         youControl.I*geList = i*geList3;
}
priv*e void replayExtendedToolStripMenuItem_Click(ob*e* sender, EventArgs e)
{
     youControl.Replay(true, true);
}
  
1.6.2   控 、处 法
  普 的社会 则是倡导助人为乐的,而我们玩的 却设置了很多等 关 ,这不是因为开发者偏要跟社会 则闹别扭,而是因为 就是 ,是要吊玩家胃 的。在 中设置分数 后,就可以 发 户 去追逐高分。高分伴 高等 ,等 够提高玩家的争 胜 , 引玩家继续玩下去, 而产生更多的乐趣。
   的实现过程可以看出,整个 项目的控 处 是 过 件处 程序控 的。每个 件处 程序只是调 处 法的名称,而实现具 的各 处 法在文件you.cs中定义。
1. 初始设置
  这里的初始设置是指定义 的控 类youControl,并设置玩 过程中的返回 数、参数、等 、积分 块的 作等参数。具 码如下所 :
  
public class youControl : Control
{
     priv*e const int rowCount = 21;// 数
     priv*e const int colCount = 11; // 列数
     priv*e int brickWidth = 16; // 小块宽
     priv*e int brickHeight = 16; // 小块高
     priv*e I*geList i*geList; // 块素材
     priv*e Bit*p backBit*p; // 背景图
     priv*e ListListList brickTemplets = 
       new ListListList;                 // 块 板
     priv*e byte points = new byte;// 点阵
     priv*e byte brickIndex = 0;// 板序号
     priv*e byte facingIndex = 0;// 当 变 号
     priv*e Point brickPoint = new Point;// 块的位子
     priv*e byte afterBrickIndex = 0;// 下一个 板序号
     priv*e byte afterFacingIndex = 0;// 下一个变 号
     priv*e System.Windows.Forms.Timer timer;// 控 下落的定时
     priv*e int lines;// 消 数
     priv*e Random random = new Random;// 数
     priv*e int level = 0;// 当 速
     priv*e int score = 0;// 成绩
     /// 下落速 ,数值表 每次下落的时间差,以毫秒为单位
     priv*e int { 700, 500, 400, 300, 320, 320, 100, 80, 70, 60, 50 };
     /// 每次消 所增加的积分
     priv*e int { 0001, 0100, 0300, 0500, 1000, 3200 };
     priv*e bool playing = false;// 玩家是否 在
     priv*e youNext youNext;// 下一个 块的显 控件
     priv*e youScore youScore;// 积分显 控件
     priv*e int stepIndex = -1;// 当 回放的步数
     priv*e bool reviewing = false;// 是否 在回放中
     priv*e Thread threadReview = null;// 回放使 的 程
     priv*e int reviewSpeed = 1;// 回放的速 ,数值表 倍数
     priv*e List StepInfos = new List;// 录玩家每一步的 作
     priv*e int lastRecordTime = 0;// 后 录的时间
     priv*e bool recordMode = false;// 是否采 录 式
     priv*e ProgressBar progressBar;// 回放 条
     priv*e bool extended = false;// 扩展 块
     ///

^_^:df72041ee5f6c30501691ded1afa3945