程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C# Builder創建井字游戲Web服務

C# Builder創建井字游戲Web服務

編輯:C#基礎知識

  在本文,我將介紹如何使用C# Builder導入一個Web服務,並且將它變成一個井字游戲客戶端。源代碼(也可以使用.NET SDK下的C#命令行編譯程序編譯)可在BDS\1.0\Examples\C#\Web Services\Tic Tac Toe目錄下獲得,也可以在CodeCentral下獲得,但是放心啟動C# Builder然後跟著我輸入代碼,看看我是如何創建並且構建這個工程的。

  C# Builder工程

  今天的工程由兩部分組成:用戶界面(一個WinForm)和引擎,基於一個導入的Web服務。 這個Web服務本身在多年以前就使用Delphi 6實現了,在網上可以在http://www.eBob42.com/cgi-bin/TicTacToe.exe/wsdl/ITicTacToe 處找到。

  啟動C# Builder,並且點擊File | New - C# Application來啟動一個新建項目。 在對話框中,我們可以輸入工程的名稱(如TTT),這樣就導致工程被創建在C:\Documents and Settings\Administrator\My Documents\Borland Studio Projects\TTT目錄下了(在當前用戶目錄下,也就是說我現在正在管理員模式下操作)。

  在點擊OK之後,一個帶有空的WinForm的新建項目將創建。 作為第一件事,我想添加一個主菜單到這個WinForm中。 使用菜單設計器,我創建一個菜單結構Game|New Game,帶有子菜單選項Computer Starts和Human Starts。後兩個是唯一一個將取得事件處理程序的,其它只是擺設罷了(並且讓它使開始一個新游戲稍微困難一些)。

  接下來,放置九個按鈕(從左上端到右下端),但是稱它們為btn8、btn3、btn4、btn1、btn5、btn9、btn6、btn7、btn2,設置它們的Tag屬性(是.NET中的一個Object,不是一個Integer)為按鈕的號碼(所以左上的為Tag 8,中上的為Tag 3等等)。 這將保證用戶界面還使用井字游戲Web服務實現的魔方算法。

  選擇所有的按鈕,並且設置它們的字體為Comic Sans MS,Bold,24點,同時清除它們的Text屬性。

  添加Web引用

  現在,在我們編寫一些事件處理程序之前(用於兩個菜單項和九個按鈕),我們應該先導入Web服務來運行。 點擊Project | Add Web Reference,在搜索框中輸入TicTacToe Web服務的URL。URL是http://www.eBob42.com/cgi-bin/TicTacToe.exe/wsdl/ITicTacToe,你可以在下面的屏幕截圖中看到。

  Add Reference按鈕只有在UDDI Browser(Add Web Reference對話框)顯示一個實際的WSDL定義的時候才可用。在所有其他的情況下,你可以使用這個對話框來作為簡單的浏覽器。

  隨著按鈕可用,點擊能導入外部Web服務的Add Reference按鈕,創建一個Web引用並且把它添加到我們的工程中。 Project Manager將說明Web引用以及Reference.cs文件是如何嵌入我們的工程中的:

  Reference.cs文件包含導入的Web服務。

  編寫 C#代碼

  最後,我們到了我們決不能再拖延的地方:我們必須編寫一些C#代碼。在我們可以實現事件處理程序之前,我首先需要添加一些特殊變量(像指向一個井字游戲Web服務的一個實例的TTT變量,一個游戲句柄和一個標記,來了解是計算機還是人贏了這場游戲)。 添加這些變量最好的位置是在WinForm源文件的Main()方法的實現部分:

  

private ITicTacToeservice TTT = null;
private int Game = 0;
private int TTTIsWinnerGame = 0;

  這些聲明需要跟隨四個方法實現:Init_TTT和Clear_Board。前者用來延遲裝載井字游戲Web服務實例- -我們應該在使用TTT變量之前調用Init_TTT,這將保證服務器實例只在我們實際需要它的時候創建(因此如果你開始執行游戲,但是又立即退出,你不必連接服務器,並且什麼也不會生成)。Clear_Board方法用來再次清除九個按鈕的標題,並且重置TTTIsWinnerGame變量。 在新的一局啟動之前被調用。

  

private void Init_TTT()
{
if (TTT == null)
try
{
TTT = new ITicTacToeservice();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
private void Clear_Board()
{
btn1.Text = "";
btn2.Text = "";
btn3.Text = "";
btn4.Text = "";
btn5.Text = "";
btn6.Text = "";
btn7.Text = "";
btn8.Text = "";
btn9.Text = "";
TTTIsWinnerGame = 0;
}

  在我們可以編寫事件處理程序之前,我們還需要再實現兩個方法:ComputerMove和HumanMove。 顯然,我們必須知道人(1)和計算機(2)之間的差異,並且我硬編碼了計算機使用字符"42"而人使用十字叉作為棋子。 如果你感到願意,你也可以放心地在這裡添加你自己的表示棋子的方法,甚至是圖像。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved