Hướng Dẫn Xử Lý Lỗi và Cải Thiện một số kỹ năng trong Seri Lập Trình Game SDL C++

Hi. Chào các bạn.

Cũng khá lâu rồi, mình không có bài viết mới trên blog.

Phần vì công việc bận rộn, phần vì cũng có một số việc cá nhân.

Hôm nay rảnh, mình tranh thủ viết một bài viết chia sẻ.

Bài viết này dành cho các bạn quan tâm đến chủ đề lập trình game c++ sdl trên blog, các bạn đang theo dõi và thực hành theo video.

Sẽ có thể các bạn gặp phải những vấn đề, lỗi, khúc mắc khi thực hành, mà trước đây nhiều bạn khác đã mắc phải.

Nên bài viết ngày hôm nay mình sẽ chia sẻ về những vấn đề này, nhằm giúp các bạn tự mình có thể khắc phụ được lỗi,

trong khi post bài trên group và phải chờ đợi người hỗ trợ.

 

1. Một số vấn đề lỗi khi thực hành seri lập trình C++ SDL

a. Các bạn gặp lỗi khi buidl trên phiên bản visual 2015-2017-2019

Trong seri mình chia sẻ, mình hướng dẫn trên visual 2012. Nhưng càng về sau các bạn cài phiên bản visual lại càng cao dần hơn.

Và các bạn gặp phải lỗi khi biên dịch.

Đây là lỗi mà các bạn thường gặp.

Các bạn hãy khắc phục nó bằng cách.

Trước hàm main, các bạn hãy thêm dòng #undef main

Vấn đề sẽ được giải quyết.

b. Làm y chang video, mà nó không nhận thư viện SDL.

Nhiều bạn gặp vấn đề khi cài đặt thư viện SDL, và không nhận được #include<SDL.H>

Lý do là có thể các bạn đặt sai vị trí folder SDL_Lib, một chi tiết mà nhiều bạn không để ý.

Các bạn hãy để ý.

$(SolutionDir) nó là cách để sử dụng đường dẫn tương đối và nó bằng với đường dẫn của file *.sln của project

Tại sao tôi không để cứng đường dẫn tuyệt đối, vì chúng ta có thể sẽ gửi project cho mọi người.

Nếu các bạn để trong ổ D, nhưng sang máy người khác không có ổ D thì như vậy sẽ lỗi.

 

 

Vậy nếu $(SolutionDir) = Path của file sln.

Thì folder LibSDL2 sẽ ở cùng vị trí với file *.sln.

Do đó các bạn phải cấu trúc như dưới đây.

Rất nhiều bạn đã copy nhầm folder LibSDL2 này vào tận bên trong folder GameCpp2, và xảy ra lỗi.

 

c. Cài đặt đúng, build ok, nhưng chạy code mẫu show ảnh ra màn hình thì không được.

Một vài trường hợp các bạn bị lỗi này là do tên file ảnh có vấn đề.

Các bạn không biết debug nên các bạn không phát hiện ra.

Thường mình support thấy các bạn hầu hết dùng window 10. Mà Win10 hay có hiện tượng giấu đuôi file.

Ví dụ tấm ảnh là background.png, thì trong folder nó chỉ hiện thị là background

Nhưng các bạn lại vô tình sửa tên và thêm đuôi png vào cho nó thành background.png

Kết quả là file có tên thực sự như sau: background.png.png.

Do đó khi gặp lỗi này các bạn hãy hiển thị đuôi file trong window 10 lên nhé (cách làm thì search google, mình dùng windows 7 nên ko chụp ảnh demo được)

Một số trường hợp khác bị lỗi này là do trong các file dll copy vào mục debug. file zlib1.dll có vấn đề.

 

Vấn đề của nó là gì.

Folder dll này được copy từ trong các folder lib ra, thường thì các bạn dùng sẵn folder mình copy. Có thể folder copy của mình đẩy lên có lỗi.

Đó là trong SDL_image có file zlib1.dll, và trong SDL_ttf cũng có zlib1.dll,  mình copy sdl_tff sau nên xảy ra hiện tượng bì đè zlib1.dll của ttf nên image.

Dẫn đến khi xử lý đọc ảnh, xảy ra lỗi.

Tuy nhiên cũng rất hiếm khi xảy ra trường hợp này. Mới chỉ có 1 2 bạn từng gặp lỗi này.

Khi gặp lỗi này, thường là các bạn đã từng có kỹ năng debug và phát hiện ra.

Các bạn hãy copy lại zlib1.dll của sdl_image nhé.

d. Khi thực hành được một vài bài học, các bạn gặp vấn đềxử lý code.

Ví dụ như map bản đồ không lên, map bản đồ lên sai.

Nhân vật không được hiển thị,

Đạn bắn không ra……

Tất cả những vấn đề này đều thuộc về xử lý code.

Có thể do các bạn chưa hiểu được logic, thuật toán, và chỉ đang làm theo.

