Lập trò chơi Đoán số

Liên hệ QC
Tham gia
14/9/12
Bài viết
312
Được thích
68
Nghề nghiệp
VT
Xin góp vui cùng bài toán. Cảm ơn
 

File đính kèm

  • Doan so.xls
    20 KB · Đọc: 184
Xin góp vui cùng bài toán. Cảm ơn

Tôi thử miêu tả lại:

1.Bạn hãy nhấn nút "bắt đầu" trên sheet để bắt đầu cuộc chơi bằng cách hiển thị Form

2. Hãy chọn khoảng các số nguyên dương và nghĩ trong đầu một con số nguyên dương trong khoảng đó

3. Khi nhấn nút "Bắt đầu" thì máy sẽ đoán con số bạn nghĩ trong đầu. Bạn có 3 lựa chọn:
a. Nếu số đúng thì bạn chọn "Đúng"
b. Nếu số của bạn nhỏ hơn số mà máy đề nghị thì bạn chọn "Nhỏ hơn"
c. Nếu số của bạn lớn hơn số mà máy đề nghị thì bạn chọn "Lớn hơn"

4. Nếu bạn chọn "Lớn hơn" hoặc "Nhỏ hơn" thì máy lại đề nghị con số mới và bạn lại phải lựa chọn.

5. Qua một số lần đề nghị hữu hạn thì máy sẽ đề xuất đúng số mà bạn nghĩ. Nếu lúc đó bạn vẫn không chọn "Đúng" thì máy sẽ phát hiện ra và báo với bạn là: "Bạn không trung thực"

6. Nếu bạn chọn "Đúng" thì vòng chơi kết thúc và lại có thể bắt đầu vòng chơi mới.
------------
Nếu máy nghĩ số (nhấn nút để máy rút thăm một số trong khoảng) và bạn đoán thì bạn bắt chước thuật toán của máy. Cũng có thể "thằng bạn" đóng vai trò của máy
--------------
Code viết vội, chưa test kỹ.
 

File đính kèm

  • Doan so.xls
    42.5 KB · Đọc: 123
Sau khi test thì thấy nó cũng chạy đúng, nhưng nhiều lần bấm quá không như mình xòe 12 lá bài (3 lần thôi).
 
Lần chỉnh sửa cuối:
Sau khi test thì thấy nó cũng chạy đúng, nhưng nhiều lần bấm quá không như mình xòe 12 lá bài (3 lần thôi).

Tôi thuộc loại người nếu kẻ tầm thường nói thì chậm hiểu, còn sư phụ nói thì như vịt nghe sấm. Chịu.
Nếu bạn chê bai thì chả có gì để nói thêm. Nhưng nếu là góp ý thì xin học hỏi.
Bạn có thể phát triển cụ thể ý của câu: "nhưng nhiều lần bấm quá không như mình xòe 12 lá bài (3 lần thôi)."?
 
Lần chỉnh sửa cuối:
Tôi thuộc loại người nếu kẻ tầm thường nói thì chậm hiểu, còn sư phụ nói thì như vịt nghe sấm. Chịu.
Nếu bạn chê bai thì chả có gì để nói thêm. Nhưng nếu là góp ý thì xin học hỏi.
Bạn có thể phát triển cụ thể ý của câu: "nhưng nhiều lần bấm quá không như mình xòe 12 lá bài (3 lần thôi)."?

Thằng bạn nó lấy 15 lá bài ra (15 chứ không phải 12) chia làm 3 phần nó cho mình chọn (tự nhìn) rồi nó xào lần thứ nhất, lại chia bài rồi sau 3 lần nó hỏi trong 3 phần bài đó có con bài của mình không, thì chắc chắn lần thứ 3 nó nói trúng phóc con bài mình chọn (nếu mình trung thực).

À, em không dám chê đâu nha, em dị ứng với câu này! Nếu cứ nghĩ thế thì không bao giờ em dám nói gì ở bài mà có Thầy viết nữa!
 
Lần chỉnh sửa cuối:
Đóng góp 1 trò đoán số:

* Nội dung:
- Cho 1 số gồm 4 chữ số: 4 chữ số này khác nhau từ 0 đến 9, chữ số 0 đứng ở đầu được chấp nhận
- Bạn hãy đoán ra số đó trong thời gian nhanh nhất
* Kết quả trả về (làm cơ sở để đoán tiếp)
Ví dụ cụ thể:
Chương trình chạy ra số ngẫu nhiên: 2498
- Bạn đoán lần 1 là 1234 => Kết quả 0 Correct - 2 Wrong ( có chữ số 2 & 4 nhưng sai vị trí)
- Bạn đoán lần 2 là 5678 => Kết quả 1 Correct - 0 Wrong ( đúng chữ số 8)
- Bạn đoán lần 3 là 1908 => Kết quả 1 Correct - 1 Wrong ( đúng chữ số 8 & sai vị trí chữ số 9)
- Bạn đoán lần 4 là 4398 => Kết quả 2 Correct - 1 Wrong ( đúng chữ số 8, 9 & sai vị trí chữ số 4)
- Bạn đoán lần 5 là 3498 => Kết quả 3 Correct - 0 Wrong ( đúng chữ số 8, 9 & 4)
- Bạn đoán lần 6 là 2498 => Kết quả 4 Correct - 0 Wrong => CONGRATULATIONS
Bài toán phải suy luận có khi cả chục lần vẫn nhầm (và cũng chỉ cho tối đa 10 lần đoán)

Xin hỏi cho Code cho thời gian Time chơi (Timer) cho vào form thế nào?
Code vừa viết thử, chưa test nhiều.
 

File đính kèm

  • Doan 4 so.xls
    49.5 KB · Đọc: 60
Lần chỉnh sửa cuối:
Thằng bạn nó lấy 15 lá bài ra (15 chứ không phải 12) chia làm 3 phần nó cho mình chọn (tự nhìn) rồi nó xào lần thứ nhất, lại chia bài rồi sau 3 lần nó hỏi trong 3 phần bài đó có con bài của mình không, thì chắc chắn lần thứ 3 nó nói trúng phóc con bài mình chọn (nếu mình trung thực).

Vì tôi không bao giờ ham chơi bài, game, chát, phây sờ búc v...v nên nói về những cái đó tôi không hiểu.
Nói về lần bấm thì đúng thôi vì tôi viết qua giao diên để có cái mà test code. Thế thôi. Nhưng xen vào 12 lá bài với 3 lần thì tôi không hiểu. Vì tôi lại nghi hoặc là thuật toán dùng nhiều lần đoán quá chăng. Rằng ai đó cho rằng có thuật toán đoán ít lần hơn chăng.

Nếu cứ nghĩ thế thì không bao giờ em dám nói gì ở bài mà có Thầy viết nữa!

Những ai đã từng đọc các bài của tôi thì biết là tôi không bao giờ lờ đi những góp ý về code như nhiều người khác. Vì code nó như trẻ sơ sinh, mọi cái nhìn rõ mồn một nên không cãi chầy cối được. Hoặc đúng-sai hoặc chuẩn-chưa chuẩn. Không có chuyện trắng đen lẫn lộn được.

Rất nhiều khi người góp ý chỉ ra chỗ chưa chuẩn hay nhầm lẫn thì tôi thường xin lỗi và cám ơn. Tôi không là sư phụ gì cả, vả lại luôn cho rằng ai cũng có lúc mắc phải lỗi. Vì thế không có gì phải hổ thẹn, đâu có phải "lờ đi" như nhiều người là coi như không có lỗi, là mình vẫn vĩ đại đâu. Đâu có phải nói một lời xin lỗi là giá trị của mình giảm đi đâu. Nhưng có nhiều người chọn cách lờ đi.

Về quan điểm, về sở thích có thể đôi co nhưng về code thì đối với tôi mọi người có thể thoải mái góp ý. Tôi đã từng xin lỗi và cám ơn khi nhầm lẫn và có người góp ý rồi, vậy sao lại ngại góp ý? Nhưng đã góp ý thì phải rõ ràng, tránh hiểu lầm.

