Ứng dụng Save Money giúp chúng ta tính toán được tiến độ tiết kiệm tiền cho một mục đích ở tương lai. Sau đây là video hướng dẫn lập trình ứng dụng Save Money cơ bản dành cho các bạn newbie
Để hiểu được kiến thức trong video, bạn cần có nền tảng cơ bản về AutoIT. Bạn có thể học AutoIT tại đây hoặc qua video của tác giả tại đây
Việc kết hợp AutoIT với PHP và mySQL đến nay đã không còn xa lạ, nhưng đối với những bạn chưa có kiến thức về PHP lẫn mySQL sẽ gặp khó khăn khi tiếp cận thủ thuật này.
Video này sẽ hướng dẫn chi tiết cho bạn về cách ứng dụng AutoIT với PHP và mySQL để tạo một ứng dụng online, có thể là đăng nhập, đăng ký online hoặc check key bản quyền cho phần mềm của bạn,...
Bằng AutoIT và những kiến thức cơ bản, chúng ta có thể tạo 1 trò chơi luyện gõ phím thường thấy trên mạng một cách nhanh chóng. Bài viết này sẽ tập trung giới thiệu và hướng dẫn cho bạn tạo 1 trò chơi đơn giản.
Bước 1: tạo 1 SplashTextOn trên màn hình bằng hàm SplashTextOn
SplashTextOn("Typing Test","Xin chào, bấm khoảng cách để bắt đầu trò chơi",200,100)
; tạo splashText với size GUI là 200 x 100
Ta được:
GUI Đơn giản khi dùng SplashTextOn
Bước 2: chúng ta sẽ bắt sự kiện khi người dùng ấn khoảng cách. Để biết được khi nào người dùng ấn khoảng cách, ta dùng _IsPressed
Do
Sleep(1)
Until _IsPressed('20')
Các dòng code trên sẽ giúp thực hiện 1 vòng lặp mà chỉ thoát vòng lặp đó khi nào khoảng cách được bấm. Tham số '20' trong _IsPressed chính là hex của khoảng cách. Khi nào người dùng nhấn khoảng cách thì _IsPressed('20') trả về giá trị là True và khi đó vòng lặp sẽ thoát. Bước 3: Bắt đầu chơi. Trò chơi sẽ lặp đi lặp lại vô hạn số từ phải gõ, chỉ thoát khi nào chúng ta ấn Esc. Vì vậy ta sử dụng While 1 cho vòng lặp vô hạn, và bắt sự kiện người dùng bấm Esc thoát bằng _IsPressed.
$user_point = 0 ; khai báo trước biến user_point là điểm khi chơi, giá trị mặc định là 0
While 1
If _IsPressed('1B') Then ExitLoop ; chỉ thoát vòng lặp khi ấn phím esc có hex là 1B
WEnd
MsgBox(64,'Thông báo','Điểm của bạn là '&$user_point) ; sau khi thoát vòng lặp, hiển thị điểm
Bước 4: Tạo các chữ cái ngẫu nhiên từ A tới Z bằng cách sử dụng hàm Chr. Hàm Chr sẽ chuyển mã ASCII về dạng ký tự. Từ A tới Z có số thứ tự lần lượt là từ 65 tới 90. Vì vậy trước tiên ta Random một số nguyên trong khoảng [65,90], sau đó dùng Chr để chuyển về dạng ký tự.
$ascii = Random(65,90,1)
$chu = Chr($ascii)
Tiếp theo ta in ký tự này lên SplashText lúc nãy bằng cách đổi text trong đó bằng ControlSetText
Bước 5: Tính thời gian, nếu thời gian mà vượt quá thời gian cho phép (1s) thì không tính điểm, chuyển sang câu hỏi mới. Ta dùng hai hàm TimerInit và TimerDiff. Hai hàm này cho phép chúng ta tính khoảng delta time, hai hiểu nôm na chúng ta sẽ lấy được thời gian trôi qua từ lúc gọi TimerInit đến lúc dùng TimerDiff. Vì vậy đầu tiên ta đặt TimerInit lúc bắt đầu hiện câu hỏi để tính thời gian.
$time = TimerInit()
Bước 6: Bắt sự kiện ấn phím đúng. Tương tự, ta dùng hàm _IsPressed, vấn đề là hex của các phím, ta dùng hàm Hex để chuyển số thứ tự Ascii của ký tự về dạng Hex rồi đưa vào _IsPressed. Ta tạo thêm 1 vòng lặp nữa để kiểm tra và chỉ exitloop khi bấm đúng phím.
While 1
if _IsPressed(Hex($ascii,2)) Then ; nếu bấm đúng phím thì
$user_point += 1 ; cộng điểm
ExitLoop ; thoát vòng lặp
EndIf
WEnd
Tiếp theo, cũng trong vòng lặp đó, ta kiểm tra thời gian trôi qua mà > 1s thì thoát vòng lặp, không cộng điểm.
While 1
if _IsPressed(Hex($ascii,2)) Then
$user_point += 1
ExitLoop
EndIf
If TimerDiff($time) > 1000 Then ExitLoop ; nếu thời gian trôi qua từ khi gọi TimerInit > 1000ms (=1s) thì thoát vòng lặp
WEnd
Như vậy chúng ta đã hoàn tất 1 game typing test nho nhỏ ^^ F5 và chơi thử xem nào ^^.
Code mẫu đầy đủ:
#include <Misc.au3>
SplashTextOn("Typing Test","Xin chào, bấm khoảng cách để bắt đầu trò chơi",200,100)
Do
Sleep(1)
Until _IsPressed('20')
$user_point = 0 ; khai báo trước biến user_point là điểm khi chơi, giá trị mặc định là 0
While 1
$ascii = Random(65,90,1)
$chu = Chr($ascii)
ControlSetText("Typing Test", "", "Static1", $chu)
$time = TimerInit()
While 1
if _IsPressed(Hex($ascii,2)) Then
$user_point += 1
ExitLoop
EndIf
If TimerDiff($time) > 1000 Then ExitLoop
If _IsPressed('1B') Then ; chỉ thoát trò chơi khi ấn phím esc có hex là 1B
MsgBox(64,'Thông báo','Điểm của bạn là '&$user_point) ; sau khi thoát vòng lặp, hiển thị điểm
Exit
EndIf
WEnd
WEnd
Ngoài ra, bạn có thể dùng ý tưởng này, phát triển trò chơi thêm ^^
Đây là một ví dụ về Typing Test kết hợp với âm nhạc Piano.
Một chương trình thường không thể thiếu tính năng kiểm tra và cập nhật phiên bản mới. Bài viết này sẽ hướng dẫn các bạn viết một auto check update đơn giản cho chương trình. Auto Check Update sẽ có nhiệm vụ check phiên bản mới, nếu phiên bản hiện tại của chương trình cũ hơn thì thông báo người dùng.
📕 KIẾN THỨC CẦN NẮM
Các kiến thức cơ bản về AutoIT cùng kiến thức Internet. Ở tutorial này chúng ta sẽ sử dụng các kiến thức có liên quan đến: - INI File, InetGet, cơ bản về biến, hàm trong AutoIT - Cách upload 1 file lên Google Drive dưới dạng public (hoặc có thể sử dụng host khác)
💡 CƠ CHẾ AUTO CHECK UPDATE
Hầu hết các tính năng Auto Check Update đều có chung 1 cơ chế, đó là nhận dữ liệu từ máy chủ (dữ liệu có thể bao gồm phiên bản mới nhất cùng các thông tin khác về nó) và tiến hành so sánh với phiên bản hiện tại của chương trình rồi đưa ra thông báo xin ý kiến người dùng có hay không update. Các bạn có thể hình dung 1 Auto Check Update đơn giản qua cơ chế sau:
Cơ chế Auto Check Update đơn giản
🚀 LET'S DO IT
Trước tiên, chúng ta cần xác định 2 đối tượng cần xử lý.
Thứ nhất là máy chủ để chương trình tải thông tin về, ở đây tôi sẽ ví dụ sử dụng Google Drive làm host.
Thứ hai là chương trình auto check update từ thông tin máy chủ đó.
Bước 1: Máy chủ. Đầu tiên, tôi sẽ tạo 1 file INI tên Setting.ini có dạng như sau:
Trong đó là những thông tin mới nhất về chương trình như key Version là phiên bản mới nhất, cùng ngày cập nhật và link tải. Tiếp theo, nhiệm vụ của chúng là đưa nó lên một host cố định để chương trình có thể tải về lấy thông tin. Tại sao lại phải cố định host? Vì chương trình của bạn sẽ không thể nào tự hiểu bạn đã đổi 1 host mới, vì vậy hãy cân nhắc chọn 1 host cố định cho chương trình. Chúng ta chọn Google Drive và vì vậy tôi Upload file INI này vào một foder Drive của tôi (ở đây ví dụ file Setting.ini của tôi nằm ở MySoft/Setting.ini). Chọn chế độ Share Publiccho folder đó.
Chuyển file về chế độ public để chương trình có thể truy cập
Kế tiếp, chúng ta phải lấy direct link cho file INI trong thư mục đó. Tại sao lại phải lấy Direct Link? Vì chương trình của bạn sẽ không tải được file bằng link public mà Google Drive cung cấp. Cách lấy Direct Link. Đầu tiên ở Liên kết chia sẻ, bạn lấy phần ID của folder.
Lấy phần ID của Folder mà bạn set public
Vậy thì đường dẫn Direct Link của bạn sẽ là:
https://googledrive.com/host/<ID>/<Tên file>
Ví dụ, folder MySoft (folder chứa file Setting.ini) của tôi có ID là: 0B7ji-w0T3os-OE1XX2VCTl9uUkU Thì link tải Setting.ini sẽ là:
Vậy là chúng ta đã hoàn tất xong phần host. Chúng ta chỉ cần cho chương trình tải file INI này về và so sánh mà thôi. Bước 2: Tải thông tin. Chúng ta dùng InetGet để tải file về và lưu tại thư mục chứa mã nguồn với tên Update.ini
Bước 3: So sánh phiên bản. Sau khi đã có file INI rồi, ta chỉ việc lấy thông tin phiên bản mới nhất của nó ra để so sánh với phiên bản hiện tại của chương trình. Ta dùng IniRead và _VersionCompaređể so sánh hai phiên bản.
#include <Misc.au3>
$Version = '1.0'
$new_Version = IniRead(@ScriptDir&"\Update.ini","MyProgram","Version",-1) ; trả về giá trị -1 nếu không tìm thấy key Version
if _VersionCompare ( $new_Version, $Version ) = 1 Then
; code khi có phiên bản mới
EndIf
Trong đó, $Version = '1.0' chính là phiên bản của chương trình đang check update, $new_Version là biến mà Iniread trả về dữ liệu phiên bản mới nhất đọc được từ file INI lấy từ host. Bước 4: Thông báo cập nhật. Chúng ta sẽ thông báo hỏi người dùng bằng Msgbox có cập nhật hay không (hoặc không có cập nhật mới). Nếu người dùng đồng ý cập nhật, ta sẽ chuyển người dùng đến trang tải.
if _VersionCompare ( $new_Version, $Version ) = 1 Then
; code khi có phiên bản mới
Local $link_update = IniRead(@ScriptDir&"\Update.ini","MyProgram","LinkUpdate",'www.opdo.top') ; trả về giá trị www.opdo.top nếu không tìm thấy
Local $date_update = IniRead(@ScriptDir&"\Update.ini","MyProgram","Date",'')
If MsgBox(4+64,"Thông báo","Có phiên bản mới "&$new_Version&' cập nhật ngày '&$date_update&'. Bạn có muốn cập nhật?') = 6 Then ShellExecute($link_update) ; mở link update nếu người dùng chọn Yes
Else
MsgBox(64,'Thông báo','Không có phiên bản mới')
EndIf
Vậy chúng ta cơ bản đã hoàn tất một Auto Check Update cho chương trình. Bạn có thể tham khảo code mẫu tại đây.
Luật của game Crazy Math là bạn phải trả lời thật nhanh 10 câu hỏi ngẫu nhiên về các phép toán cộng, trừ, nhân, chia giữa hai số hạng (thời gian tối đa cho mỗi câu là 3 giây), cứ mỗi câu đúng sẽ nhận được 1 điểm.
Bài viết này nhằm để tạo điều kiện cho các bạn không kịp tham gia khóa học vỡ lòng AutoIT có cơ hội làm bài tập để rèn luyện kỹ năng và tư duy. Có ba phần: bài tập, hướng dẫn giải và code mẫu.
Bài học này sẽ giới thiệu một số cấu trúc điều kiện và các vòng lặp cơ bản trong AutoIT. Về cơ bản, bài học này sẽ hướng các bạn theo hướng tự tìm hiểu, tự học là chính, mình sẽ giới thiệu và đưa ra code mẫu để các bạn hiểu hơn về các sử dụng cũng như các hoạt động của các cấu trúc này.
Bài học này sẽ giới thiệu đến các bạn các hàm tương tác với hệ điều hành Windows như tương tác với thư mục, với file, với process, với cửa sổ window,...