Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows environment fixes #2

Open
wants to merge 3 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ def run():
max_val = 0
max_image_file = None
max_coords = None
max_games_flag = False
for image_file, img_template in template_images.items():
result = image_service.find_image(img_screenshot, img_template)
if result:
Expand All @@ -102,13 +103,19 @@ def run():
val, coords = 0, None

# Update the maximum value and corresponding image file and coordinates if necessary
if val > max_val:
# if val > max_val:
if ('max_number_of_games_played_text.en.png' == image_file and val > 0.42):
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain why you use val > 0.42? I tested the changes from your PR and I had to change this to 0.43. With 0.42 it detected every screen as max number of games played and just stopped.

Copy link
Contributor Author

@EswarBalasubramanian EswarBalasubramanian Feb 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when I used it in my small android device, even after capturing the text in the screenshot, the bot unable to detect it and loops clicking the battle button. The 0.42 is the value where max games played screenshot score exceeds, battle button screenshot score

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK. I have refactored quite a bit in the meantime. I had the same problem and added a priority list if multiple images match. See #4 and

priority_list = [
.

I have cherry picked your other changes for windows support in #3 and merged them.

max_val = val
max_image_file = image_file
max_coords = coords
max_games_flag = True
elif (val > max_val and not max_games_flag):
max_val = val
max_image_file = image_file
max_coords = coords

# Check if the maximum value is above a certain threshold
if max_val > 0.95:
if max_val > 0.90 or max_games_flag:
logging.info(f"Image {max_image_file} matches with {max_val * 100}%")

# If not ingame reset timer
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
numpy==1.24.1
numpy==1.26.0
opencv-python==4.7.0.68
6 changes: 5 additions & 1 deletion screenshot.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import os
import platform


def capture_screenshot(filename):
"""
Captures a screenshot of the Android screen using adb and saves it to a file.
Returns True if the adb command was successful, False otherwise.
"""
adb_command = "adb exec-out screencap -p > {} 2> /dev/null".format(filename)
if platform.system() == "Windows":
adb_command = "adb exec-out screencap -p > {}".format(filename)
else:
adb_command = "adb exec-out screencap -p > {} 2> /dev/null".format(filename)
error_code = os.system(adb_command)
return error_code == 0