2012-01-26 24 views
6

Làm việc trong môi trường kinh doanh, tôi không thực sự nhận được mã hoặc sử dụng giao diện điều khiển cũ tốt nữa. Công việc của tôi là lặp đi lặp lại và do đó không thực sự đầy thử thách.Phân công mảng Rắn

Tôi quyết định thử thách bản thân bằng cách viết trò chơi rắn trong bảng điều khiển C#; và cậu bé đã làm nó làm cho bộ não của tôi hoạt động. Tôi không bao giờ phải nghĩ điều này một cách khó khăn hàng ngày, nhưng tôi cảm thấy các kỹ năng lập trình của tôi không được tốt hơn.

Tôi gặp sự cố. Cách tiếp cận cơ bản mà tôi đã thực hiện là tạo ra một lớp rắn và một lớp thực phẩm. Lớp con rắn sử dụng một mảng để lưu trữ tất cả các tọa độ và sau đó một lớp bản vẽ quyết định những gì coords để vẽ trên màn hình.

Vấn đề là khi bạn di chuyển con rắn, mảng sẽ lấp đầy (tối đa là 250 cho hiệu suất), vì vậy khi tôi đạt đến cuối mảng, tôi muốn sao chép vài chuỗi cuối cùng vào một mảng tạm thời, tuôn ra mảng ban đầu và sao chép các cop tạm thời trở lại mảng chính.

Sự cố tôi đang sao chép x co lại trở lại mảng ban đầu. Tôi quyết định làm điều đó bằng tay để kiểm tra nhưng giải pháp này luôn làm cho con rắn tội nghiệp của tôi để lại một trong những phân đoạn của nó trên màn hình khi nó không nên ở đó.

Làm cách nào để tôi thực hiện việc này theo chương trình?

spoints[4, 0] = stemp[249, 0]; 
spoints[4, 1] = stemp[249, 1]; 
spoints[4, 2] = stemp[249, 2]; 

spoints[3, 0] = stemp[248, 0]; 
spoints[3, 1] = stemp[248, 1]; 
spoints[3, 2] = stemp[248, 2]; 

spoints[2, 0] = stemp[247, 0]; 
spoints[2, 1] = stemp[247, 1]; 
spoints[2, 2] = stemp[247, 2]; 

spoints[1, 0] = stemp[246, 0]; 
spoints[1, 1] = stemp[246, 1]; 
spoints[1, 2] = stemp[246, 2]; 

spoints[0, 0] = stemp[245, 0]; 
spoints[0, 1] = stemp[245, 1]; 
spoints[0, 2] = stemp[245, 2]; 

Tôi thực sự không ngại đăng toàn bộ trò chơi ở đây nếu ai đó thực sự muốn tìm hiểu mã.

+3

Bạn đang làm cho cuộc sống của bạn khó khăn hơn bằng cách sử dụng mảng thay vì bộ sưu tập đã nhập/từ điển. –

Trả lời

1

Xem xét sử dụng mảng cho 'điểm chung' không vẽ điểm, tạo một lớp khác có tên là SnakePart để lớp học Snake của bạn có các phần có thể quản lý.

Bạn cũng có thể tạo một lớp mảng tùy chỉnh để trong mỗi phần của lưới, bạn sẽ chỉ có giá trị hasSnakePart và thao tác điều đó.

+0

Hyp: bạn đang làm cho bộ não của tôi bị tổn thương, lần cuối tôi lập trình như thế này là 7 năm trước ở trường trung học, vì vậy tôi muốn nó là VERY cơ bản lol – Batista

+0

Ah nhưng đó là phần thú vị phải không! Làm cho bộ não của bạn hoạt động, làm cho nó trở nên thú vị! – hyp

+0

Đúng, nhưng các bước bé :) tiếp theo là tạo ra một con rắn AI để trò chơi thú vị và sau đó để làm cho rắn bắn nọc độc để làm chậm con rắn khác xuống vv – Batista

3

Có vẻ như một mảng là loại dữ liệu sai cho mục đích của bạn. Thay vào đó, hãy cân nhắc sử dụng một số List vì nó cho phép linh hoạt hơn khi di chuyển các mục nhập xung quanh.

+0

Cảm ơn! Tôi sẽ sử dụng một danh sách, nhưng trong thời gian này tôi chỉ muốn biết làm thế nào để làm điều đó theo lập trình :) – Batista

+3

Thậm chí tốt hơn: sử dụng hàng đợi –

1

Bạn đã nghĩ đến khi bạn thêm một tọa độ mới vào 'mặt trước' của mảng, hãy xóa một tọa độ ở phía sau '' khi bạn đi. Về cơ bản, một loại bộ sưu tập kiểu FIFO ?! Bạn có thể sử dụng một Hàng đợi trong C#. Hãy xem bài viết này và xem nó có giúp gì không ?! http://www.dotnetperls.com/queue.

Chúc mừng,
Chris.

+0

CHris, im vẽ tất cả các điểm nhưng lớp vẽ của tôi vẽ tất cả trừ điểm cuối cùng trong mỗi iteration.I đã không đi tuyến đường này bởi vì sau đó con rắn sẽ không có đuôi và chỉ có 1 nhân vật di chuyển trên màn hình lol - chỉnh sửa - xin lỗi tôi thấy logic của bạn bây giờ, tôi sẽ chỉ cần có một var mà theo dõi số lượng phân khúc con rắn có. – Batista

Các vấn đề liên quan