using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Markup;
public class MainWindow : Window, INotifyPropertyChanged, IComponentConnector
private string _ChuPhongRoomNumber;
private int _CurrentBlock;
private bool _IsKieuBanDemLa;
private bool _IsMucCuoc50;
private List<string> _ListDevices;
private Bitmap button_Bat_Dau;
private Bitmap button_Dong_Y;
private bool isDoneNhapSoPhong1;
private bool isDoneNhapSoPhong2;
private string[] noxNameList = new string[9]
"NoxPlayer-Android4.4.2",
"NoxPlayer1-Android4.4.2",
"NoxPlayer2-Android4.4.2",
"NoxPlayer3-Android4.4.2",
"NoxPlayer4-Android4.4.2",
"NoxPlayer5-Android4.4.2",
"NoxPlayer6-Android4.4.2",
"NoxPlayer7-Android4.4.2",
"NoxPlayer8-Android4.4.2"
private DateTime createRoomTime;
private bool _contentLoaded;
public string ChuPhongRoomNumber
return _ChuPhongRoomNumber;
_ChuPhongRoomNumber = value;
OnPropertyChanged("ChuPhongRoomNumber");
OnPropertyChanged("CurrentBlock");
public bool IsKieuBanDemLa
OnPropertyChanged("IsKieuBanDemLa");
OnPropertyChanged("IsMucCuoc50");
public List<string> ListDevices
OnPropertyChanged("ListDevices");
public event PropertyChangedEventHandler PropertyChanged;
private void Window_Loaded(object sender, RoutedEventArgs e)
noxNameList = File.ReadAllLines("noxname.txt");
private void LoadDataImage()
phongcho = (Bitmap)System.Drawing.Image.FromFile("DataImages\\phongcho.png");
Check9h = (Bitmap)System.Drawing.Image.FromFile("DataImages\\9h.png");
Check12h = (Bitmap)System.Drawing.Image.FromFile("DataImages\\12h.png");
Check3h = (Bitmap)System.Drawing.Image.FromFile("DataImages\\3h.png");
button_Bat_Dau = (Bitmap)System.Drawing.Image.FromFile("DataImages\\button_bat_dau.png");
button_Dong_Y = (Bitmap)System.Drawing.Image.FromFile("DataImages\\button_dong_y.png");
private string GetSoPhongNox(int index)
string noxName = noxNameList[CurrentBlock + index - 1];
System.Drawing.Image img = CaptureScreen(noxName);
phong = CaptureHelper.ScaleImage(CaptureHelper.CropImage(img, new Rectangle(93, 60, 45, 20)), 3.5);
string soPhong = GetSoPhong(phong);
return soPhong.Replace(" ", "").Replace("\n", "");
private string GetSoPhong(Bitmap bmp)
TesseractEngine tesseractEngine = new TesseractEngine("tessdata", "eng", EngineMode.TesseractOnly);
string text = "0123456789";
tesseractEngine.SetVariable("tessedit_char_whitelist", text.ToLower());
Tesseract.Page page = tesseractEngine.Process(bmp);
private System.Drawing.Image CaptureScreen(string noxName)
IntPtr zero = IntPtr.Zero;
zero = AutoControl.FindWindowHandle("Qt5QWindowIcon", noxName);
return CaptureHelper.CaptureWindow(zero);
private void Button_Click(object sender, RoutedEventArgs e)
Task task = new Task(delegate
MainWindow mainWindow = default(MainWindow);
int countVaoPhong = default(int);
DateTime now = DateTime.Now;
if ((now - createRoomTime).TotalSeconds >= 180.0)
for (int i = 1; i < 3; i++)
Task task2 = new Task(delegate(object ii)
mainWindow.ClickKetQuaPhongDauTien((int)ii);
while (countVaoPhong < 2)
Task task3 = new Task(delegate
Task task4 = new Task(delegate
Task task5 = new Task(delegate
Task task6 = new Task(delegate
Task task7 = new Task(delegate
Task task8 = new Task(delegate
isDoneNhapSoPhong1 = false;
isDoneNhapSoPhong2 = false;
for (int i = 1; i < 3; i++)
Task task = new Task(delegate(object ii)
ChuPhongRoomNumber = GetSoPhongNox(0);
createRoomTime = DateTime.Now;
Task task2 = new Task(delegate
isDoneNhapSoPhong1 = true;
Task task3 = new Task(delegate
isDoneNhapSoPhong2 = true;
while (!isDoneNhapSoPhong2 || !isDoneNhapSoPhong1)
private bool IsNutBatDau(int noxIndex)
string noxName = noxNameList[CurrentBlock + noxIndex - 1];
System.Drawing.Image img = CaptureScreen(noxName);
Bitmap mainBitmap = CaptureHelper.CropImage(img, new Rectangle(255, 215, 160, 70));
if (ImageScanOpenCV.FindOutPoint(mainBitmap, button_Bat_Dau, 0.78).HasValue)
private bool IsPhongCho(int noxIndex)
string noxName = noxNameList[CurrentBlock + noxIndex - 1];
System.Drawing.Image img = CaptureScreen(noxName);
Bitmap mainBitmap = CaptureHelper.CropImage(img, new Rectangle(380, 30, 500, 70));
if (ImageScanOpenCV.FindOutPoint(mainBitmap, phongcho).HasValue)
private bool IsNutDongY(int noxIndex)
string noxName = noxNameList[CurrentBlock + noxIndex - 1];
System.Drawing.Image img = CaptureScreen(noxName);
Bitmap mainBitmap = CaptureHelper.CropImage(img, new Rectangle(255, 235, 160, 70));
if (ImageScanOpenCV.FindOutPoint(mainBitmap, button_Dong_Y, 0.78).HasValue)
private bool IsCatchupChicken()
if (Is3InOne() && Check9hPlayer() && Check3hPlayer())
string soPhongNox = GetSoPhongNox(1);
string soPhongNox2 = GetSoPhongNox(2);
if (soPhongNox == soPhongNox2 && soPhongNox == ChuPhongRoomNumber)
private void NhapSoPhong(int noxIndex)
string chuPhongRoomNumber = ChuPhongRoomNumber;
for (int i = 0; i < chuPhongRoomNumber.Length; i++)
switch (chuPhongRoomNumber[i])
SendKeyNox(noxIndex, VKeys.VK_1);
SendKeyNox(noxIndex, VKeys.VK_0);
SendKeyNox(noxIndex, VKeys.VK_2);
SendKeyNox(noxIndex, VKeys.VK_3);
SendKeyNox(noxIndex, VKeys.VK_4);
SendKeyNox(noxIndex, VKeys.VK_5);
SendKeyNox(noxIndex, VKeys.VK_6);
SendKeyNox(noxIndex, VKeys.VK_7);
SendKeyNox(noxIndex, VKeys.VK_8);
SendKeyNox(noxIndex, VKeys.VK_9);
ClickSearchRoom(noxIndex);
private void ClickLoaiBanGiam(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 255, 125);
private void ClickLoaiBanTang(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 460, 125);
private void TruotTang(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
DragAndDropNox(nameNox, 245, 200, 375, 200);
DragAndDropNox(nameNox, 375, 200, 425, 200);
private void ClickKetQuaPhongDauTien(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 160, 125);
private void ClickBatDau(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 320, 245);
private void ClickDongY(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 325, 274);
private void ClickSearchRoom(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 215, 53);
private void ClickX(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 194, 53);
private void ClickSoPhong(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 150, 50);
private void EscapNoxToMain(int noxIndex)
TrongPhongRaPhongCho(noxIndex);
PhongChoRaNgoai(noxIndex);
private void TrongPhongRaPhongCho(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
while (!IsPhongCho(noxIndex))
ClickNox(nameNox, 27, 60);
ClickNox(nameNox, 30, 110);
private void PhongChoRaNgoai(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 25, 50);
private bool Check9hPlayer(int noxIndex = 0)
string noxName = noxNameList[CurrentBlock + noxIndex - 1];
System.Drawing.Image img = CaptureScreen(noxName);
Bitmap mainBitmap = CaptureHelper.CropImage(img, new Rectangle(0, 120, 153, 175));
if (!ImageScanOpenCV.FindOutPoint(mainBitmap, Check9h, 0.87).HasValue)
private bool Check12hPlayer(int noxIndex = 0)
string noxName = noxNameList[CurrentBlock + noxIndex - 1];
System.Drawing.Image img = CaptureScreen(noxName);
Bitmap mainBitmap = CaptureHelper.CropImage(img, new Rectangle(240, 30, 180, 100));
if (!ImageScanOpenCV.FindOutPoint(mainBitmap, Check12h, 0.87).HasValue)
private bool Check3hPlayer(int noxIndex = 0)
string noxName = noxNameList[CurrentBlock + noxIndex - 1];
System.Drawing.Image img = CaptureScreen(noxName);
Bitmap mainBitmap = CaptureHelper.CropImage(img, new Rectangle(500, 130, 140, 140));
if (!ImageScanOpenCV.FindOutPoint(mainBitmap, Check3h, 0.87).HasValue)
private void TaoRoomNox(int noxIndex = 0)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 444, 50);
ClickLoaiBanGiam(noxIndex);
ClickLoaiBanTang(noxIndex);
ClickNox(nameNox, 315, 322);
private void ClickChonBan(int noxIndex)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
ClickNox(nameNox, 528, 180);
private void Delay(double delay)
Thread.Sleep(TimeSpan.FromSeconds(delay));
private void SendKeyNox(int noxIndex, VKeys key)
string nameNox = noxNameList[CurrentBlock + noxIndex - 1];
private void SendKey(string nameNox, VKeys key)
IntPtr zero = IntPtr.Zero;
zero = AutoControl.FindWindowHandle("Qt5QWindowIcon", nameNox);
AutoControl.SendKeyBoardUp(zero, key);
private void ClickNox(string nameNox, int x, int y)
IntPtr zero = IntPtr.Zero;
zero = AutoControl.FindWindowHandle("Qt5QWindowIcon", nameNox);
AutoControl.SendClickOnPosition(zero, x, y);
private void DragAndDropNox(string nameNox, int x, int y, int x2, int y2, double delay = 1.0)
IntPtr zero = IntPtr.Zero;
zero = AutoControl.FindWindowHandle("Qt5QWindowIcon", nameNox);
AutoControl.SendDragAndDropOnPosition(zero, x, y, x2, y2, delay);
public virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
[GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent()
Uri resourceLocator = new Uri("/Tool_Chup_Ga;component/mainwindow.xaml", UriKind.Relative);
Application.LoadComponent(this, resourceLocator);
[GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
[EditorBrowsable(EditorBrowsableState.Never)]
void IComponentConnector.Connect(int connectionId, object target)
((MainWindow)target).Loaded += Window_Loaded;
((Button)target).Click += Button_Click;