- 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
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 tiuCode: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; }
đâ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
Bookmarks