Mà cứ tôi bạn là được.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Thằng bạn nó lấy 15 lá bài ra (15 chứ không phải 12) chia làm 3 phần nó cho mình chọn (tự nhìn) rồi nó xào lần thứ nhất, lại chia bài rồi sau 3 lần nó hỏi trong 3 phần bài đó có con bài của mình không, thì chắc chắn lần thứ 3 nó nói trúng phóc con bài mình chọn (nếu mình trung thực).....
Lần I: loại 10 còn 5
Lần II:
***Trường hợp a: loại 4, tóm được ngay, khỏi lần 3
***Trường hợp b: loại 3, còn 2
Lần III: tóm được em í thôi mà
Híc
 
Lần I: loại 10 còn 5
Lần II:
***Trường hợp a: loại 4, tóm được ngay, khỏi lần 3
***Trường hợp b: loại 3, còn 2
Lần III: tóm được em í thôi mà
Híc

gọi là LẦN đưa ra - chứ mỗi lần lại có thể xảy ra tối đa 2 câu hỏi (cho 2 phần) , tức là 2 lần hỏi
 
Vì tôi không bao giờ ham chơi bài, game, chát, phây sờ búc v...v nên nói về những cái đó tôi không hiểu.
Nói về lần bấm thì đúng thôi vì tôi viết qua giao diên để có cái mà test code. Thế thôi. Nhưng xen vào 12 lá bài với 3 lần thì tôi không hiểu. Vì tôi lại nghi hoặc là thuật toán dùng nhiều lần đoán quá chăng. Rằng ai đó cho rằng có thuật toán đoán ít lần hơn chăng.
......

Bác băn khoăn làm gì,

Vấn đề đưa ra là sự so sánh khập khiễng: số cây bài cố định (trong khi bài toán của bác siwtom là số không cố định tức là lớp bài toán), 3 lần là bị tráo khái niệm (vì số lần hỏi cho lượt chơi cũng có thể xảy ra tối đa 2 câu hỏi rui - như trả lời bài trên cho bác concogia) nên số lần có thể xảy ra thực chất là >3

Và cuối cùng bản chất vấn đề ngưòi đọc code của bác cần biết là Thuật toán chia đôi - đó mới là cần hiểu, thì họ lại không hiểu hoặc cố tình không hiểu, thật nực cười
 
Lần chỉnh sửa cuối:
gọi là LẦN đưa ra - chứ mỗi lần lại có thể xảy ra tối đa 2 câu hỏi (cho 2 phần) , tức là 2 lần hỏi
Híc, đây là mình đang nói về bài của bạn Nghĩa, sau khi xào bài, chia làm 3 phần, đặt câu hỏi thì là xong một lần ( dĩ nhiên có thể hỏi 1 hoặc nhiều nhất là 2 câu trong một lần, riêng lần thứ 3 - nếu xảy ra - chỉ duy nhất một câu )
Bài này và câu hỏi ở bài #1 chẳng ăn nhập gì với nhau cả bạn ạ
Thân
 
Bài này giống với bài mình đã giải ghê hồn!

Đóng góp 1 trò đoán số:

* Nội dung:
- Cho 1 số gồm 4 chữ số: 4 chữ số này khác nhau từ 0 đến 9, chữ số 0 đứng ở đầu được chấp nhận
- Bạn hãy đoán ra số đó trong thời gian nhanh nhất
* Kết quả trả về (làm cơ sở để đoán tiếp)
Ví dụ cụ thể:
Chương trình chạy ra số ngẫu nhiên: 2498
- Bạn đoán lần 1 là 1234 => Kết quả 0 Correct - 2 Wrong ( có chữ số 2 & 4 nhưng sai vị trí)
- Bạn đoán lần 2 là 5678 => Kết quả 1 Correct - 0 Wrong ( đúng chữ số 8)
- Bạn đoán lần 3 là 1908 => Kết quả 1 Correct - 1 Wrong ( đúng chữ số 8 & sai vị trí chữ số 9)
- Bạn đoán lần 4 là 4398 => Kết quả 2 Correct - 1 Wrong ( đúng chữ số 8, 9 & sai vị trí chữ số 4)
- Bạn đoán lần 5 là 3498 => Kết quả 3 Correct - 0 Wrong ( đúng chữ số 8, 9 & 4)
- Bạn đoán lần 6 là 2498 => Kết quả 4 Correct - 0 Wrong => CONGRATULATIONS
Bài toán phải suy luận có khi cả chục lần vẫn nhầm (và cũng chỉ cho tối đa 10 lần đoán)

