Admin đã trở lại và lợi hại gấp đôi :D
Sun May 18, 2014 1:05 pm by admin_huyetsat
Sorry mọi người vì mình vắng mặt quá lâu, mình là HuyetSat, admin đây.
Hiện tại mình đã chuyển nền tảng phát triển game sang mobile (dùng libgdx framework) và cũng đang dev game và up lên play store, ai dùng đt android thì tải về ủng hộ ad nha:
play.google.com/store/apps/developer?id=Top+Game+Free
[img]…
[ Full reading ]
Hiện tại mình đã chuyển nền tảng phát triển game sang mobile (dùng libgdx framework) và cũng đang dev game và up lên play store, ai dùng đt android thì tải về ủng hộ ad nha:
play.google.com/store/apps/developer?id=Top+Game+Free
[img]…
[ Full reading ]
Comments: 1
Game4V và Event "Viết bài hay, nhận ngay quà tặng"
Mon Feb 20, 2012 11:18 pm by noheart91
Game4V là một trong những cộng đồng game thủ đầu tiên của Việt Nam với lịch sử hơn 5 năm hình thành và phát triển. Sau nhiều biến động, có thể nói hiện nay G4V là một cộng đồng game hoạt động hoàn toàn độc lập, không bị ảnh hưởng bởi tổ chức chuyên nghiệp nào với nền tảng máy chủ được trang bị từ …
[ Full reading ]
[ Full reading ]
Comments: 0
Mình sẽ tạm dừng hoạt động một thời gian
Fri Sep 02, 2011 7:19 am by HuyetSat
Vì lý do cá nhân nên tạm thời mình sẽ ko support xna trên các diễn đàn nữa.
Bạn nào gặp vấn đề về xna cứ mail trực tiếp cho mình.
thanh_vinh648@yahoo.com
Thân
Bạn nào gặp vấn đề về xna cứ mail trực tiếp cho mình.
thanh_vinh648@yahoo.com
Thân
Comments: 0
xin cho minh tham gia voi
Fri Apr 15, 2011 12:35 am by luongthanhbinh3824
Mình giỏi 3ds max có thể cho mình làm designer được không anh HuyetSat
Email: thanh_binh3824@yahoo.com
Phone: 0633703673
Email: thanh_binh3824@yahoo.com
Phone: 0633703673
Comments: 1
Latest topics
» Xin TUT game bắn trứng khủng longby anhkhoa2110 Mon Mar 16, 2015 4:29 pm
» xna getRGB texture image?
by bachdienquan Thu Feb 05, 2015 8:34 am
» Cần giúp đỡ về hiệu ứng hình ảnh khi va chạm
by phiemltv Fri Nov 28, 2014 12:20 pm
» Cho mình hỏi về boundbox
by septimus2810 Mon Jul 21, 2014 10:08 am
» Hỏi về cách di chuyển 1 điểm ở tọa độ này sang tọa độ khác cho trước.
by septimus2810 Mon Jul 21, 2014 10:02 am
» Admin đã trở lại và lợi hại gấp đôi :D
by konamij Fri Jun 27, 2014 2:50 pm
» lỗi An unhandled exception of type 'System.NullReferenceException'
by _VH_HV_ Mon Jun 16, 2014 1:59 pm
» networking cho game xna 2d
by admin_huyetsat Tue May 20, 2014 1:04 pm
» hướng dẫn traning C# chuẩn bị cho xna
by lqchinh Tue Apr 15, 2014 11:31 pm
» HelpGameBom2D
by thaimavn Mon Mar 24, 2014 10:35 am
» Hỏi về cách di chuyển 1 điểm ở tọa độ này sang tọa độ khác cho trước.
by bocapzz Mon Feb 24, 2014 10:45 pm
» Hỏi về cài đặt XNA game studio 4.0
by bocapzz Sat Dec 14, 2013 12:33 am
» Cuộc thi lập trình game thế giới 2013 với cơ hội thăm quan Phần Lan
by viope Tue Oct 29, 2013 4:51 pm
» chơi game làm bởi xna như thế nào?
by thinnhph01957 Sat Sep 14, 2013 3:23 pm
» Với 1 Game cái gì là quan trọng ?
by qhhqnavy Tue Aug 13, 2013 8:09 am
» Load fiel .fbx vào Xna bị mất màu
by qhhqnavy Wed Aug 07, 2013 7:42 pm
» Help me hàm Update và Draw với
by sieuthi Mon Dec 24, 2012 11:56 pm
» Hỏi về load hình chồng nhau trong XNA
by sieuthi Mon Dec 24, 2012 11:49 pm
» nơi ghi danh tham gia Game Development Team
by echdonghop Fri Dec 21, 2012 1:56 pm
» tài liệu cơ bản 5 chương cho xna
by Nelson Quang Thu Nov 22, 2012 12:26 pm
[TUT]Xe tăng biết bắn.
2 posters
Trang 1 trong tổng số 1 trang
[TUT]Xe tăng biết bắn.
Nguồn: XNAVN.com
Ở bài: [URL="http://xnavn.com/showthread.php?35-Tut-Nh%C3%A2n-v%E1%BA%ADt-di-chuy%E1%BB%83n-v%E1%BB%9Bi-List-v%C3%A0-Rectangle&p=50#post50"]Tạo xe tăng di chuyển[/URL]
Mình đã hướng dẫn cách tạo nhân vật và di chuyển, sang bài này mình xin hướng dẫn các bạn cách cho xe biết bắn .
Tài nguyên:
Mô hình xe cũ + code cũ
Đây là Code tớ đã làm xong: Các bạn tham khảo nha
Bây giờ ta có lớp Xe Tăng, tiếp theo ta cần tạo 1 lớp VienDan. Lớp này cũng có 1 số thuộc tính tương tự với lớp Xe Tăng. Khai báo các biến cho lớp.
Hàm cắt hình thì tương tự như bên lớp XeTank, ta chia cái hình ảnh ra làm 4 khung hình.
Còn đây là Hàm "mở khóa" cho viên đạn để dùng lại
Cuối cùng là hàm Draw game đồ họa mà ko có cái này thì chơi cái gì nhỉ )
Lớp xe tăng phần khai báo viến chúng ta thêm 2 cái nữa để dùng cho lớp VienDan;
Thứ nhất là biến truyền vào mình sửa lại là List<Texture2D> HinhAnhVao Vì ở đây có 2 hình được đưa vào là VienDan và Tank0 mình làm cái này cho gọn và theo qquy ước riêng của mình là HinhAnhVao[0] là Xe Tank còn HinhAnhVao[1] là VienDan.
Thứ 2 là tớ tạo 1 ListDan = new List<VienDan>(); để cho nó chứa danh sách đạn của bạn.
Rồi giờ tới hàm bắn cho xe tăng
Trong hàm DieuKhien(XeTank Tank1) các bạn thêm 1 button để bắn bằng bằng nha.
Và hàm LoadContent cũng sửa lại 1 xíu.
Còn hàm update chỉ cần gọi các hàm Con cần thiết ra
Ở bài: [URL="http://xnavn.com/showthread.php?35-Tut-Nh%C3%A2n-v%E1%BA%ADt-di-chuy%E1%BB%83n-v%E1%BB%9Bi-List-v%C3%A0-Rectangle&p=50#post50"]Tạo xe tăng di chuyển[/URL]
Mình đã hướng dẫn cách tạo nhân vật và di chuyển, sang bài này mình xin hướng dẫn các bạn cách cho xe biết bắn .
Tài nguyên:
Mô hình xe cũ + code cũ
Hình ảnh viên đạn:
Đây là Code tớ đã làm xong: Các bạn tham khảo nha
- Code:
Download: http://www.mediafire.com/?krwid5izsny6rt3
Bây giờ ta có lớp Xe Tăng, tiếp theo ta cần tạo 1 lớp VienDan. Lớp này cũng có 1 số thuộc tính tương tự với lớp Xe Tăng. Khai báo các biến cho lớp.
- Code:
class VienDan
{
public Vector2 ToaDo { get; set; }
public Texture2D HinhAnh { get; set; }
public List<Rectangle> Frame { get; set; }
public int HuongDiChuyen { get; set; }
public bool HienRa { get; set; } //Vì sao có biến này tớ sẽ giải thích sau.
}
- Code:
public VienDan(Texture2D HinhAnhMoi, Vector2 ToaDoMoi, int HDChuyen)
{
HinhAnh = HinhAnhMoi;
ToaDo = ToaDoMoi;
HienRa = true;
XacDinhHuongDi(HDChuyen);
CatHinh();
}
Hàm cắt hình thì tương tự như bên lớp XeTank, ta chia cái hình ảnh ra làm 4 khung hình.
- Code:
public void CatHinh()
{
Frame = new List<Rectangle>();
Frame.Add(new Rectangle(0, 0, 9, 20));
Frame.Add(new Rectangle(11, 0, 9, 20));
Frame.Add(new Rectangle(24, 11, 20, 9));
Frame.Add(new Rectangle(24, 0, 20, 9));
}
- Code:
public void XacDinhHuongDi(int HDChuyen)
{
switch (HDChuyen)
{
case 0:
HuongDiChuyen = 0;
break;
case 5:
HuongDiChuyen = 1;
break;
case 10:
HuongDiChuyen = 2;
break;
case 15:
HuongDiChuyen = 3;
break;
}
}
- Code:
public void DiChuyen()
{
if (HienRa == true)
{
switch (HuongDiChuyen)
{
case 0:
ToaDo += new Vector2(0, 1);
break;
case 1:
ToaDo += new Vector2(0, -1);
break;
case 2:
ToaDo += new Vector2(1, 0);
break;
case 3:
ToaDo += new Vector2(-1, 0);
break;
}
}
KiemTraManHinh();
}
- Code:
public void KiemTraManHinh()
{
if (ToaDo.X > 300 || ToaDo.X < 0 || ToaDo.Y > 300 || ToaDo.Y < 0)
{
HienRa = false;
}
}
Còn đây là Hàm "mở khóa" cho viên đạn để dùng lại
- Code:
public void HienLen(Vector2 ToaDoVao, int Huong)
{
HienRa = true;
ToaDo = ToaDoVao;
HuongDiChuyen = HuongDiChuyen;
}
Cuối cùng là hàm Draw game đồ họa mà ko có cái này thì chơi cái gì nhỉ )
- Code:
public void Draw(SpriteBatch spriteBatch)
{
if (HienRa == true)
spriteBatch.Draw(HinhAnh,ToaDo,Frame[HuongDiChuyen],Color.White);
}
Lớp xe tăng phần khai báo viến chúng ta thêm 2 cái nữa để dùng cho lớp VienDan;
- Code:
public Texture2D HinhAnhVienDan { get; set; }
public List<VienDan> ListDan { get; set; }
- Code:
public XeTank( List<Texture2D> HinhAnhVao, Vector2 ToaDoVao)
{
HinhAnh = HinhAnhVao[0];
HinhAnhVienDan = HinhAnhVao[1];
ToaDo = ToaDoVao;
Frame = new List<Rectangle>();
HuongDiChuyen = 0;
ID = 0;
CatHinh();
ListDan = new List<VienDan>();
}
Thứ nhất là biến truyền vào mình sửa lại là List<Texture2D> HinhAnhVao Vì ở đây có 2 hình được đưa vào là VienDan và Tank0 mình làm cái này cho gọn và theo qquy ước riêng của mình là HinhAnhVao[0] là Xe Tank còn HinhAnhVao[1] là VienDan.
Thứ 2 là tớ tạo 1 ListDan = new List<VienDan>(); để cho nó chứa danh sách đạn của bạn.
Rồi giờ tới hàm bắn cho xe tăng
- Code:
public void Ban()
{
if (ListDan.Count == 0) //Kiểm tra chưa có đạn thì tạo 1 đạn mới
{
ListDan.Add(new VienDan(HinhAnhVienDan, ToaDo, HuongDiChuyen));
}
else //Có đạn rồi thì coi thằng nào bị khóa mở ra xài lại
{
for (int i = 0; i < ListDan.Count; i++)
{
if (ListDan[i].HienRa == false)
{
ListDan[i].HienLen(ToaDo, HuongDiChuyen);
return;
}
}
ListDan.Add(new VienDan(HinhAnhVienDan, ToaDo, HuongDiChuyen)); //Còn ko có em nào khóa cũng xin 1 cái mới
}
}
- Code:
public void DiChuyenDan()
{
if (ListDan.Count != 0)
{
for (int i = 0; i < ListDan.Count; i++)
{
ListDan[i].DiChuyen();
}
}
}
- Code:
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(HinhAnh, ToaDo, Frame[ID], Color.White); //Bạn nhớ ở đây cho Frame[ID] vào nha
for (int i = 0; i < ListDan.Count; i++)
ListDan[i].Draw(spriteBatch);
}
Trong hàm DieuKhien(XeTank Tank1) các bạn thêm 1 button để bắn bằng bằng nha.
- Code:
if (keyboardState.IsKeyDown(Keys.A))
{
Tank1.Ban();
}
Và hàm LoadContent cũng sửa lại 1 xíu.
- Code:
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
List<Texture2D> HinhAnh = new List<Texture2D>();
HinhAnh.Add(Content.Load<Texture2D>("tank0"));
HinhAnh.Add(Content.Load<Texture2D>("VienDan"));
Tank = new XeTank(HinhAnh, new Vector2(200, 200));
}
Còn hàm update chỉ cần gọi các hàm Con cần thiết ra
- Code:
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
DieuKhien(Tank);
Tank.DiChuyenDan();
base.Update(gameTime);
}
nhokviet- Tổng số bài gửi : 5
Điểm : 13
Danh Tiếng : 1
Join date : 14/11/2010
Re: [TUT]Xe tăng biết bắn.
Thanks for Share!
Hi, Nhưng bài của cậu mà ấn Chặt nút A để bắn nhìn đạn nó thành như rồng đang phun nửa , ngộ quá!
Và viên đạn ko vào giữa cái xe tăng!
Bạn sửa được ko?
Hi, Nhưng bài của cậu mà ấn Chặt nút A để bắn nhìn đạn nó thành như rồng đang phun nửa , ngộ quá!
Và viên đạn ko vào giữa cái xe tăng!
Bạn sửa được ko?
yuchi_1k91- Tổng số bài gửi : 17
Điểm : 25
Danh Tiếng : 0
Join date : 28/10/2010
Age : 32
Đến từ : BKAP
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết