2010-11-09 10 views
5

Tôi có một lớp về lập trình cấp thấp yêu cầu dự án cuối cùng (giáo trình ở cuối). Về cơ bản, nó là một phần mềm đưa vào sử dụng tất cả những gì bạn đã học.Đề xuất dự án C và Assembly cần thiết cho lớp học trên phần mềm cấp thấp

Tôi có một vài ý tưởng, như thiết kế Roguelike của riêng tôi (nên giống như Nethack, chỉ có một người chơi), nhưng tôi muốn một số gợi ý về các lựa chọn thay thế. Nó không cần phải là một trò chơi, có thể là bất cứ điều gì. Khung thời gian là một tháng rưỡi và tôi có các dự án khác, v.v. do đó không nên là quá tốn thời gian để triển khai.

Yêu cầu:

  • sử dụng, ít nhất, 4 I/O thiết bị, một trong số đó nên là chuột hoặc cổng nối tiếp
  • Một số những thiết bị cần sử dụng ngắt, những người khác nên sử dụng phiếu
  • Ngôn ngữ:
  • Thực hiện máy nhà nước C và hội (cách bắt buộc, nếu không có một penalization)

Các mỗi ipherals chúng tôi đã giảng về là:

  • Card đồ họa - chế độ đồ họa
  • Card đồ họa - Văn bản chế độ
  • Chuột
  • Keyboard
  • Real Time Counter
  • On-board loa (thông qua tính giờ 0 và 2)
  • Cổng nối tiếp

Đây là giáo trình tóm tắt: thiết bị ngoại vi

Input/Output và hoạt động lập bản đồ trực tiếp của họ trong một quá trình địa chỉ không gian tiếp cận thiết bị ngoại vi trong chế độ thăm dò và bằng cách ngắt Processor ngắt trong IA-32 kiến ​​trúc và bộ điều khiển ngắt. Viết các thói quen dịch vụ gián đoạn trong Assembly và trong C Nghiên cứu một số thiết bị ngoại vi máy tính cá nhân, chẳng hạn như bàn phím, chuột, card đồ họa, đồng hồ thời gian, hẹn giờ, loa và cổng nối tiếp.

Lập trình bằng ngôn ngữ lập trình C ngôn ngữ: sự khác biệt chính với liên quan đến ngôn ngữ C++; có cấu trúc lập trình trong C. Bố cục bộ nhớ của quy trình . Gọi hàm: cơ chế, truyền tham số, lưu trữ các biến số cục bộ và giá trị trả lại. Kết hợp lập trình trong C và IA-32 lắp ráp bộ xử lý gia đình. Tạo và sử dụng thư viện. Liên kết tĩnh mã đối tượng.

Sử dụng các công cụ phát triển phần mềm: gcc, thực hiện, gdb, ar, prof, diff, vá và SVN

Cảm ơn bạn đã dành thời gian!

+1

Ai đó, vui lòng CW. –

+0

Chà. Một trường học với một bộ phận CS và giáo viên đủ nghiêm túc để có một dự án lập trình thực sự tốt đẹp. Anh đang đi đâu, Francisco? –

+1

Michael, Khoa Kỹ thuật tại Đại học Porto, Bồ Đào Nha. http://www.fe.up.pt/si_uk/ –

Trả lời

2

Một tùy chọn đơn giản là truy cập trò chơi. Họ luôn có thể sử dụng một số thiết bị, chẳng hạn như chuột, bàn phím, bộ hẹn giờ, card đồ họa và (tùy thuộc vào những gì bạn làm) RTC.

Một tùy chọn khác là sử dụng ứng dụng "nhà soạn nhạc". Ví dụ, bạn có thể viết (sử dụng bàn phím và chuột) một bài hát (tần số ghi chú, thời lượng) và sau đó để loa máy tính phát.

Bạn cũng có thể sử dụng "ứng dụng đồng hồ/lịch". Nó có thể vẽ một chiếc đồng hồ trên màn hình (có thể khó hơn nếu bạn vẽ một cái tương tự trên màn hình), và sau đó cho phép người dùng điều chỉnh thời gian trong ngày (lưu các thay đổi trong RTC). Đồng hồ cũng có thể bao gồm báo động và một số âm thanh tích tắc. Đối với lịch, bạn cũng có thể cho phép người dùng tạo "sự kiện" trong lịch, trong đó có thể hoạt động giống như báo thức.

Bạn cũng có thể thử viết ứng dụng "notepad" của riêng mình. Điều này đòi hỏi phải có một GUI làm việc (viết khu vực, menu, vv). Điều này có thể ở chế độ văn bản hoặc đồ họa. Bạn có thể phát hiện bàn phím đang được nhấn để thêm ký tự, xử lý CAPS LOCK (cho bạn cơ hội để gây rối với đèn LED bàn phím). Bạn có thể sử dụng vị trí/lần nhấp chuột để thay đổi vị trí trong trình soạn thảo văn bản hoặc trình đơn kích hoạt. Sau đó, giờ để có dấu nháy mắt trong trình chỉnh sửa văn bản. Nhấp vào tùy chọn menu bị tắt có thể gây ra âm thanh loa ngắn để cho biết hành động không hợp lệ.

Tôi khuyên bạn nên viết hầu hết mã trong C, ngoại trừ các bit nhỏ trong Assembly. ISR là một cơ hội tốt cho mã Assembly.

