Hiển thị kết quả từ 1 đến 1 / 1
  1. #1
    Tham gia
    15-01-2010
    Bài viết
    4
    Like
    0
    Thanked 0 Times in 0 Posts

    Xin hướng dẫn code game tank !

    - Chào các bạn, đây là bài đầu tiên của mình, sau bao nhiêu ngày search hoài không ra cách làm mình post lên đây lun (rất hâm mộ HS, Zstar, nhokviet....)
    - Diễn đàn chuyên về XNA không biết có ai chịu giải thích dùm mình ko ?


    Đây là cái giao diện game Tank lỗi của mình (chỉ mới có map và tank, tank lấy đỡ hình mũi tên).


    Uploaded with ImageShack.us


    ---> mình có một số thắc mắc là:
    1.Mình dùng ImageList để vẽ tank, chưa rành Sprite lắm, còn gà mờ, ko biết có được ko ?

    2.map mình vẽ bằng mảng 2 chiều được ko, có dễ quản lý ko ?

    ----> Mình mún hỏi là:
    1.Làm sao mình quản lý được khi tank đụng vô gạch, đá, mình mún tank chỉ duy chuyển vào cái nền đen thôi, còn đụng mấy cái kia thì nó tự dừng lại

    2.Khi tank di chuyển nó để lại cái nền màu xám che mất background lun, mình chỉ mún tăng di chuyển thôi

    ----> các bạn chỉ mình cách làm nha, mình còn quá trời câu hỏi mà không dám hỏi nhiều sợ rối


    Code của mình:
    cái này là vẽ map, sao mình thấy cách này thủ công quá

    Code:
    int[][] map = new int[14][];
            Graphics grp;
    
            
            //thiet ke ban do
    
            private void button1_Click(object sender, EventArgs e)
            {
                int[][] map = new int[14][];
                map[0] = new int[] { 3, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3 };
                map[1] = new int[] { 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
                map[2] = new int[] { 2, 2, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
                map[3] = new int[] { 1, 1, 0, 0, 1, 3, 1, 1, 2, 0, 0, 0, 4, 0 };
                map[4] = new int[] { 0, 4, 0, 0, 3, 3, 0, 0, 2, 2, 0, 0, 4, 4 };
                map[5] = new int[] { 0, 4, 4, 0, 3, 3, 0, 0, 2, 0, 0, 0, 4, 4 };
                map[6] = new int[] { 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4 };
                map[7] = new int[] { 0, 4, 4, 4, 4, 0, 0, 0, 2, 0, 0, 0, 0, 4 };
                map[8] = new int[] { 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                map[9] = new int[] { 4, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 1, 0, 1 };
                map[10] = new int[] { 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1 };
                map[11] = new int[] { 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 1, 3, 1 };
                map[12] = new int[] { 0, 0, 4, 4, 4, 0, 0, 0, 2, 0, 0, 3, 3, 1 };
                map[13] = new int[] { 0, 0, 4, 4, 0, 0, 0, 0, 2, 0, 0, 3, 1, 1 };
    
                Image background = Image.FromFile("source.png");
    
                for (int row = 0; row <= 13; row++)
                {
                    for (int col = 0; col <= 13; col++)
                    {
                        int lo_bk = map[row][col];
                        int loCell_X = col * 40;
                        int loCell_Y = row * 40;
                        Rectangle dest = new Rectangle(loCell_X, loCell_Y, 40, 40);
    
                        int lo_SourceX = lo_bk * 40;
                        int lo_SourceY = 0;
                        Rectangle source = new Rectangle(lo_SourceX, lo_SourceY, 40, 40);
    
                        grp.DrawImage(background, dest, source, GraphicsUnit.Pixel);
                    }
         
    
                }
            }

    còn cái này là vẽ tăng bằng imagelist

    Code:
         public int dx = 0;
            public int dy = 0;
    
            private void Tank_KeyDown(object sender, KeyEventArgs e)
            {
                switch (e.KeyCode)
                {
                    case Keys.W:
                        TankRun.Image = MyPics.Images[0];
                        dx = 0;
                        dy = -2;
                        break;
    
                    case Keys.S:
                        TankRun.Image = MyPics.Images[1];
                        dx = 0;
                        dy = 2;
                        break;
    
                    case Keys.A:
                        TankRun.Image = MyPics.Images[2];
                        dx = -2;
                        dy = 0;
                        break;
    
                    case Keys.D:
                        TankRun.Image = MyPics.Images[3];
                        dx = 2;
                        dy = 0;
                        break;
                }
            }
    
            int newX;
            int newY;
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                newX = TankRun.Location.X + dx;
                newY = TankRun.Location.Y + dy;
    
                if (newX > this.Width - TankRun.Width)
                {
                    dx = -dx;
                }
    
                if (newX < 0)
                {
                    dx = -dx;
                }
    
                if (newY > this.Height - TankRun.Height)
                {
                    dy = -dy;
                }
                if (newY < 0)
                {
                    dy = -dy;
                }
                Point newloc = new Point(newX, newY);
                TankRun.Location = newloc;
    
    
            }
    mình chỉ mới học c# có 2 tuần mà thầy bắt làm cái này, đúng là làm khó nhau mà, định đăng bên codepro nữa mà lock signup mất tiu

    đây là file source, Tank.cs
    http://www.mediafire.com/?ctg30sk2pq9u929

    hix, bạn nào có yahoo support mình cái nha, học một mình oải quá
    yahoo: Dogiasi@yahoo.com
    Được sửa bởi PINPINPON lúc 13:45 ngày 29-01-2011 Reason: sửa title
    Quote Quote

Bookmarks

Quy định

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