Xin hỏi cho Code cho thời gian Time chơi (Timer) cho vào form thế nào?
Code vừa viết thử, chưa test nhiều.

Nó được viết tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?82-trò-chơi-BColor-của-SA_DQ
[thongbao]Hàm Rnd() cho 4 màu ngẫu nhiên trong 6/7 màu để khuất sau 4 ô;
Người chơi chọn 4 trong 6/7 màu & nhấn nút kiểm để máy cho biết kết quả so sánh với 4 màu trên; nếu đúng màu & đúng vị trí sẽ được báo X (& bị trừ 2 điểm- đầu ván biếu 71/76(7) điểm) nếu chỉ đúng màu sẽ báo O ( & trừ 1 điểm)
Trò chơi tiếp tục ở các hàng dưới (qua mỗi hàng bị trừ 3 điểm); Có tổng cộng 10 hàng; ~ người chơi hay chỉ cần khoảng 5-7 dòng là xong ván (khi đó bốn màu đã chọn ở hàng này trùng với 4 màu ngẫu nhiên mà máy đã chọn ban đầu & đúng theo trật tự nữa.
Ngày 29-30/08: Nút 7 dùng để chuyển đổi giữa 6 màu => 7 màu & ngược lại! Khi <> 7, nút có tác dụng dời vị trí [/thongbao]
 
Tôi thử miêu tả lại:

1.Bạn hãy nhấn nút "bắt đầu" trên sheet để bắt đầu cuộc chơi bằng cách hiển thị Form

2. Hãy chọn khoảng các số nguyên dương và nghĩ trong đầu một con số nguyên dương trong khoảng đó

3. Khi nhấn nút "Bắt đầu" thì máy sẽ đoán con số bạn nghĩ trong đầu. Bạn có 3 lựa chọn:
a. Nếu số đúng thì bạn chọn "Đúng"
b. Nếu số của bạn nhỏ hơn số mà máy đề nghị thì bạn chọn "Nhỏ hơn"
c. Nếu số của bạn lớn hơn số mà máy đề nghị thì bạn chọn "Lớn hơn"

4. Nếu bạn chọn "Lớn hơn" hoặc "Nhỏ hơn" thì máy lại đề nghị con số mới và bạn lại phải lựa chọn.

5. Qua một số lần đề nghị hữu hạn thì máy sẽ đề xuất đúng số mà bạn nghĩ. Nếu lúc đó bạn vẫn không chọn "Đúng" thì máy sẽ phát hiện ra và báo với bạn là: "Bạn không trung thực"

6. Nếu bạn chọn "Đúng" thì vòng chơi kết thúc và lại có thể bắt đầu vòng chơi mới.
------------
Nếu máy nghĩ số (nhấn nút để máy rút thăm một số trong khoảng) và bạn đoán thì bạn bắt chước thuật toán của máy. Cũng có thể "thằng bạn" đóng vai trò của máy
--------------
Code viết vội, chưa test kỹ.

Trước tiên xin cảm ơn siwtom. Bạn miêu tả rất đúng ý mình. sáng nay mình đã gửi trả lời sao bây giờ lại không thấy nhỉ hay tại mình không bấm gửi nhỉ. Mình đã chạy thử, đúng là như vậy đấy. Nhưng nếu bỏ mục "hãy chọn câu trả lời đi thì hay hơn". Một lần nữa xin cảm ơn siwtom nhé.
 
Trước tiên xin cảm ơn siwtom. Bạn miêu tả rất đúng ý mình. sáng nay mình đã gửi trả lời sao bây giờ lại không thấy nhỉ hay tại mình không bấm gửi nhỉ. Mình đã chạy thử, đúng là như vậy đấy. Nhưng nếu bỏ mục "hãy chọn câu trả lời đi thì hay hơn". Một lần nữa xin cảm ơn siwtom nhé.

Nếu bạn muốn thì bạn xóa đi. Chả nhẽ mỗi việc đó bạn không làm được?
Alt + F11 --> phải chuột trên UserForm1 chọn View code --> tự tìm hoặc Edit --> Find --> nhập Hay chon cau tra loi --> chỗ nào tìm thấy thì xóa. Có 2 chỗ.

Mà code có dài gì đâu. Cứ đọc từ đầu tới cuối, chả nhẽ không phát hiện ra
MsgBox "Hay chon cau tra loi"
 
Đóng góp 1 trò đoán số:
* Nội dung:
- Cho 1 số gồm 4 chữ số: 4 chữ số này khác nhau từ 0 đến 9, chữ số 0 đứng ở đầu được chấp nhận
- Bạn hãy đoán ra số đó trong thời gian nhanh nhất
* Kết quả trả về (làm cơ sở để đoán tiếp)
. . . .

Mình vừa thử sức với trò chơi của bạn; & cũng fải đến lần gần cuối mới tìm ra lời giải.
Trò này thật là thú vị & cảm ơn bạn rất nhiều!

Mình cho rằng 4 số này cho fép giống nhau thì mức độ khó của trò chơi sẽ nâng lên đáng kể.
(Lúc đó, thay vì chỉ cho 10 lần đoán, thì ta nới lên gấp rưỡi hay gắp đôi.)

Các bạn có thể cùng nhau fát triển trò chơi này trên trang tính đó nhỉ?!
Cũng là cách tu luyện giải thuật trong lập trình VBA nói riêng.

Chúc các bạn vui vẻ nhân dịp xuân về!
 
Phát triển Code trò đoán 4 số

Mình vừa thử sức với trò chơi của bạn; & cũng fải đến lần gần cuối mới tìm ra lời giải.
Trò này thật là thú vị & cảm ơn bạn rất nhiều!

Mình cho rằng 4 số này cho fép giống nhau thì mức độ khó của trò chơi sẽ nâng lên đáng kể.
(Lúc đó, thay vì chỉ cho 10 lần đoán, thì ta nới lên gấp rưỡi hay gắp đôi.)

Các bạn có thể cùng nhau fát triển trò chơi này trên trang tính đó nhỉ?!
Cũng là cách tu luyện giải thuật trong lập trình VBA nói riêng.

Chúc các bạn vui vẻ nhân dịp xuân về!
Đoán 4 chữ số khác nhau đã bở hơi tai rồi bạn ơi. Chơi từ đơn giản đến phức tạp thôi bạn (đoán nhiều lần quá người chơi sẽ ngán và bỏ dở, hic hic).
Bài này dùng tư duy và loại trừ khá hay (Các bạn chơi với em hoặc cháu chưa chắc đã "ăn" được đâu nhé)

Mình đã thêm được timer vào form

1) Khai báo biến t ở đầu Code trong form
Dim t

2) Code cho UserForm_Initialize
Mã:
Private Sub UserForm_Initialize()
t = Timer
With Sheet1
    .Range("Z1:Z4").Value = UniqueRandomNum(0, 9, 4)
    lblNumber = .[Z1] & .[Z2] & .[Z3] & .[Z4]
    lblNumber.Visible = False
End With
End Sub

3) Sau đó cho thời gian vào nếu đoán đúng số
Mã:
Private Sub CommandButton1_Click()
...

If n = 4 Then
lblNumber.Visible = True
MsgBox "CORRECT NUMBER:" & Chr(13) & Number & Chr(13) & Chr(13) & "Play time = " & Timer - t, , "Congratulations!"
Unload Me
End If
....

End Sub

Tuy nhiên code viết hơi bị "non". Các bạn có thể đưa ra giúp giải thuật nào tốt hơn. Hoặc chí ít sửa cho gọn giúp mình đoạn so sánh từng chữ số để lấy vị trí đúng/sai này:
Mã:
With Sheet1
If CLng(txtN1) = .[Z1] Then n = n + 1
If CLng(txtN1) = .[Z2] Or CLng(txtN1) = .[Z3] Or CLng(txtN1) = .[Z4] Then m = m + 1

If CLng(txtN2) = .[Z2] Then n = n + 1
If CLng(txtN2) = .[Z1] Or CLng(txtN2) = .[Z3] Or CLng(txtN2) = .[Z4] Then m = m + 1

