随笔分类 - C#
摘要:using System; using System.IO;//引入IO using System.Text; using System.Diagnostics; namespace APPLauncher { class Program { public static void Main(stri
阅读全文
摘要:using System;namespace Belender{ class Program { public static void Main(string[] args) { try { System.Diagnostics.Process.Start("firefox", AppDomain.
阅读全文
摘要:之前我们已经讲了实现一个中国象棋软件的所有要素,本篇我们只是粗略地建一个工程再添加一点文件使得我们能看到程序的运行情况如何。 在界面完成之前,我先建了一个Win32控制台项目(学生朋友们对这个最熟悉也最容易理解)。根据前面所讲的我们已经有了CChessDef.h CChessMove.h CChes
阅读全文
摘要:前面已经讲过了棋局表示、着法生成、搜索算法(包括搜索辅助), 在象棋程序中如果说搜索算法是心脏,那么局面评估就是大脑。搜索算法负责驱动整个程序,而局面评估则负责对搜索的内容进行判断评价。因而搜索与局面评估是整个程序的核心。 首先,先介绍一下在局面评估中需要考虑的因素。就不同的棋类可能要考虑的因素略有
阅读全文
摘要:对于棋类软件的搜索算法经前人的努力已形成了较为成熟的Alpha-Beta搜索算法以及其它一些辅助增强算法。所以小生在自己的程序中直接借鉴了Alpha-Beta搜索算法并辅以了历史启发。对此两者王小春的《PC 游戏编程(人机博弈)》和ElephantBoard的主页 http://www.elepha
阅读全文
摘要:既然Alpha-Beta搜索算法是在“最大-最小”的基础上引入“树的裁剪”的思想以期提高效率,那么它的效率就取决于树的结构——如果搜索了没多久就发现可以“裁剪”了,那么需要分析的工作量将大大减少,效率自然也就大大提高;而如果直到分析了所有的可能性之后才能作出“裁剪”判断,那此时“裁剪”也已经失去它原
阅读全文
摘要:我们的程序需要让电脑能够在轮到它走子的时候执行一个它认为对它最有利的着法,那前提就是它要有诸多(也可能是唯一)可供选择的着法,提供所有可选着法的“清单”就是我们的着法生成器所要完成的。之后用搜索函数来搜索“清单”,并用局面评估函数来逐一打分,最后就可以选择“最佳”着法并实施了。 在着法生成器中,我采
阅读全文
摘要:对于棋盘的表示当前比较先进的思想是“位棋盘”。“位棋盘”用于国际象棋非常便捷,因为国际象棋的棋盘正好有64个格子,可以将一个棋盘的信息用一个64位的变量来表示。其基本思想就是用位上的值是1或0来表示棋子在棋盘相应位置上的存在与否,这样做的好处是可以通过位操作运算来加快局面评估和着法生成的速度。当用于
阅读全文
摘要:2005年6月我系第二批科技小组的项目正式确定为实现一款中国象棋对弈软件。基本功能包括人机对战、网络对战。我负责开发人机对战的引擎部分,也就是让计算机下棋。经过了暑假整整两个月的学习与实践,我终于初步完成了程序,虽然电脑的下棋水平实在不敢恭维,但好歹也是我心血所成,所以就苟且将其命名为scCChes
阅读全文
摘要:using System;using System.Collections.Generic;using System.Text;using System.Data;//using System.Data.OleDb;//using System.Drawing;//namespace EColor{...
阅读全文
摘要:Datareader对象不能关使用new关键字创建。但可以使用ExecuteReader()方法创建。DataReader是一行一行的读取记录的。当记录中有数据时Read()返回TRUE,当到记录集底部时返回FALSE。重要属性:FieldCount:获取当前行中的列数。HasRows:获取一个值,...
阅读全文
摘要:在2005年底微软公司正式发布了C# 2.0,与C# 1.x相比,新版本增加了很多新特性,其中最重要的是对泛型的支持。通过泛型,我们可以定义类型安全的数据结构,而无需使用实际的数据类型。这能显著提高性能并得到更高质量的代码。泛型并不是什么新鲜的东西,他在功能上类似于C++的模板,模板多年前就已存在C...
阅读全文
摘要:Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。Lambda 表达式对于编写 LINQ 查询表达式特别有用。若要创建 Lambda 表达式,需要在 Lambda 运算符=>左侧指定输入参数(如...
阅读全文
摘要:在Vista系统之后,微软为窗体程序提供了Aero磨砂的效果,如下图。那么用C#如何来实现这种磨砂效果呢?代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;us...
阅读全文
摘要:一、委托调用方式1. 最原始版本: delegate string PlusStringHandle(string x, string y); class Program { static void Main(string[] args) { ...
阅读全文
摘要:因为要求的压缩和解压非常简单,只有一级目录,而且文件很小,就没有使用SharpZipLib而是自己用.Net 2.0中的GZipStream类写了个简单的。将保存每个文件内容的byte数组和文件名的一个类型的示例放入arraylist里,再对其序列化,压缩序列化的流并保存为压缩包。其实对于多级目录在压缩时对其文件进行递归并在解压时根据文件名称和路径重新构建文件目录就也可以实现了。using System;using System.Text;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatte
阅读全文
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace EvenDemo{ /// <summary> /// 事件参数类,继承自EventArgs,包含事件信息 /// </summary> public class DoorInfoEventArgs : EventArgs { /// <summary> /// 显示门状态信息 /// </summary> public str...
阅读全文
摘要:委托(代理)委托:是一种定义方法签名的类型。(注意是类型!)用于将方法作为参数传递给其它方法。class Program { //定义一个返回值为int的委托MyDelegate public delegate int MyDelegate(int x, int y); //定义一个委托需要接管的方法 static int MyFunction(int x, int y) { return x + y; } static void Main(string[] args)...
阅读全文
摘要:///<summary> /// 根据字符串截取存在的词语算法(分词算法) ///</summary> ///<param name="sentence">需要操作的语句</param> ///<returns>所有在中文中存在的词语</returns> #region GetAllWords public ArrayList GetAllWords(string sentence, int subLength) { //截取所有字符串列表 ...
阅读全文
摘要:相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了。这东西对Windows系统来说可是比较重要的,也是病毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项里面写入自己的启动键值来达到自启动的目的,有些病毒还会修改注册表里面来映像劫持杀毒软件,这是破坏系统的第一步。同时,大多软件(软件的序列号和信息)和硬件信息、系统信息、安全模式等等设置都保存在这里,因此系统的健康在很大程度上要依赖注册表的健康。作为编程开发人员,我们有必要了解注册表并学会操作注册表。下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的创建,打开与删除、键值的创建(
阅读全文

浙公网安备 33010602011771号