Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Hàm main cứ báo lỗi hoài, help dùm em

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    0

    Unhappy Hàm main cứ báo lỗi hoài, help dùm em

    Em mới thử tạo 1 cái bàn cờ. Em tham khảo code trong cuốn How To Program 2001. Em chạy bằng VS 2008 mà sao hàm main của em cứ báo lỗi hoài.
    Em nhờ mấy anh chỉ giúp dùm em.

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Collections;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Linq;
    8. using System.Text;
    9. using System.Windows.Forms;
    10.  
    11. namespace WindowsFormsApplication2
    12. {
    13.     public class ChessGame : System.Windows.Forms.Form
    14.     {
    15.         private System.Windows.Forms.PictureBox pieceBox;
    16.         private System.Windows.Forms.MainMenu GameMenu;
    17.         private System.Windows.Forms.MenuItem gameItem;
    18.         private System.Windows.Forms.MenuItem newGameItem;
    19.         private System.ComponentModel.Container components = null;
    20.         // ArrayList for board tile images 23
    21.         ArrayList chessTile = new ArrayList();
    22.         // ArrayList for chess pieces 26
    23.         ArrayList chessPieces = new ArrayList();
    24.         // define index for selected piece
    25.         int selectedIndex = -1;
    26.         int[,] board = new int[8, 8];
    27.         // board array
    28.         private const int TILESIZE = 75;
    29.         [STAThread]
    30.         static void Main()
    31.         {
    32.             Application.Run(new ChessGame());
    33.         }
    34.         private void ChessGame_Load(object sender, System.EventArgs e)
    35.         {
    36.             // load chess board tiles
    37.             chessTile.Add(Bitmap.FromFile("lightTile1.png"));
    38.             chessTile.Add(Bitmap.FromFile("lightTile2.png"));
    39.             chessTile.Add(Bitmap.FromFile("darkTile1.png"));
    40.             chessTile.Add(Bitmap.FromFile("darkTile2.png"));
    41.  
    42.             ResetBoard(); // initialize board
    43.             Invalidate(); // refresh form
    44.  
    45.         } // end method ChessGame_Load
    46.  
    47.         // initialize pieces to start and rebuild board
    48.         private void ResetBoard()
    49.         {
    50.             int current = -1;
    51.             ChessPiece piece;
    52.             Random random = new Random();
    53.             bool light = false;
    54.             int type;
    55.  
    56.             // ensure empty arraylist
    57.             chessPieces = new ArrayList();
    58.  
    59.             // load whitepieces image
    60.             Bitmap whitePieces =(Bitmap)Image.FromFile("whitePieces.png");
    61.  
    62.             // load blackpieces image
    63.             Bitmap blackPieces =(Bitmap)Image.FromFile("blackPieces.png");
    64.  
    65.             // set whitepieces drawn first
    66.             Bitmap selected = whitePieces;
    67.  
    68.             // traverse board rows in outer loop
    69.             for (int row = 0;
    70.             row <= board.GetUpperBound(0); row++)
    71.             {
    72.                 // if at bottom rows, set to black pieces images
    73.                 if (row > 5)
    74.                     selected = blackPieces;
    75.  
    76.                 // traverse board columns in inner loop
    77.                 for (int column = 0;column <= board.GetUpperBound(1); column++)
    78.                 {
    79.                     // if first or last row, organize pieces
    80.                     if (row == 0 || row == 7)
    81.                     {
    82.                         switch (column)
    83.                         {
    84.                             case 0:
    85.                             case 7: // set current piece to rook
    86.                                 current =
    87.                                 (int)ChessPiece.Types.ROOK;
    88.                                 break;
    89.  
    90.                             case 1:
    91.                             case 6: // set current piece to knight
    92.                                 current =
    93.                                 (int)ChessPiece.Types.KNIGHT;
    94.                                 break;
    95.  
    96.                             case 2:
    97.                             case 5: // set current piece to bishop
    98.                                 current =
    99.                                 (int)ChessPiece.Types.BISHOP;
    100.                                 break;
    101.  
    102.                             case 3: // set current piece to king
    103.                                 current =
    104.                                 (int)ChessPiece.Types.KING;
    105.                                 break;
    106.  
    107.                             case 4: // set current piece to queen
    108.                                 current =
    109.                                 (int)ChessPiece.Types.QUEEN;
    110.                                 break;
    111.                         }
    112.  
    113.                         // create current piece at start position
    114.                         piece = new ChessPiece(current,
    115.                         column * TILESIZE, row * TILESIZE,
    116.                         selected);
    117.  
    118.                         // add piece to arraylist
    119.                         chessPieces.Add(piece);
    120.                     }
    121.  
    122.                     // if second or seventh row, organize pawns
    123.                     if (row == 1 || row == 6)
    124.                     {
    125.                         piece = new ChessPiece(
    126.                         (int)ChessPiece.Types.PAWN,
    127.                         column * TILESIZE, row * TILESIZE,
    128.                         selected);
    129.  
    130.                         // add piece to arraylist
    131.                         chessPieces.Add(piece);
    132.                     }
    133.                     // determine board piece type
    134.                     type = random.Next(0, 2);
    135.  
    136.                     if (light)
    137.                     {
    138.                         // set light tile
    139.                         board[row, column] = type;
    140.                         light = false;
    141.                     }
    142.                     else
    143.                     {
    144.                         // set dark tile
    145.                         board[row, column] = type + 2;
    146.                         light = true;
    147.                     }
    148.                 }
    149.  
    150.                 // account for new row tile color switch
    151.                 light = !light;
    152.             }
    153.  
    154.         } // end method ResetBoard
    155.  
    156.         // display board in form OnPaint event
    157.         private void ChessGame_Paint(
    158.          object sender, System.Windows.Forms.PaintEventArgs e)
    159.         {
    160.             // obtain graphics object
    161.             Graphics graphicsObject = e.Graphics;
    162.  
    163.             for (int row = 0;
    164.             row <= board.GetUpperBound(0); row++)
    165.             {
    166.                 for (int column = 0;
    167.                 column <= board.GetUpperBound(1); column++)
    168.                 {
    169.                     // draw image specified in board array
    170.                     graphicsObject.DrawImage(
    171.                     (Image)chessTile[board[row, column]],
    172.                     new Point(TILESIZE * column,
    173.                     TILESIZE * row));
    174.                 }
    175.             }
    176.         } // end method ChessGame_Paint
    177.  
    178.         // return index of piece that intersects point
    179.         // optionally exclude a value
    180.         private int CheckBounds(Point point, int exclude)
    181.         {
    182.             Rectangle rectangle; // current bounding rectangle
    183.             for (int i = 0; i < chessPieces.Count; i++)
    184.             {
    185.                 // get piece rectangle
    186.                 rectangle = GetPiece(i).GetBounds();
    187.  
    188.                 // check if rectangle contains point
    189.                 if (rectangle.Contains(point) && i != exclude)
    190.                     return i;
    191.             }
    192.  
    193.             return -1;
    194.  
    195.         }
    196.         private void pieceBox_Paint(
    197.         object sender, System.Windows.Forms.PaintEventArgs e)
    198.         {
    199.             // draw all pieces
    200.             for (int i = 0; i < chessPieces.Count; i++)
    201.                 GetPiece(i).Draw(e.Graphics);
    202.  
    203.         } // end method pieceBox_Paint
    204.  
    205.         private void pieceBox_MouseDown(
    206.         object sender, System.Windows.Forms.MouseEventArgs e)
    207.         {
    208.             // determine selected piece
    209.             selectedIndex =
    210.             CheckBounds(new Point(e.X, e.Y), -1);
    211.  
    212.         } // end method pieceBox_MouseDown
    213.  
    214.         // if piece is selected, move it
    215.         private void pieceBox_MouseMove(
    216.         object sender, System.Windows.Forms.MouseEventArgs e)
    217.         {
    218.             if (selectedIndex > -1)
    219.             {
    220.                 Rectangle region = new Rectangle(
    221.                 e.X - TILESIZE * 2, e.Y - TILESIZE * 2,
    222.                TILESIZE * 4, TILESIZE * 4);
    223.  
    224.                 // set piece center to mouse
    225.                 GetPiece(selectedIndex).SetLocation(
    226.                 e.X - TILESIZE / 2, e.Y - TILESIZE / 2);
    227.  
    228.                 // refresh immediate are
    229.                 pieceBox.Invalidate(region);
    230.             }
    231.  
    232.         } // end method pieceBox_MouseMove
    233.         private void pieceBox_MouseUp(
    234.             object sender, System.Windows.Forms.MouseEventArgs e)
    235.         {
    236.             int remove = -1;
    237.  
    238.             //if chess piece was selected
    239.             if (selectedIndex > -1)
    240.             {
    241.                 Point current = new Point(e.X, e.Y);
    242.                 Point newPoint = new Point(
    243.                 current.X - (current.X % TILESIZE),
    244.                 current.Y - (current.Y % TILESIZE));
    245.  
    246.                 // check bounds with point, exclude selected piece
    247.                 remove = CheckBounds(current, selectedIndex);
    248.                 // snap piece into center of closest square
    249.                 GetPiece(selectedIndex).SetLocation(newPoint.X,
    250.                 newPoint.Y);
    251.                 // deselect piece
    252.                 selectedIndex = -1;
    253.                 // remove taken piece
    254.                 if (remove > -1)
    255.                     chessPieces.RemoveAt(remove);
    256.             }
    257.             // refresh pieceBox to ensure artifact removal
    258.             pieceBox.Invalidate();
    259.         }
    260.         // helper function to convert
    261.         // ArrayList object to ChessPiece
    262.  
    263.         private ChessPiece GetPiece(int i)
    264.         {
    265.             return (ChessPiece)chessPieces[i];
    266.         } // end method GetPiece
    267.         private void newGameItem_Click(
    268.         object sender, System.EventArgs e)
    269.         {
    270.             ResetBoard(); // reinitialize board
    271.             Invalidate(); // refresh form
    272.         }
    273.         // end method newGameItem_Click 302 303 }
    274.     }
    275. }

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Collections;
    4. using System.ComponentModel;
    5. using System.Data;
    6. using System.Drawing;
    7. using System.Drawing.Drawing2D;
    8. using System.Linq;
    9. using System.Text;
    10. using System.Windows.Forms;
    11.  
    12.     public class ChessPiece
    13.  {
    14.  // define chess-piece type constants
    15. public enum Types
    16.  {
    17.      KING,
    18.      QUEEN,
    19.      BISHOP,
    20.      KNIGHT,
    21.      ROOK,
    22.      PAWN
    23. }
    24.  
    25.  private int currentType; // this object's type
    26.  private Bitmap pieceImage; // this object's image
    27.  
    28.  // default display location
    29.  private Rectangle targetRectangle =
    30.  new Rectangle( 0, 0, 75, 75 );
    31.  
    32.  // construct piece
    33.  public ChessPiece( int type, int xLocation,
    34.  int yLocation, Bitmap sourceImage )
    35.  {
    36.  currentType = type; // set current type
    37.  targetRectangle.X = xLocation; // set current x location
    38.  targetRectangle.Y = yLocation; // set current y location
    39.  
    40.  // obtain pieceImage from section of sourceImage
    41.  pieceImage = sourceImage.Clone(new Rectangle( type * 75, 0, 75, 75 ),System.Drawing.Imaging.PixelFormat.DontCare );
    42.  }
    43.     }
    44.  
    45.  // draw chess piece
    46.  public void Draw( Graphics graphicsObject )
    47.  {
    48.  graphicsObject.DrawImage( pieceImage, targetRectangle );
    49.  }
    50.  
    51.  // obtain this piece's location rectangle
    52.  public Rectangle GetBounds()
    53.  {
    54.  return targetRectangle;
    55.  } // end method GetBounds
    56.  
    57.  // set this piece's location
    58.  public void SetLocation( int xLocation, int yLocation )
    59.  {
    60.  targetRectangle.X = xLocation;
    61.  targetRectangle.Y = yLocation;
    62.  
    63.  } // end method SetLocation
    64. // end class ChessPiece

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Báo lỗi ở dòng nào? lỗi gì?
    Bạn phải post rõ ràng thì anh em mới giúp được bạn chứ? Code đưa thế kia thì làm sao test lỗi cho bạn được?
    Không biết ghi gì luôn ...

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    - Đoạn code thứ nhất bạn thiếu using System.Collections
    - Đoạn code thứ 2 bạn đem dấu } nằm phía trên dòng " // draw chess piece" xuống dưới cùng.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    02 2009
    Bài viết
    0

    Em đã coi rất kỹ. Em xin up lên nguyên 1 code có gì nhờ mấy anh coi dùm em. Em chạy bằng VS2008. Mong mấy anh chỉ dùm em. Em mới làm đồ họa lần đầu.
    Nên ko biết gì nhìu có gì nhờ mấy anh chỉ giáo thêm cho em.

    Lỗi Hàm Main
    Error 2 Program 'C:\Documents and Settings\NT Computer\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication6\WindowsForm sApplication6\obj\Debug\WindowsFormsApplication6.e xe' has more than one entry point defined: 'WindowsFormsApplication2.ChessGame.Main()'. Compile with /main to specify the type that contains the entry point. C:\Documents and Settings\NT Computer\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication6\WindowsForm sApplication6\Form1.cs 30 21 WindowsFormsApplication6
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi zengnt : 22-03-2009 lúc 11:08 PM.

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Sai là vì có 2 hàm main T.T
    Cánh Chym ứ mỏi

  6. #6
    Ngày gia nhập
    02 2009
    Bài viết
    0

    Mặc định Hàm main cứ báo lỗi hoài, help dùm em

    Thanks. Em đã sửa, chạy thi phát sinh thêm 2 lỗi nữa. Nhờ anh coi dùm em với.
    Error 2 Expected class, delegate, enum, interface, or struct C:\Documents and Settings\NT Computer\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication6\WindowsForm sApplication6\ChessPiece.cs 45 13 WindowsFormsApplication6
    Error 1 'WindowsFormsApplication2.Form1.Dispose(bool)': no suitable method found to override C:\Documents and Settings\NT Computer\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication6\WindowsForm sApplication6\Form1.Designer.cs 14 33 WindowsFormsApplication6
    Đã được chỉnh sửa lần cuối bởi zengnt : 22-03-2009 lúc 11:31 PM.

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình đã paste code của bạn vào project và biên dịch được rồi đó. Bạn chưa có cơ bản tốt nhất đừng làm theo những bài mẫu này, nó cần phải nắm rõ c# tương đối tốt. Code phải paste vào Program.cs mới chạy được.
    Attached Files Attached Files
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    02 2009
    Bài viết
    0

    uhm cám ơn anh nhìu. Hồi tối em coi lại và chạy được nhưng mà chưa tạo được bàn cờ.
    Em đang làm bài toán quận mã đi tuần. Lên diễm đàn thấy bạn kia nói trong cuốn how to program có hướng dẫn tạo bàn cờ nên em đọc và làm mà tới h em vẫn chưa vẽ được cái bàn cờ nữa. Anh có thể gợi ý cho em cho em thêm 1 chút ko anh.
    Làm bài tập phải viết giao diện mà chưa biết viết thế nào lên diễn dàn thấy nên chọn C# làm lun.

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình có một ví dụ nhỏ về vẽ bàn cờ vua đây.
    Attached Files Attached Files
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  10. #10
    Ngày gia nhập
    02 2009
    Bài viết
    0

    Cám ơn anh nhiều. Em thấy còn 1 số cái cần tham khảo thêm. Để em nghiên cứu thêm. Có gì anh chỉ giáo em với.

    Đã chọn C# em sẽ cố gắng tới cùng.

Các đề tài tương tự

  1. phân biệt void main và int main. Giúp em
    Gửi bởi tuanvu_n trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 19
    Bài viết cuối: 19-08-2014, 12:02 PM
  2. Kỹ thuật C Sự khác nhau giữa khai báo void main(), int main(void) và int main(int argv, char *argc[])?
    Gửi bởi v_huster38 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-11-2013, 12:10 PM
  3. Hàm trong C sự khác nhau giữa void main và main là gì
    Gửi bởi kubin1202 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 04-06-2013, 08:54 PM
  4. Kỹ thuật C Cần giúp về int main() và void main()
    Gửi bởi sibach trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 24-07-2012, 12:03 PM
  5. Lập trình C++ cách sử dụng hàm (int main, void main) trong C++?
    Gửi bởi DaiNam01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 15-01-2011, 10:44 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn