Quay đều... quay đều.. quay đều (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,963
Ngồi buồn, làm cái trò quay.. quay này chơi

[video=youtube;v4gJ01SqeQw]http://www.youtube.com/watch?v=v4gJ01SqeQw[/video]

Ai thích thì có thể mang về chế biến thành trò quay số trúng thưởng cũng được
Ẹc... Ẹc...
 

File đính kèm

Đọc tiêu đề em lại tưởng bài hát : "Xe đạp ơi" !!! Hì hì! Hóa ra lại là trò quay xổ số! hic!
 
Lần chỉnh sửa cuối:
Ngồi buồn, làm cái trò quay.. quay này chơi
Ai thích thì có thể mang về chế biến thành trò quay số trúng thưởng cũng được
Ẹc... Ẹc...

Hay quá! Cái này mà chế biến một tí giao diện thì thành một trò rút thăm hoành tráng đây! Cám ơn Thầy nhiều nhiều!
 
Ngồi buồn, làm cái trò quay.. quay này chơi

Ai thích thì có thể mang về chế biến thành trò quay số trúng thưởng cũng được
Ẹc... Ẹc...
Cái này hay quá! Tôi đã tải về tìm hiểu mãi mà chẳng hiểu gì cả. Mong bác tạo giúp tôi một form tương tự để khi quay thì tạo ra các số từ 0 đến 45. Cái này mà dùng để kiểm tra bài cũ thì tuyệt lắm. Mong bác tận tình giúp đỡ. Xin cảm ơn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Em cứ tưở ng bà i " Xe đạp ơi "" " đấy ạ...hì hì....
Xem xong rùi em mới nhớ, hix....cái này giống ngày xư a thầy dạy toán "rút thăm trúng thương" cho đ ứa nào may mắn lên trả bài...ặc, cũng may hồi đ ó thầy em chư a biết cái nì.. (^^!)
 
Cái này hay quá! Tôi đã tải về tìm hiểu mãi mà chẳng hiểu gì cả. Mong bác tạo giúp tôi một form tương tự để khi quay thì tạo ra các số từ 0 đến 45. Cái này mà dùng để kiểm tra bài cũ thì tuyệt lắm. Mong bác tận tình giúp đỡ. Xin cảm ơn!
Chạy tư 0 đến 45 có nghĩa là:
- Hàng đơn vi chạy từ 0 đến 9
- Hàng chục chạy từ 0 đến 4
Mà 3 số này được điều khiển bởi 3 sub khác nhau, vậy:
- Ta xóa code điều khiển số hàng trăm đi bằng cách sửa:
PHP:
Sub StartTimer()
  StopTimer1
  StopTimer2
  StopTimer3
  Randomize
  cycle1 = Int(Rnd * 40) + 50
  cycle2 = Int(Rnd * 40) + 50
  cycle3 = Int(Rnd * 40) + 50
  iT1 = 0: iT2 = 0: iT3 = 0
  SetTimer hWnd, 1, delay1, AddressOf TimeProc1
  SetTimer hWnd, 2, delay2, AddressOf TimeProc2
  SetTimer hWnd, 3, delay3, AddressOf TimeProc3
End Sub
Thành:
PHP:
Sub StartTimer()
  StopTimer1
  StopTimer2
  StopTimer3
  Randomize
  cycle1 = Int(Rnd * 40) + 50
  cycle2 = Int(Rnd * 40) + 50
  cycle3 = Int(Rnd * 40) + 50
  iT1 = 0: iT2 = 0: iT3 = 0
  SetTimer hWnd, 2, delay2, AddressOf TimeProc2
  SetTimer hWnd, 3, delay3, AddressOf TimeProc3
End Sub
(Bớt 1 dòng SetTimer)
- Với số hàng chục, do chạy từ 0 đến 4. Vậy trong sub TimeProc2, chổ nào có dòng Mod 10 thì sửa thành Mod 5
- Ở 2 sub Reset_Pos2Reset_Pos3, thay dòng If Chk1 And Chk2 And Chk3 Then thành If Chk2 And Chk3 Then (bỏ bớt biến Chk1)
Suy đoán, chỉnh sửa rồi thí nghiệm
--------------------------
Tuy nhiên vẫn còn 1 chổ rắc rối: Khi hàng chục là 4 thì hàng đơn vị chỉ có thể là từ 0 đến 5 ----> Cái này quả thật là khoai. Đừng nói là code, ngay cả làm 1 cái Counter bằng cơ khí cũng hổng biết phải chỉnh chổ này thế nào nữa
Giải phải tạm thời:
- Quay hàng chục trước
- Nếu hàng chục dừng lại ở các số từ 0 đến 3 thì hàng đơn vị sẽ chạy từ 0 đến 9 ---> Mod 10
- Nếu hàng chục dừng lại ở số 4 thì hàng đơn vị sẽ chạy từ 0 đến 5 ---> Mod 6
 
Lần chỉnh sửa cuối:
Đúng là "học vẹt" khó thật. Tôi đã làm theo lời bác và chế lại trên PowerPoint thì gặp lỗi sau:
+ Nhấn nút start thì nó quay mãi không thôi
+ Nhấn nút Stop thì gặp lỗi, nhưng tôi sửa hoài không được
Mong anh giúp đỡ! Xin xem file đính kèm.
View attachment thu.rar
 
Đúng là "học vẹt" khó thật. Tôi đã làm theo lời bác và chế lại trên PowerPoint thì gặp lỗi sau:
+ Nhấn nút start thì nó quay mãi không thôi
+ Nhấn nút Stop thì gặp lỗi, nhưng tôi sửa hoài không được
Mong anh giúp đỡ! Xin xem file đính kèm.
View attachment 68539
Cũng dễ suy luận thôi
- Số hàng trăm được điều khiển bởi các Sub và các biến có số 1 phía sau tên
- Số hàng chục được điều khiển bởi các Sub và các biến có số 2 phía sau tên
- Số hàng đơn vi được điều khiển bởi các Sub và các biến có số 3 phía sau tên
Giờ xóa số hàng trăm thì đương nhiên phải xóa mọi thứ có liên quan đến số 1 kia. Vậy thôi
(ngoải ra, bạn copy sang PP bị thiếu 1 số code)
 

File đính kèm

Cũng dễ suy luận thôi
- Số hàng trăm được điều khiển bởi các Sub và các biến có số 1 phía sau tên
- Số hàng chục được điều khiển bởi các Sub và các biến có số 2 phía sau tên
- Số hàng đơn vi được điều khiển bởi các Sub và các biến có số 3 phía sau tên
Giờ xóa số hàng trăm thì đương nhiên phải xóa mọi thứ có liên quan đến số 1 kia. Vậy thôi
(ngoải ra, bạn copy sang PP bị thiếu 1 số code)

Hay thiệt đó Thầy ơi, nhưng cũng nên chặn lại rằng, khi hàng chục được chọn là 4 thì dứt khoát hàng đơn vị phải dưới 6 mới được! Vì chỉ chọn trong 45 số thôi.

==> Vậy nên viết code tổng quan hơn được không Thầy? vẫn làm 3 dãy số, hoặc hơn nữa, lên đến hàng ngàn luôn, vậy 4 dãy số đi; nếu số đầu vào là 2 dãy thì nó sẽ hiện lên chỉ 2 dãy, và tính số đơn vị giới hạn là bao nhiêu, giá trị max của dãy đầu là bao nhiêu, và giá trị max của dãy cuối là bao nhiêu, cho nên, có thể thêm 1 cái inputbox hoặc để hẳn trên form 1 textbox số đầu vào, sau đó tính len(textbox) của nó (để tính số dãy cần hiện), rồi max của left(textbox,1), và max của right(textbox,1) để giới hạn số cho phép chạy... đại khái là vậy.
 
Lần chỉnh sửa cuối:
Nếu được như thế này thì càng hay đấy.
 
Hay thiệt đó Thầy ơi, nhưng cũng nên chặn lại rằng, khi hàng chục được chọn là 4 thì dứt khoát hàng đơn vị phải dưới 6 mới được! Vì chỉ chọn trong 45 số thôi.

==> Vậy nên viết code tổng quan hơn được không Thầy? vẫn làm 3 dãy số, hoặc hơn nữa, lên đến hàng ngàn luôn, vậy 4 dãy số đi; nếu số đầu vào là 2 dãy thì nó sẽ hiện lên chỉ 2 dãy, và tính số đơn vị giới hạn là bao nhiêu, giá trị max của dãy đầu là bao nhiêu, và giá trị max của dãy cuối là bao nhiêu, cho nên, có thể thêm 1 cái inputbox hoặc để hẳn trên form 1 textbox số đầu vào, sau đó tính len(textbox) của nó (để tính số dãy cần hiện), rồi max của left(textbox,1), và max của right(textbox,1) để giới hạn số cho phép chạy... đại khái là vậy.
Nếu được như thế này thì càng hay đấy.
Nói chung hứng lên làm chơi cho vui thôi... Phần chính đã có, bây giờ muốn cải tiến ra sao các bạn cứ tự mình nghiên cứu đi.. làm lại những cái đã cũ tôi lười lắm
(Tính tôi chỉ thích... hàng mới... Ẹc... Ẹc...)
 
Với số hàng ngàn (4 ô số), chỉ cần 3 cái If ở đây để chạy 3 cái sub để quay 3 ô đầu hoặc không chạy , cộng với 4 biến ở kia để thay vào hàm Mod.
 
Lần chỉnh sửa cuối:
Một số vấn đề cần góp ý (mà tôi chưa thể làm được)

Vì kết quả ngẫu nhiên còn trùng lặp với kết quả đã xuất hiện, thêm nữa là chưa tổng quát cho tất cả số đầu vào, nên tôi đưa ra hướng giải quyết như sau:

Thêm 1 textbox để nhập số đầu vào, sau đó tính L= Len(Val(Textbox)).

Tốc độ dừng của từng hàng còn lộn xộn, nên đặt hàng nào đó dừng trước theo kiểu cố định,
chẳng hạn dừng ở hàng đơn vị trước, hàng chục, rồi đến hàng trăm, hoặc ngược lại.

Từ chỗ dừng lại cố định, ta thiết lập tốc độ quay nhanh hơn, có thể làm nhòa chữ, đồng thời thiết lập 1 kiểu Random khác bên trong theo số đầu vào
và loại trừ những số đã xuất hiện. Trong lúc nó tính số ngẫu nhiên (dĩ nhiên tốc độ này không cần Sleep hoặc KillTimer), khi hàng đơn vị dừng lại,
gán giá trị cho Labelđv dừng lại là Left(Format(RandomNbr,"000"),1), tương tự với các hàng khác.

Các giá trị theo L:
Ẩn Hàng theo L (L=2 ẩn hàng trăm (không chạy code hàng này), L=3 không ẩn, L=1 ẩn hàng trăm, hàng chục...)
Với kiểu Format(RandomNbr,"000") tùy theo L

Với File gửi lên chỉ ghi lại số lần trùng trong một thời gian ngắn, chưa có cải tiến gì cả!
 

File đính kèm

Một kiểu nữa, đang còn dạng fôi thai

--=0 --=0 --=0
@$@!^% @$@!^% @$@!^%
:=\+ :=\+ :=\+

/(/hờ các bạn cải tiến thêm
 

File đính kèm

Mình có thể chèn âm thanh cho vui tai được không vậy?
 
Web KT

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

Back
Top Bottom