Mục lục:

Minesweeper: 5 bước (có hình ảnh)
Minesweeper: 5 bước (có hình ảnh)

Video: Minesweeper: 5 bước (có hình ảnh)

Video: Minesweeper: 5 bước (có hình ảnh)
Video: [Minesweeper] Hướng dẫn dò mìn cơ bản đến NÂNG CAO 2024, Tháng mười một
Anonim
Minesweeper
Minesweeper

Đối với dự án cuối cùng CPE 133 của chúng tôi, Chase và tôi quyết định tạo một trò chơi ‘Minesweeper’ sử dụng nút và chuyển đổi đầu vào từ bảng Basys-3 cũng như mã VHDL. Một cái tên hay hơn cho trò chơi rất có thể là ‘Russian Roulette’, tuy nhiên chúng tôi muốn sử dụng một cái tên thân thiện với gia đình hơn. Trò chơi liên quan đến việc người dùng nhấn nút giữa trên bảng Basys để chỉ định ngẫu nhiên một trong 16 công tắc để 'hoạt động' với một quả bom. Sau đó, hai người chơi lần lượt bật công tắc lên, lần lượt cho đến khi một trong hai người chơi bật công tắc bằng ‘quả bom’. Khi điều đó xảy ra, màn hình bảy phân đoạn sẽ thông báo cho người chơi rằng người chơi đó vừa thua trò chơi.

Bước 1: Tổng quan

Dự án sử dụng nhiều mô-đun VHDL mà chúng tôi đã sử dụng trong suốt quý này. Một bộ đếm bốn bit được sử dụng cùng với cạnh đồng hồ để mô phỏng một số bốn bit ngẫu nhiên để kích hoạt một trong các công tắc. Biểu đồ trạng thái cũng được sử dụng để xuất các từ khác nhau cho màn hình bảy phân đoạn, từ ‘CHƠI’ khi người chơi đang ở giữa trò chơi, đến ‘LOSE’ khi một trong số người chơi đã bật công tắc đang hoạt động.

Bước 2: Vật liệu

  • Ban phát triển Basys3 từ Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Tệp này được cung cấp cho chúng tôi trên Polylearn và được viết bởi Bryan Mealy)
  • Bộ đếm 4 bit làm bằng dép tông T
  • FSM

Bước 3: Tạo trò chơi

Tạo trò chơi
Tạo trò chơi
Tạo trò chơi
Tạo trò chơi

Bước đầu tiên để tạo ra trò chơi này là vẽ một sơ đồ mạch với tất cả các thành phần mà chúng ta sẽ sử dụng. Đầu vào cho hệ thống này là nút 1, 16 công tắc và Đồng hồ. Đầu ra là màn hình bảy đoạn và các cực dương. Sau khi vẽ sơ đồ mạch, chúng tôi đã viết các tệp nguồn riêng lẻ cho từng thành phần trong Vivado và ghép chúng lại với nhau bằng cách sử dụng bản đồ cổng trong tệp nguồn chính.

Toàn bộ cơ sở của trò chơi xoay quanh việc chỉ định ngẫu nhiên một trong 16 công tắc hoạt động với bom và người chơi không biết công tắc nào đang hoạt động cho đến khi bật công tắc hoạt động đó. Chúng tôi đã xem xét các bộ tạo số ngẫu nhiên và giả ngẫu nhiên trực tuyến, nhưng cuối cùng chúng tôi quyết định rằng việc sử dụng bộ đếm 4 bit và chỉ định công tắc tương ứng hoạt động là đủ ngẫu nhiên cho những gì chúng tôi đang tìm kiếm. Chúng tôi đã có thể sử dụng lại bộ đếm 4 Bit mà chúng tôi đã tạo trong một dự án trước đó để có thể làm việc cho nhiệm vụ này. Chúng tôi đã sử dụng bộ đếm để tạo một số ngẫu nhiên từ 0-15; thì trong thành phần main1, chúng tôi đã gán giá trị tương đương thập phân của số ngẫu nhiên cho công tắc tương ứng của nó trên bảng. Như đã thấy trong giản đồ, cả đầu ra X ('bom hoạt động') từ thành phần main1 và các công tắc mà người chơi bật đều chuyển đến FSM1. Máy trạng thái xuất ra một giá trị Z một bit sau đó được đọc bởi BC_DEC1. Máy trạng thái hữu hạn mà chúng tôi sử dụng có hai trạng thái khác nhau: ở trạng thái A, màn hình hiển thị bảy phân đoạn xuất ra ‘PLAY’ và máy giữ nguyên trạng thái đó cho đến khi nó nhận ra rằng công tắc đã được kích hoạt bị lật. Khi điều đó xảy ra, FSM chuyển sang trạng thái B nơi nó xuất ‘LOSE’ đến màn hình bảy phân đoạn và giữ nguyên trạng thái đó cho đến khi tất cả 16 công tắc được chuyển sang ‘0’. Khi điều kiện đó được đáp ứng, FSM sau đó một lần nữa chuyển sang trạng thái A và chờ người chơi bắt đầu trò chơi khác. Sơ đồ Moore để giúp hiểu FSM này được hiển thị ở trên.

Bước 4: Sửa đổi trong tương lai

Một số sửa đổi mà chúng tôi đang xem xét về việc thực hiện trò chơi của mình bao gồm thêm nhiều bom hơn vào sân (có thể tăng từ một lên ba), thêm bộ đếm điểm và nhiều vòng. Cuối cùng, chúng tôi đã quyết định chống lại những cải tiến này, vì chúng tôi nhận thấy rằng chơi một trò chơi kéo dài, dài hơn thường căng thẳng hơn và cuối cùng thì thú vị hơn một trò chơi thường kết thúc sau ba hoặc bốn lần bật công tắc.

Bước 5: Kết luận

Chúng tôi rất vui mừng với kết quả cuối cùng của dự án này; không chỉ vì phiên bản cuối cùng của trò chơi rất thú vị khi chơi, mà còn vì việc tạo và lập trình dự án yêu cầu chúng tôi sử dụng hầu hết, nếu không muốn nói là tất cả những gì chúng tôi đã học được trong quý này. Chúng tôi đã sử dụng Flip Flops, bộ đếm, FSM, đồng hồ, đầu vào của người dùng từ bảng và xuất ra màn hình bảy phân đoạn.

Chúng tôi cũng đã tìm hiểu cách một vài lỗi cú pháp có thể phá vỡ hoàn toàn chương trình (ngay cả khi chúng được coi là tốt trong các ngôn ngữ lập trình khác như Python hoặc Java) và chỉ sau nhiều lần mô phỏng và nhiều lần lặp lại mã được tải lên và thử nghiệm trên bảng, liệu cuối cùng bạn có thể sửa chữa tất cả các lỗi trong mã của bạn.

Đề xuất: