av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

WindowsForms和C#的強(qiáng)大

一旦你定義了窗體,就需要一些數(shù)據(jù)成員,一個(gè)構(gòu)造函數(shù)和一些事件句柄。我會(huì)依次向您闡釋W(xué)indows Forms和C#。首先是基本的數(shù)據(jù)成員,一個(gè)tic-tac-toe板。Tic-tac-toe游戲的數(shù)據(jù)包含了一個(gè)表示游戲板的3*3的矩陣數(shù)組。這個(gè)游戲定義了一塊板的格子。

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出庫(kù)車(chē)免費(fèi)做網(wǎng)站回饋大家。

 
 
 
  1. public struct BoardSpace {  
  2. public BoardSpace(Mark mark,  
  3. int left,  
  4. int top,  
  5. int right,  
  6. int bottom) {  
  7. // Initialize internal state?  
  8. }  
  9. public void SetMark(Player player) {  
  10. // if the space is blank, mark it using  
  11. // the player enumeration  
  12. }  
  13. public void Render(Graphics g) {  
  14. Pen pen =  
  15. new Pen(Color.FromARGB(170, Color.Black), 3);  
  16. switch(m_mark) {  
  17. case Mark.XMark:  
  18. g.DrawLine(pen, m_left, m_top, m_right,  
  19. m_bottom);  
  20. g.DrawLine(pen, m_left, m_bottom, m_right,  
  21. m_top);  
  22. break;  
  23. case Mark.OMark:  
  24. int cx = m_right - m_left;  
  25. int cy = m_bottom - m_top;  
  26. g.DrawEllipse(pen, m_left, m_top, cx, cy);  
  27. break;  
  28. default:  
  29. break;  
  30. }  
  31. }  
  32. public Mark m_mark;  
  33. public int m_top, m_left, m_right, m_bottom;  
  34. };  

每一個(gè)板的格子都表示在屏幕上的一個(gè)位置并確定玩家是否做了標(biāo)記。此外,格子還使用了一個(gè)X和一個(gè)O,來(lái)決定哪個(gè)玩家做了標(biāo)記。我還會(huì)細(xì)致的說(shuō)明的。

Tic-tac-toe板管理了3*3的格子。

 
 
 
  1. public struct TicTacToeBoard {  
  2. BoardSpace[,] m_BoardSpaces;  
  3. public void Initialize() {  
  4. m_BoardSpaces = new BoardSpace[3,3];  
  5. // Initialize each space with a location on the screen and a  
  6. // blank mark.  
  7. // Here‘s the first space:  
  8. m_BoardSpaces[0, 0] = new BoardSpace(Mark.Blank, 1,  
  9. 1, 50, 50);  
  10. // Do the rest like that?  
  11. }  
  12. public void ClearBoard() {  
  13. // loop through the spaces clearing them  
  14. }  
  15. public Player EvaluateGame() {  
  16. // Check adjacent marks and see who won.  
  17. }  
  18. public Positions HitTest(int x, int y, Player player) {  
  19. // Test the incoming Coords and mark the right space  
  20. // using the player enumeration  
  21. }  
  22. public void Render(Graphics g) {  
  23. Pen pen = new Pen(Color.FromARGB(170,  
  24. Color.Black), 5);  
  25. g.DrawLine(pen, 1, 50, 150, 50);  
  26. g.DrawLine(pen, 50, 1, 50, 150);  
  27. g.DrawLine(pen, 1, 100, 150, 100);  
  28. g.DrawLine(pen, 100, 1, 100, 150);  
  29. for(int i = 0; i < 3; i++) {  
  30. for(int j = 0; j < 3; j++) {  
  31. m_BoardSpaces[i, j].Render(g);  
  32. }  
  33. }  
  34. }  
  35. };  

它也管理著B(niǎo)oardSpace對(duì)象3*3的數(shù)組,并用線條來(lái)劃分tic-tac-toe的格子并讓每一個(gè)格子來(lái)繪制它們自己。大部分的游戲邏輯都是由板來(lái)負(fù)責(zé)的,所以制作這個(gè)游戲的最主要的部分就是建立一個(gè)窗體,把板作為數(shù)據(jù)成員,并且當(dāng)鼠標(biāo)按下時(shí)請(qǐng)求板的繪制。

 
 
 
  1. public class CSharpTicTacToe : Form {  
  2. public Player m_Player = Player.XPlayer;  
  3. TicTacToeBoard m_board = new TicTacToeBoard();  
  4. public CSharpTicTacToe() {  
  5. SetStyle(ControlStyles.Opaque, true);  
  6. Size = new Size(500, 500);  
  7. Text = "CSharp Tic Tac Toe";  
  8. m_board.Initialize();  
  9. //Finally add a button so that we can render to a bitmap  
  10. Button buttonRestart = new Button();  
  11. buttonRestart.Size=new Size(100,50);  
  12. buttonRestart.Location=new Point(300,100);  
  13. buttonRestart.Text="Restart";  
  14. buttonRestart.AddOnClick(new EventHandler(Restart));  
  15. this.Controls.Add(buttonRestart);  
  16. }  
  17. //Fired when the restart button is pressed  
  18. private void Restart(object sender, EventArgs e) {  
  19. m_Player = Player.XPlayer;  
  20. m_board.ClearBoard();  
  21. this.Invalidate();  
  22. }  
  23. protected override void OnMouseDown(MouseEventArgs e) {  
  24. base.OnMouseDown(e);  
  25. Positions position = m_board.HitTest(e.X, e.Y, m_Player);  
  26. if(position == Positions.Unknown) {  
  27. return;  
  28. }  
  29. if(m_Player == Player.XPlayer) {  
  30. m_Player = Player.OPlayer;  
  31. } else {  
  32. m_Player = Player.XPlayer;  
  33. }  
  34. this.Invalidate();  
  35. }  
  36. protected override void OnPaint(PaintEventArgs e) {  
  37. Graphics g = e.Graphics;  
  38. e.Graphics.SmoothingMode =  
  39. SmoothingMode.AntiAlias;  
  40. g.FillRectangle(new  
  41. SolidBrush(Color.FromARGB(250,  
  42. Color.White)), ClientRectangle);  
  43. m_board.Render(g);  
  44. }  
  45. public static void Main() {  
  46. Application.Run(new CSharpTicTacToe());  
  47. }  
  48. }  

包含了Windows Forms應(yīng)用程序的初始化代碼。注意這個(gè)過(guò)程就是初始化游戲板,創(chuàng)建一個(gè)Reset按鈕和其事件句柄,然后截獲MouseDown和Paint事件。

大部分的時(shí)間,響應(yīng)事件就是重載(override)正確的函數(shù)。例如,游戲要響應(yīng)MouseDown事件(通過(guò)把鼠標(biāo)的位置交給板來(lái)處理)和Paint 事件。當(dāng)它生成了事件,系統(tǒng)就會(huì)自動(dòng)的調(diào)用。你還可以為非系統(tǒng)的、用戶(hù)定義的事件如按鈕被按下而手工關(guān)聯(lián)事件句柄。該游戲也可以創(chuàng)建一個(gè)Reset按鈕來(lái)處理清除游戲板的事件。

Windows Forms編程最基本的就是基于用戶(hù)界面,請(qǐng)求你來(lái)繪制屏幕的過(guò)程。Windows Forms定義了一個(gè)捕獲WM_PAINT消息的良好方法。Form類(lèi)包含了一個(gè)名為OnPaint()的函數(shù)來(lái)讓你重載。通過(guò)重載這一方法,你可以捕獲繪圖事件并在屏幕上做你想做的。看一下例程的源代碼,你會(huì)注意到Paint事件的參數(shù)包括一個(gè)Graphics對(duì)象,它類(lèi)似于SDK編程時(shí)的一個(gè)設(shè)備上下文。Graphics對(duì)象包括了畫(huà)線和圖形、填充區(qū)域以及任何你想在屏幕上做的。

Tic-tac-toe游戲通過(guò)讓游戲板自繪來(lái)響應(yīng)Paint事件。如果你在例程中看一下TicTacToeBoard類(lèi)和BoardSpace類(lèi),你就會(huì)發(fā)現(xiàn)每一個(gè)類(lèi)都有一個(gè)Render()函數(shù)來(lái)使用Graphics對(duì)象的DrawLine()和DrawEllipse()方法在屏幕上繪圖。Windows Forms和C#的強(qiáng)大地方就在于你不必考慮管理GDI類(lèi)型的資源,因?yàn)?。NET Framework為你做了。

Windows Forms也提供給你很多的可行性,包括在Windows 窗體上添加菜單和圖標(biāo),顯示對(duì)話框和捕獲Paint和MouseDown事件以外的大量事件。以上介紹Windows Forms和C#的強(qiáng)大。


當(dāng)前文章:WindowsForms和C#的強(qiáng)大
文章轉(zhuǎn)載:http://uogjgqi.cn/article/coigesd.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流