Trò chơi xì dzách trên Excel

Liên hệ QC

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
14,317
Được thích
22,356
Nghề nghiệp
Nuôi ba ba & trùn quế
Đã lâu mình có manh nha viết trò chơi xì zách trên êxcel

Đến nay đã chín mùi; Nhưng xét thấy khả năng không thể xong trước ngày giữa năm, nên thân mời các cao thủ trong VBA & cao thủ trong trò đỏ đen này giúp một tay;

( Ai nhận đồng í giúp nhấn dùm nút Thanks cho bài này 1 cái)

Rất mong được đón tiếp các bạn cùng cộng tác.

Xin cảm ơn đã quan tậm!
 
Bác chuyển sang trò khác được không Bác? Trò nào chơi 2 người hoặc 2 đội thôi ấy. Xì zách chơi 4 người, 32 lá, vừa khó, thời gian chơi lại lâu. Nhất thời không nghĩ ra trò thích hợp.

Khó ở chỗ mấy lá bài, làm sao 1 người thấy mà 3 người khác không thấy? Nếu chơi online thì ai kiểm soát chuyện ấy?
 
Lần chỉnh sửa cuối:
Bác chuyển sang trò khác được không Bác? Trò nào chơi 2 người hoặc 2 đội thôi ấy. Xì zách chơi 4 người, 32 lá, vừa khó, thời gian chơi lại lâu. Nhất thời không nghĩ ra trò thích hợp.

Khó ở chỗ mấy lá bài, làm sao 1 người thấy mà 3 người khác không thấy? Nếu chơi online thì ai kiểm soát chuyện ấy?

Ý định của mình là từ đơn giản đến fức tạp, đầu tiên 1 người chơi với máy; Trước mắt giao cho máy làm cái.

Chỉ dùng 3/4 số là bài thôi trong 1 bộ mà thôi (Nếu cả bộ bài thì hao tổn tài nguyên);

Mình cũng lâu không chơi rồi;

Dự luật sẽ như sau:

(*) Cấp fát cho nhà cái & người chơi mỗi người 2 là bài
+ Nếu ai đó có con ác & 1 trong các con sau: Ác, con 10 trở lên thì thắng ngay;

(*) Nếu số nút của 2 lá dưới 15 thì fải kéo tiếp 1 vài con nữa; nếu tổng số nút >21 thì thôi;
Nếu kéo đến con thứ 5 mà chưa vượt 21 nút thì thắng ngay;

(Vượt 21 nút là bài quác; Nếu nhà cái xét & thấy người chơi bị quác thì người chơi bị thua ván.)

Nếu người chơi bị quác, nhưng cái không xét & cái kéo đến quác thì cái thua

Nhà cái được ưu tiên ở chổ: bằng điểm thì nhà cái thắng!

Các bạn nào có í kiến góp ý thêm về luật chơi không, xin mời?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bác SA ơi,

Không có chơi trò khác được à. Bác đã có thử làm được phần nào chưa?

Lê Văn Duyệt
PS: không dám nhấn nút tks vì không tham gia với Bác được. Hi hi hi.
 
Bác đã có thử làm được phần nào chưa?
Trong file là kết quả của những bước khởi đầu.

Rất mong các bạn tham gia & góp í để cùng nhau hoàn thiện. (Xin mời các bạn là những tay bài lão luyện góp í về những thiếu sót đang có đối chiếu với luật chơi.)
 
Chỉnh sửa lần cuối bởi điều hành viên:
Dear HYen,
Trước mắt thấy như sau:
- Sub keobai() không có thông báo "I win" hoặc "You win", mà theo quy ước, kéo được ngũ linh thì "You win". Do đó khi nhấn nút thôi kéo, thì lại hiện "Ia win" bất kể nhà cái có kéo thêm hay không, kéo thêm được bao nhiêu điểm.
- Sub Maykeo() chỉ có thông báo "I win", không có thông báo "You win".
- Nếu có thông báo tiếng Việt "Ban quac roi" thì các thong báo khác nên là "Ban thang" hoặc "Ban thua"
- Có trường hợp như sau xảy ra: Nhà con thôi kéo, nhưng nhà cái chưa đủ 15 điểm đã lật bài
- Nếu nhà cái có kéo thêm 1 lá, số điểm không được cộng thêm vào ô C11, và chỉ kéo 1 lá đã lật bài.
- Sub maykeo() nên tự động chạy 1 lần hoặc nhiều lần cho đến khi trên 16 điểm hoặc quác. Hiện nay phải nhấn nút thôi kéo, nghĩa là nhà con kéo cho nhà cái.
 
Trước mắt thấy như sau:
(1) - Sub keobai() không có thông báo "I win" hoặc "You win", mà theo quy ước, kéo được ngũ linh thì "You win". Do đó khi nhấn nút thôi kéo, thì lại hiện "I win" bất kể nhà cái có kéo thêm hay không, kéo thêm được bao nhiêu điểm.
(2)- Sub Maykeo() chỉ có thông báo "I win", không có thông báo "You win".
(3)- Nếu có thông báo tiếng Việt "Ban quac roi" thì các thong báo khác nên là "Ban thang" hoặc "Ban thua"
(4)- Có trường hợp như sau xảy ra: Nhà con thôi kéo, nhưng nhà cái chưa đủ 15 điểm đã lật bài
(5)- Nếu nhà cái có kéo thêm 1 lá, số điểm không được cộng thêm vào ô C11, và chỉ kéo 1 lá đã lật bài.
(6) - Sub maykeo() nên tự động chạy 1 lần hoặc nhiều lần cho đến khi trên 16 điểm hoặc quác. Hiện nay phải nhấn nút thôi kéo, nghĩa là nhà con kéo cho nhà cái.
Rất cảm ơn bạn Phan Thành Mỹ đã có những góp í chí lý.
Sẽ tiếp tục sửa đổi bổ sung trong chương trình.

Riêng (5): Trị tại C11 đang dùng để kiểm nghiệm các macro mà thôi; sau này, khi sắp hoàn tất, sẽ không cho ghi nữa.
Nhà cái có thể lật bài của mình bất cứ lúc nào chứ (?); Chỉ có điều lật xong vẫn kéo tiếp được. Hình như điều này có trong thực tế thì fải.

Sẽ chuyển sang tiếng Việt hết! Nhưng lại không dấu. . . .

Trước mắt sẽ fải giải quyết mục (6) làm sao máy kéo tự động. Rất mong các góp ý vể khoản này.


Xin Cảm ơn các bạn đã & đang quan tâm.
 
Bài này mà post trong Quảng cáo - rao vặt, quá phí (nếu không nói là... post sai chỗ!).
Xin mạn phép tác giả cho em chuyển nó vào chỗ trang trọng hơn, xứng đáng với tầm vóc của nó hơn.
 
Trước mắt sẽ fải giải quyết mục (6) làm sao máy kéo tự động. Rất mong các góp ý vể khoản này.

Mã:
Sub maykeo()

   Code ...

Diem = ....
If Diem <= 16 And Solankeo < 3 Then 
   Solankeo = Solankeo + 1
   maykeo
Else
   Code ...
End If

End Sub

Còn 1 điều kiện thắng ngay nữa là 2 con xì, chị ơi!
 
Lần chỉnh sửa cuối:
Tiến bộ trong cách tính khi có con ắch trong số bài của người chơi

Còn (6) vẫn chưa khắc fục hết nhược điểm

Mời các bạn xem file & góp thêm ý kiến.

Rất cảm ơn các bạn đã & đang có những đóng góp cho hướng đi tiếp theo của trò chơi này!
 

File đính kèm

  • GPE.rar
    38.3 KB · Đọc: 206
Chưa xem file bác, nhưng bác cứ lôi file dưới đây về so sánh nhé.

________________

Đã xem file, thấy ngay:
- Cả 2 đều oác: "Bạn thắng"
- Cả 2 cùng điểm (<=21): "Bạn thắng"
- Nhà con oác, nhà cái <=21: "Bạn thắng"

Xin phen này hầu bài Bác, Bác làm cái nhé!
 

File đính kèm

  • XiZachVer2.rar
    38.3 KB · Đọc: 33
Lần chỉnh sửa cuối:
Còn (6) vẫn chưa khắc fục hết nhược điểm

Mời các bạn xem file & góp thêm ý kiến.

Rất cảm ơn các bạn đã & đang có những đóng góp cho hướng đi tiếp theo của trò chơi này!

Xizach rất thú vị...
Còn "keo" này thì sao Bác ơi?
xizach.JPG
Với ván bài trên, em cứ tưởng bài của em là bài dưới -> Bạn đã thắng ?
Có vẻ như cái I win / you win của Bác PTM có vẻ hợp lý hơn Bác à.
 
Lần chỉnh sửa cuối:
Bổ sung:
- Nhà cái 2 lá >16, không nên kéo
- Nhà cái kéo ngũ linh, dù nhỏ hơn cũng thắng
- sửa 1 chút nhéo
 

File đính kèm

  • XiZachVer3.rar
    38.6 KB · Đọc: 36
Hỏi về việc tính điểm với con ách

Hình như con này được tính, lúc thì 1 điểm, lúc khác có thể tính là 10 hay 11 điểm hay sao ấy nhỉ các bạn?

Nếu vậy thì còn lôi thôi nhiều lắm: Tính đi rồi fải tính lại để đạt điểm tối ưu.
 
Hình như con này được tính, lúc thì 1 điểm, lúc khác có thể tính là 10 hay 11 điểm hay sao ấy nhỉ các bạn?