If CLng(txtN3) = .[Z3] Then n = n + 1
If CLng(txtN3) = .[Z1] Or CLng(txtN3) = .[Z2] Or CLng(txtN3) = .[Z4] Then m = m + 1

If CLng(txtN4) = .[Z4] Then n = n + 1
If CLng(txtN4) = .[Z1] Or CLng(txtN4) = .[Z2] Or CLng(txtN4) = .[Z3] Then m = m + 1
End With
 

File đính kèm

  • Doan 4 so.xls
    61 KB · Đọc: 8
Lần chỉnh sửa cuối:
Bài này dùng tư duy & loại trừ khá hay

Bỡi cần sử dụng tư duy loại trừ, nên có lúc tôi muốn nhập hai số giống nhau trong 2 ô lại không nhập được;
Ngược lại, có lúc tôi cần để trống 1 hay vài ô để chỉ kiểm tra 1 số nào đó thôi, thì chương trình chưa cho fép

Mong bạn xem xét đến vấn đề này & cho í kiến;

Ngoài cách tính giớ, chúng ta có thể cho điểm người chơi, không khống chế thời gian 1 cách cứng nhắc!

Ví dụ cho điểm như vầy:

Nhập 1 hàng (4 số), khi nhấn nút kiểm sẽ trừ đi 3 điểm; 1 ô "Correct" ta trừ 2 điểm; 1 ô "Wrong": trừ 1 điểm
Để làm việc này, ban đầu ta tặng người chơi 1 số điểm như nhau, như 123 điểm chẳng hạn.

Mong bạn quan tâm đến đề xuất!



,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

(Mình vừa chơi được 1 ván rất may, như sau:
Num1|Num2|Num3|Num4||Correct|Wrong
9|8|7|6||0|1
0|1|2|3||2|0
4|5|9|8||1|0
4|7|2|3||2|1
Đ|Đ|Đ|Đ|||
Các bạn đoán xem mình nhập những số nào?)
 
Lần chỉnh sửa cuối:
Bỡi cần sử dụng tư duy loại trừ, nên có lúc tôi muốn nhập hai số giống nhau trong 2 ô lại không nhập được;
Ngược lại, có lúc tôi cần để trống 1 hay vài ô để chỉ kiểm tra 1 số nào đó thôi, thì chương trình chưa cho fép

Mong bạn xem xét đến vấn đề này & cho í kiến;

Ngoài cách tính giớ, chúng ta có thể cho điểm người chơi, không khống chế thời gian 1 cách cứng nhắc!

Ví dụ cho điểm như vầy:

Nhập 1 hàng (4 số), khi nhấn nút kiểm sẽ trừ đi 3 điểm; 1 ô "Correct" ta trừ 2 điểm; 1 ô "Wrong": trừ 1 điểm
Để làm việc này, ban đầu ta tặng người chơi 1 số điểm như nhau, như 123 điểm chẳng hạn.

Mong bạn quan tâm đến đề xuất!



,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

