30/09/2018, 21:23
Game hứng trứng bằng C++
Em đang học khoá C++ của anh Đạt đến hơn 40 bài rồi mà chưa có gì làm cho vui, giờ em làm được cái Game console Hứng trứng (chủ yếu là sử dụng mảng 2 chiều), sản phẩm đầu tay, các anh/chị cho em nhận xét.
Còn 1 số điểm yếu em chưa khắc phục được:
- Hơi bị lag (do máy em xử lý yếu hay code em viết chưa được tốt thì em không rõ, mà chắc code lung tung nên không tốt)
- Mới chỉ được có 2 quả trứng à.
- Lâu lâu ảo tý. (hai quả trứng nó random xa nhau quá, toàn die không à)
Hình game đây:
Đây là Project: https://www.fshare.vn/file/VWM39QR9QOV3
Bài liên quan
Cảm giác trở lại cái thời game hứng bia
Bác lại suy nghĩ … rồi
Bác xài hàm gotoxy nhiều quá thì nó lag :v
Ủa vậy hả, em không biết, test lại khi không có gotoxy thì nhanh hơn xíu.
This post was flagged by the community and is temporarily hidden.
This post was flagged by the community and is temporarily hidden.
Sử dụng Tiếng Việt có dấu nhé bạn.
This post was flagged by the community and is temporarily hidden.
Khi nào rảnh mình sẽ tạo, còn giờ code mình có đưa ở trên.
bác cho em hỏi làm mấy cái đò họa trên mn console kiểu gì vậy bác
Xem 7 video hướng dẫn làm game console của Nguyễn Việt Nam Sơn ấy !
mình dùng hàm đổi màu chữ thôi
thử kĩ thuật này xem xử lí được giật lag ko.
Double buffer
Tức bác coi cả cái màn hình console là 1 mảng char MxN, bác tạo ra 2 mảng như thế: 1 mảng tên frontBuffer, 1 mảng backBuffer. Khi draw lên screen thì luôn vẽ mảng frontBuffer, còn nhưng thao tác mình vẽ lên màn hình vẽ vào backBuffer. Trong vòng lặp thì trc khi bác vẽ thì phải SwapBuffer tức frontBuffer = backBuffer, rồi ms vẽ (tránh việc hình đang vẽ dở đã cho lên màn hình)
Draw
Chỉ dùng gotoxy và cout 1 lần để tránh làm chậm và ko dùng vòng lặp for vì sẽ bắt máy tính toán 1 lượng đáng kể (vd: 802424 = ?? (kích cỡ màn hình * số lần vẽ mỗi giây)) Vì ta có mảng frontBuffer là xâu nên đưa con trỏ về vị trị (0;0), gốc toạ độ, rồi cout 1 lần là xong.
Frame Per Second (FPS)
Ko nên để vẽ lên màn hình liên tục mà ko kiểm soát (mình chưa xem kĩ code của bác nên ko biết có chưa). FPS là số khung hình/lần vẽ trong 1s. Thông thường 24 FPS là nhìn mượt rồi, 60 FPS càng tốt. Bác dùng mấy hàm thời gian của window để điều chỉnh số lần vẽ theo FPS mình mong muốn.
Lưu ý đây là cách FPS tĩnh tức FPS mình tự quy ước, ko thay đổi suốt cả chương trình (mình lấy vd vì nó đơn giản)
This post was flagged by the community and is temporarily hidden.
This post was flagged by the community and is temporarily hidden.
Cảm ơn @Maskma và @Phong_Ky_Vo đã góp ý cho em.
Ở đây nếu em không dùng goto, khi game over thì em làm sao để người dùng nhập vào y thì game sẽ tiếp tục ?.
Cái kĩ thuật Double Buffer em hiểu rồi, ở phần Draw nếu em không dùng vòng lặp for thì in mảng như thế nào vậy? Rồi cout 1 lần thì làm sao đổi được text color, FPS như bác nói thì em dùng hàm GetTime nó bảo không xác định được, mà hàm này có phải trong thư viện time.h không vậy bác.
Mới học 40 bài mà đã làm được rồi à\
Em mới học đến đó thôi, với học thêm vòng lặp game các thứ trên mạng thôi
Ý mình là khen bạn giỏi ấy chứ
Lần sau bạn viết comment ms thì mình ms nhận đc noti, bạn sửa cmt nên bh mình ms xem.
Cout mình toàn dùng string nên in ra đc hết. Char phải dùng printf của C. Để đổi màu ko nhất thiết phải dùng win api. Bạn có thể dùng escape code (tự search nhé) vì esc code cũng chỉ là như là 1 kí tự nên cho vào đc
Hàm gettime là mình chém ra đấy. Bạn tự tìm cách nào để đo đc tg cũng được. Mình đã ghi đấy là code giả mà, tức tượng trưng để hiểu ý tg thôi