Nếu vậy thì còn lôi thôi nhiều lắm: Tính đi rồi fải tính lại để đạt điểm tối ưu.

Có thể bỏ qua vụ này không bác? Tính thế nào là tối ưu không phải là không tính được, nhưng hơi rắc rối. Bác có cái ý tưởng nào để thực hiện cái zắc zối đó chưa? Thí dụ:
1. Tạo 1 số biến, chia làm 2 nhóm lưu giữ điểm của từng lá bài của 2 bên
2. Đối với nhà cái:
- Tính tối ưu từng nhóm biến, so sánh để có kết quả
- Sau khi kéo 1 lá, tính lại,so sánh lại, quyết định nên kéo tiếp hay không hoặc cho kết quả.
3. Đối với nhà con:
Chả lẽ để máy tính dùm sao?


Còn nữa: Ứng xử của người chơi khác với máy, họ tự quyết định khi nào kéo bài, khi nào không. Có khi 16 cũng không thèm kéo vì họ dự đoán đối phương quác rồi chẳng hạn.
Còn khi kéo 1 hoặc 2 lần, họ cũng sẽ cân nhắc nên có kéo lần thứ 2 hoặc 3 hay không, chứ không phải cứ trên 16 là ngưng đâu.

Bác xem tạm cái file dưới, có cải tiến tí chút theo cách của chị HYen là dùng name hiện kết quả, không dùng msgbox. Ngoài ra có thông báo thắng hoặc thua trong trường hợp đặc biệt như ngũ linh hoặc xì dzách. Hình như 2 lá đều Ách gọi tên khác thì phải?
 

File đính kèm

  • XiZachVer4.rar
    42.4 KB · Đọc: 34
Có thể bỏ qua vụ này không bác? Tính thế nào là tối ưu không phải là không tính được, nhưng hơi rắc rối. (a) Bác có cái ý tưởng nào để thực hiện cái zắc zối đó chưa? Thí dụ:
1. Tạo 1 số biến, chia làm 2 nhóm lưu giữ điểm của từng lá bài của 2 bên
2. Đối với nhà cái:
- Tính tối ưu từng nhóm biến, so sánh để có kết quả
- Sau khi kéo 1 lá, tính lại,so sánh lại, quyết định nên kéo tiếp hay không hoặc cho kết quả.
3. Đối với nhà con:
(b) Chả lẽ để máy tính dùm sao?

Còn nữa: Ứng xử của người chơi khác với máy, họ tự quyết định khi nào kéo bài, khi nào không. Có khi 16 cũng không thèm kéo vì họ dự đoán đối phương quác rồi chẳng hạn.
Còn khi kéo 1 hoặc 2 lần, họ cũng sẽ cân nhắc nên có kéo lần thứ 2 hoặc 3 hay không, chứ không phải cứ trên 16 là ngưng đâu.
Bác xem tạm cái file dưới, có cải tiến tí chút theo cách của chị HYen là dùng name hiện kết quả, không dùng msgbox. Ngoài ra có thông báo thắng hoặc thua trong trường hợp đặc biệt như ngũ linh hoặc xì dzách. (c)Hình như 2 lá đều Ách gọi tên khác thì phải?

(c) Hai con ách là xì già; Còn lại là xì non. Tất nhiên xì non thua xì già; Còn xì già thắng luôn ván.

(a) Í tưởng mình cũng đã có nhưng chưa thể toàn diện. Mấy hôm nay không có máy in để in chương trình ra, xem xét 1 cách tường tận hơn, nên cũng chưa tiếp tục được. Các trò trước mình đều làm thế mới xong đó!

Í tưởng của mình là khi cấp fát bài hay khi kéo bài, nếu đối thủ nào gặp con ách thì cho biến khai báo kiểu Yes/No thành True; Như vậy ta sẽ fải khai báo 2 biến cho ta & cho máy.

Khi tính thì xét có ách & cộng điểm đã tính với 9 (10-1) hay 10 (11-1) mà chưa quác thì điểm mới được xác lập;

Khổ nổi ở chổ khi đã tính cộng thêm, nhưng điểm mới tính chỉ là 14; cần fải kéo tiếp & lá kéo tiếp này dẫn tới quác (Như kéo fải con 8-10 điểm) Lúc đó trong đời thực người ta lại tính con ách quay về 1 điểm;
Cái vụ quay về này mình đang lúng túng (ngay cả cho nhà Con; Chưa nói đến nhà Cái.)
Vì cái vụ quay về này fải trừ 9 hay trừ 10 là cả 1 vấn đề.. . & đang thua chổ này!

Với lại mấy hôm nay trời quá nóng nên đầu óc bốc khói rùi, Làm ăn được chi mô!
 