Về máy nhà nước:

  1. Trò chơi có thể có nhiều tiểu bang ("Main Menu", "Chơi trò chơi", "Tạm dừng Menu", "cao điểm") với các chuyển động được xác định rõ giữa các quốc gia.
  2. Nhà soạn nhạc cũng có thể có một số trạng thái ("Dừng", "Tạm dừng", "Đang phát")
  3. Ứng dụng đồng hồ có thể có các trạng thái như "Hiển thị đồng hồ", "Hiển thị lịch", "Hộp thông báo cảnh báo" "Sự kiện tin Box", "Sự kiện tin Box Với thời gian chờ Alarm.
  4. Việc áp dụng notepad có thể có trạng thái như 'chỉnh sửa văn bản', 'trong menu' hoặc 'trong nhắn Box')

Hầu hết các các thiết bị bạn đã đề cập có thể được truy cập với các ngắt. Thật không may, tôi không thể nghĩ ra cơ hội tốt cho việc bỏ phiếu ...

+0

Rất vui khi đọc bạn ở đây;) Tôi thích ứng dụng đồng hồ/lịch, nhưng tôi thấy nó quá dễ dàng. Tôi không thể tìm thấy một trò chơi mà 1 - chưa được thực hiện trước đây bởi trước. năm sinh viên, 2 - tuân thủ các thông số kỹ thuật. Các roguelike sẽ được phức tạp thuật toán khôn ngoan chỉ, có lẽ thậm chí không. –

+1

@Francisco P. Giới thiệu về ứng dụng "quá đơn giản": Bạn luôn có thể làm phức tạp nó khi bạn có thứ gì đó hoạt động. – luiscubal

+0

Vâng, tôi đã cho nó một số suy nghĩ, và tôi đã gặp phải một số vấn đề khó khăn: P –

2

Trình tổng hợp âm nhạc/trình theo dõi giống như chương trình? Sử dụng bàn phím để "phát" nó, lưu/ghi lại các bài hát, xử lý các phần âm thanh và IO. Có thể sử dụng chuột như một bộ điều khiển sân, hoặc liên kết hai máy tính với cổng nối tiếp để chơi hợp tác?

+0

Tôi xin lỗi, tôi không nhận được phần 'theo dõi'. –

+1

Có thể anh ta có nghĩa là http://en.wikipedia.org/wiki/Tracker_%28music_software%29 – luiscubal

+0

Làm tôi ngớ ngẩn, hỏi trước khi tìm kiếm. –

2

Chia nó thành hai chương trình.

Chương trình Một là một điều giống như gui cho thấy một số đồ họa có thể nhấp cho một tập hợp các bài kiểm tra có thể được thực hiện. Sau khi nhấp vào, một số loại hộp văn bản bật lên, và bạn có thể gõ START để bắt đầu thử nghiệm. Lệnh đi ra cổng nối tiếp, đến một máy từ xa mà chương trình Two đang chạy. Chương trình 2 thực hiện kiểm tra và trả về một số loại trạng thái trở lại chương trình 1.Trạng thái được hiển thị và có thể nhấp vào một đồ họa khác.

Chương trình hai lần nghe trên cổng nối tiếp và nhận lệnh từ chương trình 1, thực hiện và gửi lại trạng thái.

Khi chương trình 1 nhận được nhấp chuột vào biểu tượng QUIT, chương trình cũng yêu cầu chương trình cũng tắt.

Thêm chuông và còi khi cần.

2

Nếu bạn có thể kết nối hai máy tính với nhau qua cổng nối tiếp và thực hiện cùng một mã trên mỗi máy tính thì về lý thuyết bạn có thể chia thời gian mã hóa giữa chính bạn và chủ sở hữu của máy tính khác - do đó giảm thiểu một số nỗ lực! (Vâng có lẽ tối đa hóa các đối số về thiết kế!)

Một dự án mà bạn cần lưu ý là triển khai ứng dụng kết nối văn bản điểm đơn giản giữa hai máy tính. Bạn nhập văn bản vào bộ đệm trên màn hình, sử dụng chuột để nhấp vào một mục tiêu, kích hoạt gửi thư qua cổng nối tiếp đến máy tính khác - hiển thị nó trên màn hình riêng của nó và phát tiếng bíp để nói rằng thư có được nhận. Ngoài ra, máy tính gửi có thể phát ra tiếng nói của nó với một âm thanh khác nhau để truyền thành công, lỗi truyền hoặc thử lại. Điều đó bao gồm tất cả phần cứng mà bạn đã được giới thiệu.

Để thiết kế tiền thưởng bổ sung, giao thức nhắn tin bị lỗi hoặc phát hiện lỗi tiếp nhận.

Âm thanh như một dự án tuyệt vời bạn từng làm! Tuy nhiên hãy cẩn thận về việc đi overboard với dự án. Có đủ thịt trong yêu cầu của bạn để mất tất cả thời gian của bạn mà không cần thiết kế toàn bộ một trò chơi là tốt. Sử dụng biểu tượng Hôn

+0

Cảm ơn bạn đã đề xuất! Tôi sẽ phải làm tất cả các mã hóa, mặc dù, họ đang phân công nhóm: P –

1

Điều gì về trò chơi PONG hai người chơi, được điều khiển bởi chuột và được phát qua cổng nối tiếp?

+0

Được thực hiện quá nhiều lần, không may: / –