2012-10-03 30 views
-1
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Default2 : System.Web.UI.Page 
{ 
    public enum Suit 
    { 
     Club, 
     Diamond, 
     Heart, 
     Spade 
    } 

    public static int i = 0; 

    public class Card 
    { 
     private Suit suit; 
     private int rank; 
     private string pictureUrl; 

     public Suit Suit 
     { 
      get { return suit;} 
      set { suit = value; } 
     } 

     public int Rank 
     { 
      get { return rank; } 
      set { rank = value; } 
     } 

     public string PictureUrl 
     { 
      get { return pictureUrl; } 
      set { pictureUrl = value; } 
     } 

     public Card(Suit suit, int rank, string pictureUrl) 
     { 
      this.suit = suit; 
      this.rank = rank; 
      this.pictureUrl = pictureUrl; 
     } 
    } 

    protected void InitDeck(List<Card> deck) 
    { 
     for (int suit = 0; suit < 4; suit++) 
      for (int rank = 0; rank < 13; rank++) 
      { 
       string strPath = "Images\\" + (suit * 13 + rank).ToString() + ".png"; 
       deck.Add(new Card((Suit)suit, rank + 2, strPath)); 
      } 
    } 

    protected void InitGameBoard(Card[,] gameBoard, List<Card> deck) 
    { 
     Random rnd = new Random(); 
     int rndPosition; 

     for(int i = 0; i < 5; i++) 
      for (int j = 0; j < 5; j++) 
      { 
       if (i == 4 && j == 4) 
       { 
        gameBoard[i, j] = new Card(0, 100, "Images\\b1fv.png"); 
       } 
       else 
       { 
        rndPosition = rnd.Next(0, deck.Count); 
        gameBoard[i, j] = deck[rndPosition]; 
        deck.RemoveAt(rndPosition); 
       } 
      } 
    } 

    protected void DrawTable(Card[,] gameBoard) 
    { 
     Table gameTable = new Table(); 
     gameTable.GridLines = GridLines.Both; 
     gameTable.BorderWidth = 4; 
     gameTable.ID = "gameTable"; 

     ImageButton imgBtn = null; 

     for (int i = 0; i < 5; i++) 
     { 
      TableRow tblRow = new TableRow(); 
      for (int j = 0; j < 5; j++) 
      { 
       TableCell tblCell = new TableCell(); 
       tblCell.HorizontalAlign = HorizontalAlign.Center; 
       imgBtn = new ImageButton(); 
       imgBtn.ID = i.ToString() + j.ToString(); 
       imgBtn.Width = 80; 
       imgBtn.Height = 105; 
       imgBtn.ImageUrl = gameBoard[i, j].PictureUrl; 
       imgBtn.Click += new ImageClickEventHandler(Checking); 
       tblCell.Controls.Add(imgBtn); 
       tblRow.Cells.Add(tblCell); 
      } 

      gameTable.Rows.Add(tblRow);   
     } 

     Panel1.Controls.Add(gameTable);  
    } 

    protected void Checking(System.Object sender, System.EventArgs e) 
    { 
     ImageButton imgBtn = (ImageButton)sender; 
     int imgBtnIdNo = int.Parse(imgBtn.ID); 
     Label1.Text = i.ToString(); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     List<Card> deck = new List<Card>(); 
     Card[,] gameBoard = new Card[5, 5];  
     InitDeck(deck); 
     InitGameBoard(gameBoard, deck); 
     DrawTable(gameBoard); 

    } 
} 

這是一個雙贏的比賽,我正在建立一個隨機的5×5桌子,裏面裝滿了空白單元格外的卡片,你需要按下一個空白單元格的圖像按鈕來切換它們的位置和建築物撲克的行手,但evrey時間im按一個圖像按鈕桌子不斷產生。如何避免使用任何圖像按鈕點擊Page_Load重新運行?

回答

0

默認情況下,按鈕按鈕將事件發送到服務器(並重新加載頁面)。要在客戶端中處理它,您需要使用OnClientClick屬性(http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.button.onclientclick.aspx)