Trở thành một lập trình viên không chỉ là học cú pháp và các khái niệm của ngôn ngữ lập trình: đó là tìm ra cách sử dụng kiến thức đó để tạo ra các chương trình. Bạn đã thực hiện một loạt các chương trình trong khóa học này, trong các thử thách và dự án, nhưng bây giờ bạn nên đưa ra ý tưởng cho các chương trình mới - những ý tưởng mà cá nhân bạn thực sự hứng thú - và cố gắng biến chúng thành các chương trình thực tế.
Bạn có thể sẽ không biết mọi thứ bạn cần cho chương trình của mình khi bạn khởi động nó và điều đó hoàn toàn ổn - bạn sẽ có động lực để học những điều mới đó vì bạn muốn biến chương trình của mình thành sự thật đến mức nào. Các lập trình viên không ngừng học hỏi những điều mới cho các dự án mới, và đó là một phần lý do tại sao chúng tôi yêu nó rất nhiều.
Hãy cùng tiến hành quá trình lập kế hoạch cho một dự án lập trình:
1. Bạn muốn làm gì?
Khi tôi lần đầu tiên bắt đầu chương trình, tôi thấy bản thân mình không ngừng nghĩ đến việc các chương trình mới để thực hiện và viết những xuống trong danh sách. Tôi đã nghiện với sức mạnh của sáng tạo, và có rất nhiều bộ não của tôi muốn thực hiện. Nếu bạn như vậy, thì có lẽ bạn đã có ý tưởng về những gì bạn muốn thực hiện, và có lẽ bạn có danh sách của riêng bạn.
Nếu bạn chưa có một ý tưởng, sau đó đây là một số câu hỏi để giúp não của bạn:
- trò chơi yêu thích của bạn là gì - trò chơi arcade, trò chơi hội đồng, trò chơi thể thao? Bạn có thể làm một phiên bản kỹ thuật số đơn giản hóa không? Bạn có thể trộn nó lên một chút, như cho nó một chủ đề hoặc nhân vật chính khác không?
- Lĩnh vực học tập yêu thích khác của bạn là gì? Nếu bạn yêu thích nghệ thuật, bạn có thể làm một chương trình nghệ thuật làm? Nếu bạn yêu thích lịch sử, làm thế nào về dòng thời gian tương tác? Nếu bạn yêu thích khoa học, làm thế nào về một mô phỏng khoa học?
- Bộ phim hoặc chương trình truyền hình yêu thích của bạn là gì? bạn có thể làm một phiên bản kỹ thuật số của một cảnh hoặc ký tự từ nó? Có thể làm một trò chơi dựa trên nó?
- Tiện ích ngoài đời thực mà bạn yêu thích là gì? Bạn có thể làm một mô phỏng của nó?
Một khi bạn đã chọn một ý tưởng, bạn nên viết một mô tả về nó. Ví dụ: nếu tôi quyết định tạo một bản sao của "Breakout", bởi vì đó là trò chơi arcade yêu thích của tôi, tôi có thể viết:
Breakout : một trò chơi trong đó bạn điều khiển một mái chèo ở dưới cùng của màn hình và bạn sử dụng nó để đánh một quả bóng lên trên và ở các góc để phá vỡ các viên gạch. Mục tiêu là phá vỡ tất cả các viên gạch, và không để bóng qua mặt đất quá nhiều lần.
Bạn sẽ mô tả lại sau, nhưng bây giờ, điều đó cho bạn một ý tưởng đủ tốt để tiếp tục trong quá trình lập kế hoạch.
2. Bạn sẽ sử dụng công nghệ gì?
Trong bước này, bạn cần xem xét công nghệ nào (ngôn ngữ / thư viện / môi trường) mà bạn quen thuộc hoặc có thể học dễ dàng, và công nghệ nào phù hợp nhất cho công việc. Đối với nhiều bạn, danh sách đó có thể dài một mục, "1. JS + TreatmentJS", và điều đó giúp cho quyết định của bạn trở nên dễ dàng.
Môi trường JS + TreatmentJS của chúng tôi hoạt động rất tốt để tạo hoạt hình, trò chơi, trực quan hóa và mô phỏng. Chỉ cần kiểm tra các chương trình cộng đồng để xem một loạt các chương trình mà mọi người thực hiện ở đây.
Môi trường của chúng tôi không hoạt động cho những thứ khác như trò chơi nhiều người chơi, ứng dụng di động, ứng dụng xử lý dữ liệu. Nếu bạn biết các ngôn ngữ khác / môi trường (như JS + HTML, Python, CÀO, Swift, vv) và bạn đang nghĩ đến việc xây dựng một cái gì đó mà không làm cho càng nhiều ý nghĩa với ProcessingJS, sau đó xem xét mà những công nghệ sẽ là tốt nhất phù hợp cho chương trình của bạn. Nếu bạn muốn xây dựng những thứ đó nhưng không biết các công nghệ khác, bạn có thể muốn đưa ra một ý tưởng chương trình mới. Bạn có thể học một công nghệ mới cho một dự án mới, nhưng đặc biệt nếu bạn mới bắt đầu lập trình, bạn nên thực sự giỏi ngôn ngữ đầu tiên của mình.
Nếu tôi quyết định tạo một trò chơi như Breakout, tôi sẽ chọn JS + TreatmentJS, vì tôi đã biết công nghệ đó và nó cũng hoạt động rất tốt cho các trò chơi 2D như thế.
3. Nó sẽ bao gồm những tính năng gì?
Đây là nơi chúng tôi tham gia vào kế hoạch thực sự, và nơi (tôi nghĩ) nó trở nên thú vị. Mục tiêu của bạn trong bước này là tìm hiểu xem bạn thực sự đang làm gì - nó sẽ trông như thế nào, nó sẽ bao gồm những tính năng gì, những tính năng nào nó sẽ không bao gồm.
Điều đầu tiên bạn có thể làm là tạo ra "mock-up" - bản phác thảo trông giống như thứ bạn đang làm, nhưng không có chi tiết như tô màu hoặc định cỡ chính xác. Bạn có thể thực hiện mô phỏng trên giấy hoặc với các chương trình trực tuyến:
Để cho bạn biết ý tưởng của mock-up trông như thế nào, tôi đã bao gồm các mock-up bên dưới bản sao Breakout của tôi. Tôi phác họa từng cảnh riêng biệt và vẽ mũi tên giữa chúng để cho thấy một cảnh dẫn đến cảnh khác như thế nào. Những mũi tên đó sẽ giúp tôi hiểu logic nào tôi cần trong chương trình của mình để đi giữa các trạng thái chương trình.
Bây giờ bạn có thể sử dụng các mô hình giả đó để giúp bạn tạo một danh sách tính năng, nơi bạn nghĩ về mọi tính năng trong chương trình của mình và biến nó thành một danh sách.
Đối với bản sao Breakout của tôi, đây có thể là danh sách tính năng của tôi, được chia nhỏ theo cảnh:
Cảnh trò chơi
- Mái chèo do người dùng kiểm soát
- Gạch nhiều màu
- Chuyển động bóng góc
- Phát hiện va chạm
- Hiển thị cuộc sống
- Hiển thị điểm
- Hiệu ứng âm thanh
Cảnh chính
- Nút phát
- Nút trợ giúp
Cảnh trợ giúp
- Bản văn
- Nút quay lại
Thắng cảnh
- Tiêu đề
- Pháo hoa hoạt hình
Mất cảnh
- Bản văn
- Nút khởi động lại
4. Nhưng nó phải bao gồm những tính năng gì?
Nếu tất cả chúng ta đều có thời gian vô hạn để thực hiện tất cả các chương trình trong đầu, thì tất cả chúng đều bao gồm mọi tính năng trong danh sách của chúng tôi. Nhưng chúng tôi không, vì vậy trong bước này, bạn phải quyết định tính năng nào là quan trọng nhất và tính năng nào bạn sẽ làm chỉ khi chúng tôi có thời gian. Điều này cũng sẽ giúp bạn tìm ra thứ tự nào để triển khai các tính năng, từ quan trọng nhất đến quan trọng nhất.
Để giúp bạn tìm ra tầm quan trọng của từng tính năng, hãy tự hỏi mình những câu hỏi sau:
- Nếu tôi chia sẻ điều này với một người bạn, tôi muốn đảm bảo tính năng nào hoạt động?
- Những tính năng nào khiến tôi hào hứng nhất khi xây dựng?
- Những tính năng độc đáo nhất cho chương trình của tôi?
- Những tính năng nào tôi sẽ học được nhiều nhất từ việc thực hiện?
- Có tính năng nào có vẻ quá xa mức kỹ năng hiện tại của tôi không?
Sau đó, đi qua danh sách tính năng của bạn từ bước cuối cùng và sắp xếp danh sách hoặc thêm thứ hạng cho từng tính năng.
Đối với danh sách tính năng Bản sao đột phá của tôi, tôi đã đặt "P1", "P2" và "P3" bên cạnh các tính năng, biểu thị mức độ ưu tiên hàng đầu (P1), mức độ ưu tiên trung bình (P2) và mức độ ưu tiên thấp nhất (P3). Tôi quyết định ưu tiên các cơ chế trò chơi độc đáo hơn các tính năng chung của trò chơi như cảnh, bởi vì tôi thấy rằng điều thú vị nhất về dự án này:
(P1) Cảnh trò chơi
- (P1) Mái chèo do người dùng kiểm soát
- (P1) Nhiều viên gạch màu
- (P1) Chuyển động bóng góc
- (P1) Phát hiện va chạm
- (P2) Hiển thị cuộc sống
- (P2) Hiển thị điểm
- (P3) Hiệu ứng âm thanh
(P2) Cảnh chính
- (P2) Nút phát
- (P3) Nút trợ giúp
(P3) Cảnh trợ giúp
- (P3) Văn bản
- (P3) Nút quay lại
(P2) Thắng cảnh
- (P2) Tiêu đề
- (P3) Hoạt hình pháo hoa
(P2) Mất cảnh
- (P2) Văn bản
- (P3) Nút khởi động lại
Là một mẹo chung cho những người bạn làm game, đây là các tính năng mà tôi khuyên bạn nên ưu tiên: menu, nhiều cấp độ, đồ họa 3D. Tập trung vào những gì độc đáo và thú vị về trò chơi của bạn, sau đó thêm các tính năng bổ sung đó.
Bạn cũng có thể biến danh sách ưu tiên của mình thành các phiên bản dự án, do đó bạn có thể dễ dàng thấy những gì bạn cần thực hiện trong mỗi phiên bản và bạn luôn có thể dừng lại sau một phiên bản cụ thể và hài lòng với những gì bạn đã thực hiện.
Đây là những gì các phiên bản sẽ trông giống như bản sao Breakout của tôi:
V1
- Mái chèo do người dùng kiểm soát
- Gạch nhiều màu
- Chuyển động bóng góc
- Phát hiện va chạm
V2
- Hiển thị cuộc sống
- Hiển thị điểm
- Bắt đầu cảnh w / play nút
- Thắng cảnh w / tiêu đề
V3
- Hiệu ứng âm thanh
- Nút trợ giúp
- bắn pháo hoa
- Mất cảnh w / Nút khởi động lại
5. Bạn sẽ thực hiện nó như thế nào?
Bây giờ bạn có ý tưởng về những tính năng nào bạn sẽ xây dựng đầu tiên trong chương trình của mình - nhưng nếu bạn bắt đầu ngay bây giờ, bạn sẽ nhìn chằm chằm vào một chương trình hoàn toàn trống không có mã được viết và điều đó có thể đáng sợ. Những biến nào bạn nên viết đầu tiên? Chức năng nào?
Một cách bạn có thể hiểu là nghĩ về "kiến trúc cấp cao" của chương trình của bạn - chia nó thành các danh mục như "đối tượng", "logic", "tương tác người dùng", "dữ liệu người dùng" và "cảnh" - và sau đó suy nghĩ về cách bạn có thể thực hiện chúng, như các loại đối tượng, hàm hoặc biến đối tượng hướng đối tượng.
Ví dụ: đây là một kiến trúc cho bản sao Breakout của tôi:
Các đối tượng
Brick(.isHit())Paddle(.move())Ball(.move())
Cảnh
- Khởi đầu
- Trò chơi
- Kết thúc
Logic VCL
- Va chạm gạch bi (
function, sử dụng hộp giới hạn) - Câu cá bóng chèo (
function, góc nghịch đảo)
Tương tác người dùng
- Chuyển động bàn phím (
keyPressed) - Các nút để thay đổi cảnh (
mouseClicked)
Dữ liệu người dùng
- Bóng chết (
array) - Bóng trúng (
array)
Khi bạn đã nghĩ về kiến trúc cấp cao, nó sẽ trở nên rõ ràng hơn về những gì bạn có thể bắt đầu viết mã trước tiên.
Bạn có thể quyết định viết toàn bộ chương trình của mình bằng mã giả trước, mà chúng ta sẽ nói về phần sau trong hướng dẫn này. Về cơ bản, điều đó có nghĩa là viết toàn bộ chương trình bằng văn bản tiếng Anh đơn giản bên trong một bình luận, và sau đó từ từ biến nó thành mã thực tế.
6. Dòng thời gian của bạn là gì?
Bạn có bao nhiêu thời gian để thực hiện chương trình này? Bao nhiêu tuần, và bao nhiêu thời gian mỗi ngày? Những tính năng bạn sẽ viết mỗi tuần? Mục tiêu của bạn trong bước này là tìm ra một mốc thời gian cho dự án của bạn - điều này đặc biệt quan trọng nếu bạn có thời hạn, nhưng cũng hữu ích để bạn bắt đầu hiểu bạn mất bao nhiêu thời gian để viết một chương trình.
Đây là dòng thời gian cho bản sao Breakout của tôi, giả sử 2-4 giờ làm việc mỗi tuần:
- Tuần 1: Thiết kế và mã giả
- Tuần 2: Hình ảnh thô
- Tuần 3: Cơ chế chuyển động / va chạm bóng
- Tuần 4: Cơ học chấm điểm
- Tuần 5: Cảnh (Bắt đầu / Thắng / Thua)
- Tuần 6: Tiếng Ba Lan, Kiểm tra thủ công (QA), Chuẩn bị cho bản demo
Tìm ra các mốc thời gian cho các dự án lập trình là khó khăn. Một số điều mà dường như dễ dàng mất cách lâu hơn bạn mong đợi (như một số lỗi lạ mà bạn bỏ ra hàng giờ gỡ lỗi), một số điều mà dường như mất cứng ít thời gian hơn bạn mong đợi. Theo nguyên tắc chung, giả sử nó sẽ khiến bạn mất nhiều thời gian hơn bạn nghĩ và điều chỉnh khi bạn đi cùng.
Bạn đã sẵn sàng chưa!?
Hy vọng rằng điều này cung cấp cho bạn một ý tưởng cho quá trình lập kế hoạch dự án lập trình và truyền cảm hứng cho bạn để bắt đầu một dự án ngay bây giờ. Tùy thuộc vào những gì bạn muốn xây dựng, trước tiên bạn cũng có thể quyết định trải qua các khóa học khác, như Advanced JS: Trò chơi & Trực quan hóa hoặc Advanced JS: Mô phỏng tự nhiên , để cung cấp cho bạn thêm ý tưởng để xây dựng trò chơi và mô phỏng.
Điều quan trọng là đảm bảo rằng bạn bắt đầu tạo chương trình của riêng mình vào một lúc nào đó, bởi vì đó là nơi bạn sẽ học được nhiều nhất và cũng là nơi bạn sẽ có được niềm vui nhất khi lập trình, bởi vì bạn đang thực hiện ước mơ của mình thực tế.

Nhận xét
Đăng nhận xét