Í tưởng của mình là khi cấp fát bài hay khi kéo bài, nếu đối thủ nào gặp con ách thì cho biến khai báo kiểu Yes/No thành True; Như vậy ta sẽ fải khai báo 2 biến cho ta & cho máy.
Chính vì chỗ này mà khi tính lại bị khó khăn. Chưa nói khi cấp phát bài hoặc kéo bải bị 2 con ách trở lên.
Giả sử đặt 10 biến thành 2 nhóm, mỗi nhóm 5 biến.
1. Giả sử A1 đến A5 là của nhà cái, và đang tính cho nhà đó: (lá chưa kéo = 0, đương nhiên)

Case 1 ách
- tính sum(A1, A2, ...)
- tính Sum( if(A1=1,10,A1), if(A2=1,10,A2),...)
- tính Sum(if(A1=1,11,A1), if(A2=1,11,A2), ...)
- So sánh 3 kết quả, lấy tối ưu
- Nếu rút thêm 1 lá, lập lại 4 bước trên.

Đó là mới có 1 ách nha. Còn 2 ách trở lên thì nhiều trường hợp lắm đó. Thí dụ 2 ách:
Case 2 ách
- tính Sum(If(A1 = 1 And A2 = 1), 11, A3, ...)
- tính Sum(If(A1 = 1 And A2 = 1), 12, A3, ...)
- tính Sum(If(A1 = 1 And A3 = 1), 11, A2, ...)
- tính Sum(If(A1 = 1 And A3 = 1), 12, A2, ...)
- ...

Hình như 10 trường hợp nữa thì phải, cộng là 13 trường hợp

Đó là: 1 lá tính 10, 1 lá tính 1, hoặc 1 lá tính 11, 1 lá tính 1. Ba lá trở lên không ai tính 2 ách là 20, 21, hoặc 22 cả. Còn nếu chỉ 2 lá đã ách cả thì đã thắng từ đầu rồi.

Còn 3 ách, 4 ách nữa! Ôi dà! nhức đầu lắm.
 
À không. Nếu lý luận:

Nếu 2 lá mà có 1 ách, nếu vô trường hợp xì non, thắng thì đã thắng rồi, 2 ách thì đương nhiên thắng rồi. Kết luận: Không bàn 2 lá. Hai lá có ách thì chỉ tính 1 ách hoặc thắng luôn.

Ba lá mà 2 ách không ai tính 2 ách là 20, 21, hoặc 22 cả

và:

4 lá mà 3 ách cũng không ai tính 20, 21, 22, 30, 31, 32, 33

5 lá mà 4 ách lại càng không.

Kết luận: 3 lá trở lên, bao nhiêu ách cũng tính như 1 ách.

Vậy thì dùng 2 biến mảng A(1 to 5) cho nhà con và B(1 to 5) cho nhà cái:

PHP:
For i = 1 to 5
    If A(i) = 1 Then Ach1 = True
    DiemA1 = DiemA1 + A(i)
Next

DiemA2 =  DiemA1 + IIf(Ach1, 9, 0)
DiemA3 =  DiemA1 + IIf(Ach1, 10, 0)

' Điểm tối ưu'
DiemA = Application. Max( Iff(DiemA1>21, 0, DiemA1),  Iff(DiemA2>21, 0, DiemA2),  Iff(DiemA3>21, 0, DiemA3))

' Nếu DiemA1 quác (kéo theo DiemA2 quác và DiemA3 quác)'
If DiemA = 0 Then DiemA = DiemA1

DiemA này thể hiện trên ô điểm của nhà con cho người chơi biết để quyết định kéo nữa hay thôi. Đoạn code này đặt trong Sub Keobai().

Tương tự tính điểm tối ưu DiemB. Đoạn code tính DiemB để trong Sub Maykeo().
Xét DiemB, kết luận kéo nữa hay thôi.
Không kéo nữa thì so sánh DiemA và DiemB, ra thông báo thắng thua.
Kéo nữa thì chạy Sub Maykeo() lần nữa, lập lại quá trình.
Hà, mai làm!
 
Lần chỉnh sửa cuối:
Dù đã có hướng đi và code mẫu, cũng khá nhiêu khê, mất đứt buổi sáng.
Nhờ mọi người test dùm. Xin cám ơn.
Ghi chú: Đã có thông báo "xì già"
 

File đính kèm

  • XiZachVer6.rar
    43.2 KB · Đọc: 49
Lần chỉnh sửa cuối:
..................
Bổ sung thông báo oác, bằng tiếng việt.
Bổ sung thông báo: "trẻ em dưới 15 tuổi hông được chơi", phòng trường hợp dưới 15 điểm mà nhấn "thôi kéo"
Cái này là nhờ BNTT test hộ, rồi bị chọt.

Vui lòng tải lại file xizachVer6, bài trên
 
Web KT
Back
Top Bottom