Trò chơi trong EXCEL đây, OK?!

  • Thread starter SA_DQ
  • Ngày gửi
S

SA_DQ

Thành viên thân thiết
29/6/05
435
38
28
61
HCM city
#1
Logic trong EXCEL đây, OK?!

Xin gới thiệu sơ lược trò chơi "BColor":
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í
 
Sửa lần cuối:
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#2
Hay đấy. Tôi ủng hộ nhiệt tình. Tôi post file được rồi, khi nào xong bạn gửi cho tôi post lên cho.

Trò crossword của bạn bửa hôm nọ không hiểu sao tôi không cách nào chạy được, dù đã bấm tổ hợp phím bạn cho, do đó không dám bình loạn ẩu.
 
S

SA_DQ

Thành viên thân thiết
29/6/05
435
38
28
61
HCM city
#3
"Tặng các bạn Chương trình chơi CARO trên EXCEL":
http://www.webketoan.com/forum/showthread.php?t=5993
Bạn thử Vào Menu xem nó chạy trực tiếp được không?
Mà trên màn hình có đáp án mà, phải không?
Một số phương án không có đáp số (Đây giống với bài toán giải hệ phương trình vậy mà)
:banana: Trước hẹn luôn; 13h30 ngày Hôm nay, OK!
Ngày 29/08: Gởi cho bạn Workman nhưng chưa nhận được; Nên tôi đã nhờ Anh TV Hùng giúp; Xin cám ơn a. Hùng trước :lol:
 
Sửa lần cuối:
S

SA_DQ

Thành viên thân thiết
29/6/05
435
38
28
61
HCM city
#5
Hướng dẫn thực hiện CTrình!

Phần chuẩn bị:
ngày 19/9: B0: Khai báo một số biến dùng chung, như 1 vài biến chuỗi, một vái biến Integer dùng cho vòng lặp & 1 biến Integer để đếm điểm người chơi & gán cho nó điểm = 71/76 ứng với 6/7 màu.
B1: Tạo các Macro tô các màu vào các ô cần thiết khi nhấn nút tương ứng;
B2: Dùng hàm Rnd() chọn lấy 4 số biểu thị 4 màu ngẫu nhiên (có thể trùng nhau giữa các ô, kệ nó & càng hay!);
B3: Khai báo 3 biến mảng (4 fần tử) cho 3 đối tượng của quy trình đối chiếu & kiểm tra: 1 biến cho các ô màu ngẫu nhiên (4 ô M); 1 biến cho 4 ô của người chơi nhập màu (4 ô N) & biến mảng cho các ô ghi kết quả (4 ô G) (trong đó M: ghi lại việc đã chọn 1/4 ô ngẫu nhiên đem Ssánh hay chưa; N- ghi nhận đã đem ô do người chơi đánh dấu đã đem đối chiếu hay chưa & G - để khẳng định đã ghi lên ô này hay chưa;
B4: Tô các màu = màu nguyên thuỷ;
(Toàn bộ fần này thực hiện bỡi nút lệnh New (có thể bấm CTRL+SHIFT+N để run)) :eek:know:
19/9: Quá trình tô màu các ô của người chơi: Macro tô màu; Macro này thực thi tô màu tương ứng của các nút lệnh gởi đối số đến

Sub ToMau(Iw As Integer)
On Error GoTo Loi_ToMau
Chu = Choose(iCot, "B", "C", "D", "E")
Chu = Chu & CStr(4 + iHang)

iCot = Choose(iCot, 2, 3, 4, 1) 'Chuyển cột khi đã tô xong màu
Range(Chu).Select: Selection.Interior.ColorIndex = Iw
Err_ToMau: Exit Sub
Loi_ToMau: MsgBox Error$
Resume Err_ToMau
End Sub
Ngày 21/09: Quan trọng nhất của phần viết chương trình BColor là phần kiểm tra & ghi nhận kết quả thực hiện theo từng hàng; Trước hết phải ghi nhận các ô mà người chơi đã chọn đúng màu & đúng vị trí để đánh dấu màu đen cho chữ [O]; Điều này ta phải lần lượt từ trái qua phải theo thói quen mà thôi, ghi kết quả cũng lần lượt từ ô trái nhất, thể hiện tuần tự [O] màu đen trước, [O] màu trắng sau; Khi thu được 4 chữ [O] màu đen => thực hiện thủ tục HetVan.
Sau khi kiểm hết 4 ô đúng màu & vị trí, thì đến lượt kiểm màu không đúng vị trí so với ~ ô còn lại chưa đúng (nhờ các biến để loại trừ). Chuyện này phức tạp & dài dòng hơn trước nhiều!
 
Sửa lần cuối:
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#6
Rất hay và thông minh. Tôi mới mở thử, chưa có thời gian chơi. Để tối nay về chơi thử coi sao, mới nhìn coi bộ khá là khó.

Tôi xưa nay rất dở mấy trò đoán mò, chắc là thua hoài quá.
 
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#7
Chơi hay. Đáng đồng tiền bát gạo.

Tuy nhiên nếu lỡ dại click vào đâu đó trong lúc đang chơi thì bị trừ điểm oan. Bác SA DQ xem lại xem có cách nào khắc phục không?
 
S

SA_DQ

Thành viên thân thiết
29/6/05
435
38
28
61
HCM city
#8
Sub DanhGia()

Sub DanhGia()
Dim DaDanhGia(1 To 4) As Boolean
Dim DaGhi(1 To 4) As Boolean
ReDim DaChon(1 To 4) As Boolean
10 '. Đúng màu & Đúng vị trí:
Chu = "B" & CStr(4 + iHang): Range(Chu).Select
If Mau(1) = Selection.Interior.ColorIndex Then
GhiDau "G", 1 'Sub GhiDau dùng để đánh dấu (ghi nhận) đúng KQ [O]
DaGhi(1) = -1
DaDanhGia(1) = True: DaChon(1) = -1
End If
11 Chu = "C" & CStr(4 + iHang): Range(Chu).Select
If Mau(2) = Selection.Interior.ColorIndex Then
If DaGhi(1) = 0 Then
Chu = "G": DaGhi(1) = True
ElseIf DaGhi(1) Then
Chu = "H": DaGhi(2) = True
End If
GhiDau Chu, 1
DaDanhGia(2) = True: DaChon(2) = -1
End If
12
Chu = "D" & CStr(4 + iHang): Range(Chu).Select
If Mau(3) = Selection.Interior.ColorIndex Then
If DaGhi(1) = 0 Then
Chu = "G": DaGhi(1) = -1
ElseIf DaGhi(1) Then
If DaGhi(2) = 0 Then
Chu = "H": DaGhi(2) = -1
ElseIf DaGhi(2) = -1 Then
Chu = "I": DaGhi(3) = -1
End If
End If
GhiDau Chu, 1
DaDanhGia(3) = True: DaChon(3) = -1
End If
13
Chu = "E" & CStr(4 + iHang): Range(Chu).Select
If Mau(4) = Selection.Interior.ColorIndex Then
If DaGhi(1) = 0 Then
Chu = "G": DaGhi(1) = -1
ElseIf DaGhi(1) Then
If DaGhi(2) = 0 Then
Chu = "H": DaGhi(2) = -1
ElseIf DaGhi(2) Then
If DaGhi(3) = 0 Then
Chu = "I": DaGhi(3) = -1
ElseIf DaGhi(3) Then
Chu = "J": DaGhi(4) = -1
End If
End If
End If
GhiDau Chu, 1
DaDanhGia(4) = True: DaChon(4) = -1
End If
If DaGhi(4) Then
HetVan
End If
20 '. Chỉ đúng màu & không đúng vị trí:
Chu = "B" & CStr(4 + iHang): Range(Chu).Select
If DaGhi(1) = 0 Then
For ii = 2 To 4
If Mau(ii) = Selection.Interior.ColorIndex Then
GhiDau "G", 2
DaDanhGia(ii) = -1: DaChon(1) = -1
DaGhi(1) = -1
End If
Next ii
ElseIf DaGhi(1) = -1 And DaGhi(2) = 0 And DaChon(1) = 0 Then
For ii = 2 To 4
If Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "H", 2
DaDanhGia(ii) = -1: DaChon(1) = -1
DaGhi(2) = -1
End If
Next ii
ElseIf DaGhi(2) = -1 And DaGhi(3) = 0 And DaChon(1) = 0 Then '?? ??
For ii = 2 To 4
If Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "I", 2
DaDanhGia(ii) = -1: DaChon(1) = -1
DaGhi(3) = -1
End If
Next ii
ElseIf DaGhi(3) = -1 And DaGhi(4) = 0 And DaChon(1) = 0 Then
For ii = 2 To 4
If Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "J", 2
DaDanhGia(ii) = -1: DaChon(1) = -1
DaGhi(4) = -1
End If
Next ii
End If
'!!!! Cột C
Chu = "C" & CStr(4 + iHang): Range(Chu).Select
If DaGhi(1) = 0 Then
For ii = 1 To 4
If ii <> 2 And Mau(ii) = Selection.Interior.ColorIndex Then
GhiDau "G", 2
DaDanhGia(ii) = -1: DaChon(2) = -1
DaGhi(1) = -1
End If
Next ii
ElseIf DaGhi(1) = -1 And DaGhi(2) = 0 And DaChon(2) = 0 Then
For ii = 1 To 4
If ii <> 2 And Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "H", 2
DaDanhGia(ii) = -1: DaChon(2) = -1
DaGhi(2) = -1
End If
Next ii
ElseIf DaGhi(2) = -1 And DaGhi(3) = 0 And DaChon(2) = 0 Then
For ii = 1 To 4
If ii <> 2 And Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "I", 2
DaDanhGia(ii) = -1: DaChon(2) = -1
DaGhi(3) = -1
End If
Next ii
ElseIf DaGhi(3) = -1 And DaGhi(4) = 0 And DaChon(2) = 0 Then
For ii = 1 To 4
If ii <> 2 And Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "J", 2
DaDanhGia(ii) = -1: DaChon(2) = -1
DaGhi(4) = -1
End If
Next ii
End If
'Cột D ////
Chu = "D" & CStr(4 + iHang): Range(Chu).Select
If DaGhi(1) = 0 Then
For ii = 1 To 4
If ii <> 3 And Mau(ii) = Selection.Interior.ColorIndex Then
GhiDau "G", 2
DaDanhGia(ii) = -1: DaChon(3) = -1
DaGhi(1) = -1
End If
Next ii
ElseIf DaGhi(1) = -1 And DaGhi(2) = 0 And DaChon(3) = 0 Then
For ii = 1 To 4
If ii <> 3 And Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "H", 2
DaDanhGia(ii) = -1: DaChon(3) = -1
DaGhi(2) = -1
End If
Next ii
ElseIf DaGhi(2) = -1 And DaGhi(3) = 0 And DaChon(3) = 0 Then
For ii = 1 To 4
If ii <> 3 And Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "I", 2
DaDanhGia(ii) = -1: DaChon(3) = -1
DaGhi(3) = -1
End If
Next ii
ElseIf DaGhi(3) = -1 And DaGhi(4) = 0 And DaChon(3) = 0 Then
For ii = 1 To 4
If ii <> 3 And Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "J", 2
DaDanhGia(ii) = -1: DaChon(3) = -1
DaGhi(4) = -1
End If
Next ii
End If
'Cột E ////
Chu = "E" & CStr(4 + iHang): Range(Chu).Select
If DaGhi(1) = 0 Then
For ii = 1 To 3 '4
If Mau(ii) = Selection.Interior.ColorIndex Then ' ii<>3
GhiDau "G", 2
DaDanhGia(ii) = -1: DaChon(4) = -1
DaGhi(1) = -1
End If
Next ii
ElseIf DaGhi(1) = -1 And DaGhi(2) = 0 And DaChon(4) = 0 Then
For ii = 1 To 3
If Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "H", 2
DaDanhGia(ii) = -1: DaChon(4) = -1
DaGhi(2) = -1
End If
Next ii
ElseIf DaGhi(2) = -1 And DaGhi(3) = 0 And DaChon(4) = 0 Then
For ii = 1 To 3
If Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "I", 2
DaDanhGia(ii) = -1: DaChon(4) = -1
DaGhi(3) = -1
End If
Next ii
ElseIf DaGhi(3) = -1 And DaGhi(4) = 0 And DaChon(4) = 0 Then
For ii = 1 To 3
If Mau(ii) = Selection.Interior.ColorIndex And DaDanhGia(ii) = 0 Then
GhiDau "J", 2
DaDanhGia(ii) = -1: DaChon(4) = -1
DaGhi(4) = -1
End If
Next ii
End If

DiemSo = DiemSo - 3
Range("B2").Select: ActiveCell.Value = DiemSo
Range("L" & CStr(4 + iHang)).Select
iHang = 1 + iHang: iCot = 1

End Sub
 
Sửa lần cuối:
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#10
Tôi đùa ấy mà. Đây là game logic rất hay.

À mà sao tôi chơi hay như vậy mà không được vào honor list há
 

Thành viên trực tuyến

Không có thành viên trực tuyến.



Xem nhiều