Final test

main
Сергей Ванюшкин 2023-10-31 11:53:13 +03:00
parent 0bc1aa0b61
commit 305814989a
4 changed files with 124 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
config.ini
data/
.idea/
### Python template
# Byte-compiled / optimized / DLL files

View File

@ -0,0 +1,113 @@
import os
import subprocess
import time
from tkinter import *
class ClickerGame:
""" Перед запуском проверьте и исправьте место установки AHK
Св-во класса AHK_PATH должно содержать полный путь до запускаемого файла
"""
AHK_PATH = r"C:\Users\pi3c\AppData\Local\Programs\AutoHotkey\UX\AutoHotkeyUX.exe"
def __init__(self):
self.__root = Tk()
self.__root.geometry("500x400")
self.__root.minsize(500, 400)
self.__root.title("Clicker Game")
self.__root.bind("<Key>", self.key)
self.process = None
self.ahk_flag = False
self.frame = Frame(self.__root, relief=RAISED, borderwidth=5, bg='green')
self.frame.pack(fill=BOTH, expand=True, padx=5, pady=5)
self.label = Label(self.frame, text="Clicker Game", font=("Arial", 25), bg='green')
self.label.pack(side=TOP)
self.score = 0
self.message = StringVar()
self.message.set(f"Your score is: {self.score}")
self.label2 = Label(self.frame, textvariable=self.message, font=("Arial", 15), bg='green')
self.label2.pack(side=TOP)
self.timer = 0
self.start_time = time.time()
self.timer_message = StringVar()
self.timer_update()
self.label3 = Label(self.frame, textvariable=self.timer_message, font=("Arial", 12), bg='green')
self.label3.pack(side=LEFT)
self.img = PhotoImage(file=os.path.join(os.curdir, 'img.png'))
self.clicker = Button(self.frame, text="clickme", image=self.img, command=self.increment)
self.clicker.place(relx=0.5, rely=0.5, anchor='center')
self.ahk_button = Button(self.__root, text="Manual run AHK", command=self.switcher_ahk)
self.ahk_button.pack(side=LEFT, padx=10, pady=10)
self.close_button = Button(self.__root, text="EXIT", command=self.quit)
self.close_button.pack(side=RIGHT, padx=10, pady=10)
self.ahk_button = Button(self.__root, text="Clicker RESET", command=self.clicker_reset)
self.ahk_button.pack(side=RIGHT, padx=10, pady=10)
mainloop()
def __del__(self):
"""Завершаем поток АНК ели он запущен при выходе"""
if self.ahk_flag:
self.switcher_ahk()
def key(self, event):
if event.keycode == 97:
# Переключаем статус АНК по numpad1
self.switcher_ahk()
if event.keycode == 73 or event.keycode == 17:
# Инкремент счетчика по хот кею Ctrl-i или Ctrl-ш в RU раскладке
self.increment()
def increment(self, keys=None):
if keys is not None:
"""Данный блок необходим, чтоб среда не ругалась на неиспользуемый
аргумент keys. При связывании горячей клавиши методом bind, сюда
передается инфо о нажатой комбинации. Тут она мне не нужна, поэтому ставим тупо
заглушку"""
pass
self.score += 1
self.message.set(f"Your score is: {self.score}")
def switcher_ahk(self):
if self.ahk_flag:
print("Stop clicker")
self.ahk_flag = False
self.process.kill()
else:
print("run clicker")
self.ahk_flag = True
self.process = subprocess.Popen(
[self.AHK_PATH, "clicker.ahk"]
)
def timer_update(self):
self.timer = int(time.time() - self.start_time)
self.timer_message.set(f"Elapsed time:\n{self.timer // 60}min. {self.timer % 60} sec.")
self.__root.after(1000, self.timer_update)
def clicker_reset(self):
if self.ahk_flag:
self.switcher_ahk()
self.score = 0
self.message.set(f"Your score is: {self.score}")
self.timer = 0
self.start_time = time.time()
self.timer_update()
def quit(self):
self.__root.destroy()
game = ClickerGame()

View File

@ -0,0 +1,10 @@
#Requires AutoHotkey v2.0
SetTimer Click, 200
Click()
{
if WinExist("Clicker Game")
WinActivate ;
Send "^i"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB