Game Trúc Xanh trên Excel (chơi trên Form)

  • Thread starter Thread starter kyo
  • Ngày gửi Ngày gửi
Liên hệ QC

kyo

Nguyễn Khắc Duy
Thành viên danh dự
Tham gia
4/6/06
Bài viết
901
Được thích
2,716
Sau nhiều ngày tháng trau dồi kiến thức và hỏi tới hỏi lui chú Mỹ, cuối cùng con cũng đã hoàn thành xong game này. Con đã test rất nhiều lần rồi và hiện vẫn chưa phát hiện ra lỗi. Hi vọng mọi người chơi vui, và nếu như có phát hiện ra lỗi thì xin góp ý để con tiếp tục hoàn thiện game này.

Update ver 1.0

Giao diện game

skin1.jpg


Đọc kĩ luật chơi trước khi sử dụng
--=0--=0

skin2.jpg
 

File đính kèm

Lần chỉnh sửa cuối:
Sau nhiều ngày tháng trau dồi kiến thức và hỏi tới hỏi lui chú Mỹ, cuối cùng con cũng đã hoàn thành xong game này. Con đã test rất nhiều lần rồi và hiện vẫn chưa phát hiện ra lỗi. Hi vọng mọi người chơi vui, và nếu như có phát hiện ra lỗi thì xin góp ý để con tiếp tục hoàn thiện game này.

Giao diện game

skin1.jpg


Đọc kĩ luật chơi trước khi sử dụng
--=0--=0

skin2.jpg

Chúc mừng Kyo đã có sản phẩm. Kyo cần chỉnh 2 vấn đề này nhé.

1. Khi bấm vào "Đoán hình", khi InputBox hiện lên, nếu chọn nút Cancel thì sẽ bị lỗi.
2. Lỗi thiếu thư viện. Trong VBA, vào menu Tools->References... bỏ chọn thư viện "Preview 1.0 Type Library" vì trong ứng dụng không dùng đến. Nếu máy nào không có thư viện này thì sẽ bị lỗi . Cả thư viện "Microsoft Windows Common Controls 6.0" nếu không dùng cũng bỏ cho nhẹ chương trình.
3. Nếu mở Trucxanh trên Excel 2007, khi thoát game, hiện lên màn hình "....Compabitility Checker", nếu chọn Cancel bị lỗi.


Nếu có thể bổ sung các đặc tính cho giao diện game:
1. MsgBoxUni - MsgBox có unicode vì thế có thể đưa thông báo với chữ có dấu:
http://www.giaiphapexcel.com/forum/...àm-MsgBoxUni-hiển-thị-font-tiếng-Việt-Unicode

2. Cho phép zoom controls & userform
http://www.giaiphapexcel.com/forum/showthread.php?52745-Zoom-Userform-Controls&
 
Lần chỉnh sửa cuối:
Con cám ơn chú Tuân đã góp ý, trong quá trình làm game này, chú Tuân có chỉ dẫn sử dụng class mà có do con vẫn chưa thể hiểu hết được nên không áp dụng vào, hẹn chú vào một ngày nào đó con sẽ làm bằng class, chú nhé :D

Về vấn đề số 1: Khi Input hiện lên, chú bấm Cancel sẽ báo Wrong tức là chú không trả lời gì cả thì cũng tính là sai đấy mà, có thể là con viết không rõ ràng hay là có lỗi nào khác nữa vậy chú ?
Về vấn đề số 2: Con cũng không biết mấy cái thư viện đó đâu ra nữa, chắc là hồi trước ngứa tay bấm bậy, con sẽ update lại bản fix và sẽ rút kinh nghiệm lần sau.
Về vấn đề số 3: Thú thật là con không có xài Office 2007 nên không có lường đến trường hợp đó. Để con cài 2007 rồi sẽ tìm cách fix lỗi này.

Còn về các đặc tính chú góp ý, con sẽ nghiên cứu và bổ sung nó vào bản cập nhập sau này, chú nhé

Cám ơn chú đã góp ý
 
Lần chỉnh sửa cuối:
Về vấn đề số 1:
Kyo cần xem lại : Khi đoán hình nền giữa chừng, bấm Cancel sẽ báo Wrong tức là không trả lời gì cả thì cũng tính là sai. Điều này có thể chấp nhận, vì thoát khỏi inputbox.
Nhưng khi tất cả ô đã lật, hiện lại thông báo này. Nếu cancel, nó lại bắt trả lời đến khi nào gõ đúng mới thôi. Gõ bậy bạ gì đó vào cũng không chịu.
Đề xuất: Tốt nhất là dùng 1 Form thay vì Inputbox: OK là trả lời, Cancel là không trả lời và bị mất lượt, và Close là thoát khi cả 2 đội đều trả lời sai.

Về vấn đề số 3:
Đây không phải lỗi của file này. Bất kỳ file 2003 nào mở bằng 2007, khi lưu đều hiện thông báo này:
- Nếu nhấn continue tức là save dưới dạng 2003, và bị check xem có cái gì sẽ bị mất khi lưu dạng 2003 hay không. Nếu muốn lần sau không hiện thông báo này, người dùng phải bỏ chọn ô "check this workbook ..." và nhấn continue.
- Nếu nhấn cancel tức là muốn lưu dạng 2007 và sẽ hiện thông báo khác để chọn save lại dưới dạng 2007. Một khi đã lưu dạng 2007 như xlsx, xlsm, xlsb, sẽ không bao giờ xuất hiện thông báo này nữa.
Vậy, lựa chọn lưu dưới dạng 2003, hay 2007, và nếu lưu dạng 2003 có check lại hay không, là người dùng quyết định, chứ không phải người tạo quyết định.
 
Lần chỉnh sửa cuối:
Dạ cái vấn đề số 1 đó con với chú đã thảo luận qua một lần rồi, chú có nhớ không, hì hì. Hồi đó chú cũng bắt con lỗi này, và con đã trình bày rằng: Theo con, cái việc sau khi lật hết ô mà đội bên đây trả lời không được thì phải nhường cho đội bên kia (tất nhiên là bị trừ điểm rồi), và đội bên kia trả lời không được thì lại bị chuyển ngược về cho bên này (cũng bị trừ điểm nốt). Và cứ thế cho đến khi có một bên trả lời đúng, trả lời sai thì lại cứ bị trừ điểm. Trên thực tế, chẳng lẽ lại có chuyện đáp án lồ lộ ra thế kia mà còn trả lời sai sao? Đó là suy nghĩ của con khi thiết kế như thế.

Theo chú ý tưởng của con như vậy đã ổn chưa? Nếu không ổn thì con sẽ thiết kế lại phần đó liền, hì hì
 
Lúc đó, mới 1 mình chú góp ý, chú cho rằng cháu chưa tin.
Bi giờ đã có người thứ 2 ...

Thật ra, nói rằng "nó lồ lộ ra thế kia không thể trả lời sai" cũng đúng, nhưng đó không phải là cách làm của người lập trình. Lập trình phải dự phòng tối đa mọi trường hợp có thể xảy ra. (Chẳng thà không thấy). Thí dụ đang chơi bỗng thấy mỏi mệt và muốn nghỉ, thế mà cứ bị hiện lên bắt trả lời mãi! Hoặc đang chơi bị mẹ gọi đi công việc (khà khà), muốn ngưng ngay để tắt máy cũng không được? Càng quýnh càng gõ sai chính tả mới khổ chứ!
Vả chăng, bao nhiêu form hoành tráng là thế, bỗng chen ngang 1 inputbox không xứng tầm.
 
Lần chỉnh sửa cuối:
Con cám ơn chú Tuân đã góp ý, trong quá trình làm game này, chú Tuân có chỉ dẫn sử dụng class mà có do con vẫn chưa thể hiểu hết được nên không áp dụng vào, hẹn chú vào một ngày nào đó con sẽ làm bằng class, chú nhé :D

Về vấn đề số 1: Khi Input hiện lên, chú bấm Cancel sẽ báo Wrong tức là chú không trả lời gì cả thì cũng tính là sai đấy mà, có thể là con viết không rõ ràng hay là có lỗi nào khác nữa vậy chú ?
Về vấn đề số 2: Con cũng không biết mấy cái thư viện đó đâu ra nữa, chắc là hồi trước ngứa tay bấm bậy, con sẽ update lại bản fix và sẽ rút kinh nghiệm lần sau.
Về vấn đề số 3: Thú thật là con không có xài Office 2007 nên không có lường đến trường hợp đó. Để con cài 2007 rồi sẽ tìm cách fix lỗi này.

Còn về các đặc tính chú góp ý, con sẽ nghiên cứu và bổ sung nó vào bản cập nhập sau này, chú nhé

Cám ơn chú đã góp ý

Các lỗi chú nêu là "Run-time" tức là chương trình sẽ bị hỏng luôn chứ không phải lỗi logic game. Vì chú đang test điều khiển người dùng.
Khi chương trình gặp lỗi "Run-time" thì tất cả các biến nhớ của nó bị giải phóng khỏi bộ nhớ, có nghĩa không còn giá trị.

Viết ứng dụng cho Office mình cần test kỹ các môi trường khác nhau. Vì thế máy của chú có lúc có tới 3 Excel khác nhau (XP,2003,2007).

Cháu fix lỗi "Run-time" sớm rồi đặt tên VERSION chính thức, các phiên bản sau này nâng cấp thì tăng VERSION + 1

Game rất hay. Chúc cháu thành công.
 
Lần chỉnh sửa cuối:
Vừa kiểm tra lại:

Vấn đề 1: Cancel khi đoán hình:
- Khi đang chơi giữa chừng mà đoán hình, hoặc khi đã lật hết các ô: Nếu nhấn cancel trong Inputbox thì không lỗi
- Lỗi phát sinh xảy ra khi vừa hiện form lần đầu tiên, chưa lật ô nào, chưa nhấn bất kỳ 1 button nào đã nhấn đoán nền. Lúc đó biến "y" chưa nhận giá trị nào, nên y = 0. Control "cm0" không có sinh ra lỗi.
Có lẽ Tuân nên nói rõ hơn về tình huống lỗi cho dễ tìm (nếu file của cao thủ nào khác thì chỉ gợi ý thôi cũng được).

Vấn đề 3: Lỗi cancel trong hộp thoại "check compability" khi save:
Sinh ra lỗi trong sự kiện Workbook_BeforeClose: "Method save failed"
Có thể sửa:
PHP:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo Cancel1
    Application.ThisWorkbook.Save
ExitSub:
    Exit Sub
Cancel1:
    Cancel = True
    msgbox "Please try again to save in 2003 type, or choose to Save As 2007 type from menu."
    Resume ExitSub
End Sub

Lạ 1 điều là hôm qua tôi đã test nhiều lần trên 2 máy đều không bị lổi này, nó hiện ra hộp thoại Save As để chọn file type cơ.
 
Lần chỉnh sửa cuối:
Con cám ơn các chú đã đóng góp ý kiến. Con sẽ cố gắng đưa lên bản fix lỗi sớm nhất có thể
 
Kyo sửa thêm:

1. Khi chơi 2 người, đã có tên người chơi, vậy khi hết 1 level nên thông báo tên người thắng và điển của 2 người, chứ không nên là Player 1 và Player 2
2. Khi 2 người chơi cùng điểm nên thông báo hoà, chứ không thông báo tên người thắng
3. Edit 1 số câu hỏi và đáp án:
- Câu 1, phương án A: Tools / Record New Macro
- Câu 16, câu hỏi: Dùng Conditional Formating trong Excel 2003 để tô màu, có thể tô tối đa bao nhiêu màu?
- Câu 20, phương án A: =Sum(C2:F4), đáp án A
- Câu 31: câu hỏi: A1=2, Công thức B1 = Indirect("Sheet2!A"&A1*(Row()-1)) sẽ cho kết quả:, đáp án B
- Câu 39: trùng câu 3, xoá
- Câu 53: Đáp án A
- Câu 56: Phương án C: =HOUR(A1)+MINUTE(A1)/100, đáp án B

Các câu hỏi và đáp án sai này là lỗi của chú, vì chú soạn.
 
Lần chỉnh sửa cuối:
Kyo nghiên cứu làm thêm 1 số option khi chấm dứt 1 level như sau

GameContinue.jpg

(Form trong game cũ của chú)
 
Update ver 1.0.

Con đã sửa các lỗi mà các chú đã góp ý cho con rồi. Bây giờ con sẽ từ từ update thêm tính năng cho nó, trước tiên là con cứ up lên phiên bản hoàn chỉnh cái đã. Cám ơn các chú
 
Question câu 1 và câu 31 chưa sửa.
Điểm hoà chưa sửa. Cũng trong sub Tongket(), chưa gộp 2 If True và If False thành 1.
 
Lần chỉnh sửa cuối:
Con quên mất cái vụ hòa, :D. Con đã sửa lại rồi đó chú, cả câu 31 nữa. Còn câu 1 thì đó là dụng ý của con :D
 
cái trò chơi này viết bằng VB chứ đâu phải EX đâu???
chỉ che mắt được mấy bạn không biết về lập trình thôi!!
 
cái trò chơi này viết bằng VB chứ đâu phải EX đâu???
chỉ che mắt được mấy bạn không biết về lập trình thôi!!
Bạn có biết ý nghĩa của Visual Basic for Application (VBA) không?
VB (không có A), có các câu lệnh đọc giá trị trên sheet, sắp xếp dữ liệu trên sheet, gán giá trị xuống sheet, ... không?

Mà thôi, vấn đề chính đây:

Chữ ký của bạn vi phạm nội quy vì chứa link quảng cáo. Một số người đăng ký gia nhập hàng chục diễn đàn, nhưng chỉ viết bâng quơ để hiện cái chữ ký quảng cáo lên.

Nếu bạn không tự sửa chữ ký trong vòng 24 giờ, Ban Quản trị sẽ dùng quyền điều hành xoá chữ ký của bạn.
Ngoài ra, các bài viết bâng quơ không có giá trị sẽ bị xoá.
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom