Chào anh chị! e đang viết 1 chương trình đơn giản là cho 2 HCN đơn giản chạy theo hướng ramdon. Vấn đề em gặp phải là e viết hàm va chạm để xử lý khi 2 HCN này chồng lên nhau
nhưng không thành công.
e đã dùng hàm intersectswith để phát hiện va chạm.
E dùng int huong = ramdon1.Next(1,5) tương ứng mỗi số sẽ là 1 hướng............
ở đây là e muốn khi 2 HCN chạm nhau:
1. 1 hình dừng lại chờ HCN chạy qua rồi sau đó chạy tiếp.
Hoặc là cả 2 hình chữ nhật đổi hướng....chạy theo hướng khác.
ý tưởng là vậy nhưng e làm mãi ko được. Mong anh chị giúp đỡ :sogood::sogood:
nhưng không thành công.
e đã dùng hàm intersectswith để phát hiện va chạm.
E dùng int huong = ramdon1.Next(1,5) tương ứng mỗi số sẽ là 1 hướng............
ở đây là e muốn khi 2 HCN chạm nhau:
1. 1 hình dừng lại chờ HCN chạy qua rồi sau đó chạy tiếp.
Hoặc là cả 2 hình chữ nhật đổi hướng....chạy theo hướng khác.
ý tưởng là vậy nhưng e làm mãi ko được. Mong anh chị giúp đỡ :sogood::sogood:
Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace di_chuyen_hcm { public partial class Form1 : Form { private int so1; private int so2; private int so11; private int so22; private int x; private int y; private int x1; private int y1; private int width; private int height; Random random1 = new Random(); Random random2 = new Random(); Rectangle r; Rectangle r1; bool run = true; bool run1 = true; public Form1() { InitializeComponent(); x = y = 0; width = 100; height = 50; x1 = this.ClientSize.Width - width; y1 = this.ClientSize.Height - height; r = new Rectangle(x, y, width, height); r1 = new Rectangle(x1, y1, width, height); so1 = random1.Next(1, 5); so2 = random2.Next(1, 5); } private void Form1_Paint(object sender, PaintEventArgs e) { r = new Rectangle(x, y, width, height); r1 = new Rectangle(x1, y1, width, height); e.Graphics.DrawRectangle(new Pen(Brushes.Blue, 2), r); e.Graphics.DrawRectangle(new Pen(Brushes.Red, 2), r1); } private void timer1_Tick(object sender, EventArgs e) { if (so1 == 1) { len(); } if (so1 == 2) { xuong(); } if (so1 == 3) { trai(); } if (so1 == 4) { phai(); } if (so2 == 1 ) { len1(); } if (so2 == 2) { xuong1(); } if (so2 == 3) { trai1(); } if (so2 == 4) { phai1(); } vacham(); Invalidate(); this.DoubleBuffered = true; } public void len() { y -= 3; if (y <= 0) { y = 0; so1 = random1.Next(1, 5); } } public void xuong() { y += 3; if (y + height >= this.ClientSize.Height) { y = this.ClientSize.Height - height; so1 = random1.Next(1, 5); } } public void trai() { x -= 3; if (x <= 0) { x = 0; so1 = random1.Next(1, 5); } } public void phai() { x += 3; if (x + width>= this.ClientSize.Width) { x = this.ClientSize.Width - width; so1 = random1.Next(1, 5); } } public void len1() { y1 -= 3; if (y1 <= 0) { y1 = 0; so2 = random2.Next(1, 5); } } public void xuong1() { y1 += 3; if (y1 + height >= this.ClientSize.Height) { y1 = this.ClientSize.Height - height; so2 = random2.Next(1, 5); } } public void trai1() { x1 -= 3; if (x1 <= 0) { x1 = 0; so2 = random2.Next(1, 5); } } public void phai1() { x1 += 3; if (x1 + width >= this.ClientSize.Width) { x1 = this.ClientSize.Width - width; so2 = random2.Next(1, 5); } } // public void vacham() // { // if (r.IntersectsWith(r1)) // { // // } // } } }
Comment