Nên khi gặp vấn đề các bạn không biết nó lỗi ở khâu nào đoạn nào.

Thêm vào đó lại không có kỹ năng debug nên các bạn không tự mình xử lý được lỗi.

Giải quyết cho vấn đề này, các bạn cần lưu ý như sau.

+ Hãy chịu khó lắng nghe phần giải thích của mình khi xem video, mỗi xử lý câu lệnh mình đều cố gắng giải thích ý nghĩa của nó.

+ Sau mỗi bài học, các bạn thực hành thành công, hãy dành thời gian xem lại những đoạn code mình đã viết, đã thực hành, cố gắng hiểu ý nghĩa của nó.

+ Học kỹ năng debug.

Đây là vấn đề lớn đối với các bạn, hầu hết các bạn khi học đều chưa biết debug, các bạn hãy học cách debug code để tìm ra nguyên nhân.

Kỹ thuật debug code rất đơn giản.

F9 đặt điểm breakpoint (là điểm mà khi chạy chương trình, xử lý sẽ dừng ở đó nếu nó nằm trong luồng được chạy)

F10 là đi tiếp

F11 chui vào hàm.

shirt + F11 là chui ra.

F5 là nhảy đến điểm breakpoint tiếp theo. Nếu không còn điểm nào sau đó, thì nó sẽ chạy lên trương trình.

Khi chạy mỗi câu lệnh, các bạn có thể trỏ chuột vào biến để xem giá trị, các trường dữ liệu, các số liệu của mảng, của list, tên ảnh,…

e. Kỹ Năng Debug thế nào.

 Muốn debug hiệu quả, chúng ta phải hiểu logic code.

* Ví dụ các bạn chạy thấy chương trình lên phát tắt luôn.

Vậy các bạn hãy đặt điểm debug vào ngay đầu hàm, rồi chạy F10 xem đến cậu lệnh nào thì nó bị return không chạy đến vòng while của game.

Ví dụ nó chạy đến hàm Init nó bị nhảy vào điều kiện false => nghĩa là Init thất bại => đặt câu hỏi vì sao nó thât bại, chạy lại và F11 chui vào Init rồi lại đi tiếp.

* Chạy không lên ảnh.

Vậy chỗ nào là chỗ load ảnh, đặt debug vào đó xem hàm load ảnh trả ra kết quả true hay false. Nếu false thì vì sao, lại chui vào tiếp.

* Chạy không lên map.

=> Kiểm tra xem hàm đọc dữ liệu từ map lên đã dúng chưa.

=> Kiểm tra xem nếu hàm đọc đúng rồi, thì hàm load map có vấn đề gì hay không ?

=> Kiểm tra xem dữ liệu máp của bị thiếu hụt gì không ?

 

Cứ như vậy, khi các bạn thành thạo debug, thì cũng là lúc các bạn đã hiểu rất rõ về logic code.

Đó là một vài vấn lỗi mà các bạn thường mắc phải khi thực hành code trong chủ đề lập trình game  SDL C++

2. Một số kỹ năng cần cải thiện.

a. Kỹ năng debug code.

Như đã nói ở trên, nó là kỹ năng quan trọng, cần thiết mà các bạn cần có và cần cải thiện. Nó không thể thiếu đối với một lập trình viên.

b. Kỹ năng đọc hiểu code.

Hãy cố gắng đọc hiểu code, phân tích và biến nó thành của mình, không chỉ cố bắt chước để làm cho xong.

Khi bạn hiểu và biến nó thành của mình, nó là một tài sản của riêng bạn, thời đại bây giờ, dữ liệu chính là tài sản, đừng xem nhẹ nó.

c. Kỹ năng sáng tạo.

Đọc hiểu code rồi hãy tìm các sáng tạo hơn, làm nó khác đi, làm nó mới hơn, mỗi đoạn code các bạn học được, hãy nghiên cứu nó, xem có cách nào làm tốt hơn không.

Đừng nghĩ mình là admin chia sẻ code rồi thì code đó là hay là tốt rồi, các bạn có thể làm nó tối ưu hơn nữa, tốt hơn nữa rất nhiều.

d. Kỹ năng đọc và phân tích lỗi.

Nhiều lỗi trình biên dịch mô tả rõ ràng, tiếng anh rất dễ hiểu, các bạn có thể copy ra google dịch cũng được, nhưng nhiều bạn đã ngại làm việc đó. Hãy chủ động trong việc tự mình đọc và phân tích lỗi, và tìm hướng xử lý.

Dó là một vài kỹ năng cơ bản mà mình chia sẻ cho các bạn với mong muốn các bạn có thể cài thiện, như vậy các bạn sẽ dạn dày hơn trong lĩnh vực công nghệ phần mềm.

Khi đi làm các bạn sớm cân bằng với công việc và có những tiến bộ, đột phá lớn lao hơn.

Tương lai nằm ở chính sự cài thiện, và rèn luyện của các bạn.

 

Thank.

TPham.

 

 

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.