(Mình vừa chơi được 1 ván rất may, như sau:
Num1|Num2|Num3|Num4||Correct|Wrong
9|8|7|6||0|1
0|1|2|3||2|0
4|5|9|8||1|0
4|7|2|3||2|1
Đ|Đ|Đ|Đ|||
Các bạn đoán xem mình nhập những số nào?)
7 5 2 3 đúng không bạn ChanhTQ?
Tư duy loại trừ chắc cũng gần giống cách mình hay chơi.
Diễn giải:
- Lần 1: 9 8 7 6 cho 0 số ở vị trí đúng & 1 số ở vị trí sai
- Lần 2: 0 1 2 3 cho 2 số ở vị trí đúng & 0 số ở vị trí sai (=> chắc chắn là 1 chữ số còn lại phải là 4 hoặc 5)
- Lần 3: 4 5 9 8 cho 1 số ở vị trí đúng & 0 số ở vị trí sai (từ thông tin lần 2 => không có số 9 và số 8)
- Lần 4: 4 7 2 3 cho 2 số ở vị trí đúng & 1 số ở vị trí sai (so sánh thông tin ở lần 2, lần 3 & lần 4 => số 2 và số 3 đúng vị trí, số 4 hoặc số 7 sai vị trí => kết hợp với lần 3 thì số 7 sai vị trí => số chính xác là 7523)
Nếu mình là người chơi thì ở lần 4 mình sẽ thử là 7423 để đảo vị trí số 4 so với lần 3 sẽ cho ta nhiều thông tin để sàng lọc hơn?

- Nếu nhập 2 số giống nhau trong 2 ô bạn muốn hiển thị kết quả thế nào => rất là loạn, khó tư duy logic
- Nguyên tắc không cho để ô trống cũng là bắt buộc người chơi phải khéo léo lựa chọn số để sàng lọc, loại trừ, tất nhiên sẽ có 1 phần may mắn.
- Bạn giúp mình thêm cách tính điểm để có thể cho người chơi lựa chọn chế độ (thời gian hoặc tính điểm) & được học hỏi thêm giải thuật/ code. Tks

Chúc mọi người chơi vui vẻ (liệu có nhiều người "thông minh hơn học sinh lớp 5" không ? hihi)
P/S:
Các bạn download file bài #16 và chơi thử rùi Post kết quả xem thế nào :))
trò này tính thời gian mới khó. hic hic
 
Lần chỉnh sửa cuối:
/-(ình như bộ tạo số ngẫu chưa được chú í đúng mức hay sao í!

[Thongbao]Tình cờ gặp lại số cũ nè bạn, chỉ trong ngày!
[/Thongbao]

DoanSo.JPG
 
[Thongbao]Tình cờ gặp lại số cũ nè bạn, chỉ trong ngày!
[/Thongbao]

View attachment 115599

Hàm tạo số ngẫu nhiên này là ứng dụng hàm của anhtuan1066
http://www.giaiphapexcel.com/forum/showthread.php?27286-Tạo-dãy-số-ngẫu-nhiên-không-trùng
Mã:
Function UniqueRandomNum(Bottom As Long, Top As Long, Amount As Long)
  On Error Resume Next
  If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1
  With CreateObject("Scripting.Dictionary")
    Do
      .Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, ""
    Loop Until .Count = Amount
    UniqueRandomNum = WorksheetFunction.Transpose(.Keys)
  End With
End Function

Khi kích hoạt form sẽ tạo bộ số mới không trùng vào Sheet1.[Z1:Z4]
Mã:
Private Sub UserForm_Initialize()
t = Timer
With Sheet1
    [COLOR=#ff0000].Range("Z1:Z4").Value = UniqueRandomNum(0, 9, 4)[/COLOR]
    lblNumber = .[Z1] & .[Z2] & .[Z3] & .[Z4]
    lblNumber.Visible = False
End With
End Sub
Không hiểu sao lại lặp lại bộ số ngẫu nhiên thế nhỉ? Nhờ các bạn kiểm tra giúp

Hic, Vừa chạy thử lại thì không hiểu hàm tạo số ngẫu nhiên của anhtuan1066 cứ tạo ra 1 loại bộ số giống nhau
* Mở file => chơi lần 1 thì bộ số là 7523, chơi lần 2 là 7084 ...
Có phải do sai ở dòng màu đỏ không?
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom