Time of Update: 2017-02-27
以前閒置時候用C#實現的路徑規划算法,今日貼它出來,看大家有沒有更 好的實現方案。關於路徑規劃(最短路徑)演算法的背景知識,大家可以參考 《C++演算法--圖演算法》一書。該圖演算法描述的是這樣的情境:圖由節點 和帶有方向的邊構成,每條邊都有相應的權值,路徑規劃(最短路徑)演算法就是 要找出從節點A到節點B的累積權值最小的路徑。首先,我們可以將 “有向邊”抽象為Edge類:Code[copy to clipboard]CODE:public class Edge {
Time of Update: 2017-02-27
在遊戲開發中,AI的最基本問題之一就是尋路演算法或稱路徑規划算法,在三 年前,我曾實現過 基於“圖演算法”的最短路徑規划算法,然而在遊 戲中,我們通常將地圖抽象為有儲存格構成的矩形,如:這個微型地圖 由3*3的儲存格構成,當然,實際遊戲中的地圖通常比它大很多,這裡只是給出 一個樣本。由於遊戲地圖通常由儲存格構成,所以,基於“圖演算法 ”的路徑規劃便不再那麼適用,我們需要採用基於儲存格的路徑規划算法
Time of Update: 2017-02-27
在之前的一篇文章裡,我們簡單地實現了對一維數組的四種排序演算法,但是 在實際的項目中,我們排序的方式可能(幾乎是一定)不止僅僅按照數字排序, 我們常常按照合適的需要的排序方式進行排序,比如航班資訊可能按時間排序, 商品資訊可能按價格排序等等。下面改進之前的那一篇“c#實現冒泡、快 速、選擇和插入排序演算法”裡的代碼,實現可以對不同對象(執行個體中是Car )的按照不同排序類型(執行個體中是價格和名稱)的方式排序。好了,Code is cheap。看代碼了:using
Time of Update: 2017-02-27
最近因為項目需要通過RSA加密來保證用戶端與服務端的通訊安全。但是C#自 帶的RSA演算法類RSACryptoServiceProvider只支援公開金鑰加密私密金鑰解密,即數字證 書的使用。所以參考了一些網上的資料寫了一個RSA的演算法實現。演算法實 現是基於網上提供的一個大整數類。一、密鑰管理取得密鑰主要 是通過2種方式一種是通過RSACryptoServiceProvider取得:/// <summary>/// RSA演算法對象,此處主要用於擷取金鑰組///
Time of Update: 2017-02-27
二進位換為十進位的方法,例如:位元:11001十進位數:1*24+1*23+0*22+0*21+1*20=25八進位換為十進位的方法,例如:八位元:32007十進位數:3*84+2*83+0*82+0*81+7*80=13319十六進位換為十進位的方法,例如:十六進位數:a20f(由於十六進位數用a~f表示10~15之間的數,所以計算時將a~f用10~15表示)十進位數: 10*83+2*82+0*81+15*80=41487通過以上二、八、十六進位數轉十進位數的計算方法,可得出計算的代碼為:/
Time of Update: 2017-02-27
最近一段是時間項目可能需要提供簡訊功能,客戶作為一個 SP 端提供簡訊 業務;網上搜尋了一番,找到了比較不錯的 CMPP30 類的代碼,該代碼基本實現 了 CMPP3.0 協議中的簡訊收發、網路重連等功能。本人將其重新改造,提供了 同步發送、非同步發送的支援(原先版本的非同步發送並非標準的 .NET 非同步發送模 式,這部分代碼是一個非同步作業實現的“範本”,可供大家參考),增加了對 PROVISION 介面的支援。本人已將這些代碼打包為一個 RAR 檔案,稍後會上傳到
Time of Update: 2017-02-27
C#中線程與表單互動的多線程編程執行個體C#並行編程概述:線程同步原語C#中Queue的安全執行緒問題C#編程總結(五)關於多線的思考C#編程總結(四)多線程應用C#編程總結(三)線程同步C#編程總結(二)多線程基礎C#實現的多線程非同步Socket資料包接收器架構C#.net同步非同步SOCKET通訊和多線程總結大量資料轉錄的多線程和同步處理實現c#中使用多線程訪問winform中控制項的若干問題一個簡單的多線程即時通訊程式(類似QQ,MSN)C#中跨線程操作控制項C#多線程delegate委
Time of Update: 2017-02-27
Head First C#中文版教程專題Head First C#中文版 第二章 page78至83Head First C#中文版 第二章 page74至77Head First C#中文版 第二章 page70至73Head First C#中文版 第二章 page69Head First C#中文版 第二章 page68Head First C#中文版 第二章 page67Head First C#中文版 第二章 page66Head First C#中文版 第二章 page65Head
Time of Update: 2017-02-27
Visual C# 2010新特性之dynamic類型Visual C# 2010新特性之命名和選擇性參數與類型等價支援C# 2.0教程專題用Visual C# 2005建立捷徑用VC#2005解析含有多種格式的文字檔利用VC# 2005為數位照片添加拍照日期VC#2005快速入門之使用布爾操作符VC#2005快速入門之使用while語句Effective
Time of Update: 2017-02-27
在C#中要擷取各種檔案的表徵圖,可以通過API調用來完成。主要的函數是SHGetFileInfo.在C#中操作的方式如下 :第一步:準備SHGetFileInfo需要的各種參數類型。1.FileInfoStruct [StructLayout( LayoutKind.Sequential)] public struct FileInfoStruct ...{ public IntPtr hIcon; public int iIcon; public
Time of Update: 2017-02-27
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExDtoB { public partial class Form1 : Form {
Time of Update: 2017-02-27
一、引言C# 3.0中新的對象初始化器是一種簡單的文法特徵-藉助於 這種特徵,對象的構建和初始化變得非常簡單。假定你有一個類Student,它看 起來有如下樣子:public class Student{ public string firstName; public string lastName;}那麼,你可以使用對象初始化器來建立這個類的一個對象,如下所示:var student1 = new Student{firstName = "Bruce", lastName
Time of Update: 2017-02-27
在去年PDC2005上,在發布C#2.0 (C# Whidbey)的同時,微軟也同時展示了它 們在C# 3.0上的一些計劃。在提到一系列新的語言特性如Language-integrated Query (LINQ)(LINQ)等 ,Redmond同時也介紹了一個新的特性--匿名型別。本文詳細介紹了匿名型別。匿名型別定義C#3.0規範將匿名型別描述為從對象初始化器 (object initializer)自動推斷和產生的元群組類型。在你能夠充分領會這一定義
Time of Update: 2017-02-27
Linq項目簡介和開發環境的搭建9月份,微軟推出了一項名為 “Linq項目”的新技術,用於在.NET語言中整合資料查詢的功能。您 可以從http://msdn.microsoft.com/netframework/future/得到Linq項目的技術 預覽版,其中包括大量的介紹文章(英文)和C# 3.0以及VB 9.0的編譯器。Linq項目英文全稱為Language Integrated Query,即“語言整合 查詢”。Linq基於.NET
Time of Update: 2017-02-27
一.神奇的var在C#3.0中增加了一個變數聲明var,這個聲明和JavaScript 的 var類似,但 也有不同。1. 相同點,它可以用var來聲明任何類型的局部變數。2. 不同點,它僅僅負責告訴編譯器,該變數需要根據初始設定式來推斷變 量的類型,而且只能是局部變數。二.相同點它可以聲明var integer = 10;var name = "edisundong";var numbers = new int[] { 1, 2, 3 };三.不同點var僅僅是一個關鍵字,
Time of Update: 2017-02-27
1.隱型局部變數C# 3.0引入了一個叫做“var”的新關鍵字。這個關鍵字允許開發人員建立一個變數,但不必明確它的類型。例如,用var說明一個字串,就像這樣:var myData = "This is my data";注意,這裡並沒有提到myData變數是一個字串,而C#
Time of Update: 2017-02-27
大家都知道,C#中的string是一個參考型別,String對象是存放在堆上,而不是堆棧上的,因此,當把一個字串變數賦給另一個字串時,會得到對記憶體中同一個字串的兩個引用。但是大家有沒有想過,為什麼修改其中一個字串,另外一個不受影響呢?原來,當我們把一個字串變數賦給另一個字串時,就會建立一個全新的String對象,就是說這個時候就會有兩個對象,比如:class StringExc{public static void Main(){string s1 = "original
Time of Update: 2017-02-27
在C#中可以通過Process來啟動一個進程,Process位於System.Diagnostics命名空間。下面來看一個具體執行個體:12 using System;3 using System.Diagnostics;45 namespace csharp_station.howto6 {7 /**//**//**//// <summary>8 /// 在C#中啟動IE進程9 /// </summary>10 class ProcessStart11
Time of Update: 2017-02-27
using System;using System.Runtime.InteropServices; class shoutdown{ [StructLayout(LayoutKind.Sequential, Pack=1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } [DllImport("kernel32.dll",
Time of Update: 2017-02-27
1 /// <summary> 2 /// 顯示MAC地址 3 /// </summary> 4 /// <returns></returns> 5 private string GetMAC() 6 { 7 string mac = "原生MAC地址:"; 8 using