flappy init

This commit is contained in:
2023-07-27 17:58:57 +02:00
parent 8ded30d75a
commit 862fbf8bc6
11 changed files with 145 additions and 3 deletions

View File

@@ -12,6 +12,7 @@ from fruit import Fruit
from pickaxe import Pickaxe_Field from pickaxe import Pickaxe_Field
from litris import Litris from litris import Litris
from menti_words import MentiWords from menti_words import MentiWords
from flappy import Flappy
def run(): def run():
@@ -73,6 +74,10 @@ def run():
elif overlay.rb_int.get() == 11: elif overlay.rb_int.get() == 11:
menti = MentiWords(overlay) menti = MentiWords(overlay)
menti.execute_main_loop() menti.execute_main_loop()
elif overlay.rb_int.get() == 12:
flappy = Flappy(overlay)
flappy.execute_main_loop()
flappy.flappy_pos_disc.run_mode = 'stop'
if __name__ == "__main__": if __name__ == "__main__":
run() run()

View File

@@ -33,7 +33,7 @@ class PrimaryOverlay(threading.Thread):
self.Emitter_Box = ttk.Combobox self.Emitter_Box = ttk.Combobox
self.RadioButtons = dict self.RadioButtons = dict
self.RadioButtonNames = ["Equip", "Crops", "Farm", "Magic", "Craft", "Mine", "Fruit", "Sodo", "PAxe", "Ltris", "Menti"] self.RadioButtonNames = ["Equip", "Crops", "Farm", "Magic", "Craft", "Mine", "Fruit", "Sodo", "PAxe", "Ltris", "Menti", "Flapp"]
self.RadioButton1 = tk.Radiobutton self.RadioButton1 = tk.Radiobutton
self.RadioButton2 = tk.Radiobutton self.RadioButton2 = tk.Radiobutton
self.RadioButton3 = tk.Radiobutton self.RadioButton3 = tk.Radiobutton
@@ -45,12 +45,13 @@ class PrimaryOverlay(threading.Thread):
self.RadioButton9 = tk.Radiobutton self.RadioButton9 = tk.Radiobutton
self.RadioButton10 = tk.Radiobutton self.RadioButton10 = tk.Radiobutton
self.RadioButton11 = tk.Radiobutton self.RadioButton11 = tk.Radiobutton
self.RadioButton12 = tk.Radiobutton
self.StartButton = tk.Button self.StartButton = tk.Button
self.StopButton = tk.Button self.StopButton = tk.Button
self.PauseButton = tk.Button self.PauseButton = tk.Button
self.QuitButton = tk.Button self.QuitButton = tk.Button
self.TkPosition = '133x429+60+600' self.TkPosition = '133x454+60+600'
self.setDaemon(True) self.setDaemon(True)
self.StatusLabel = tk.Label self.StatusLabel = tk.Label
@@ -78,7 +79,7 @@ class PrimaryOverlay(threading.Thread):
self.rb_int = tk.IntVar(self.root, value=1) self.rb_int = tk.IntVar(self.root, value=1)
self.RadioButtons = dict() self.RadioButtons = dict()
# var = tk.IntVar(value=1) # var = tk.IntVar(value=1)
for i in range(1, 12): for i in range(1, 13):
self.RadioButtons[i] = tk.Radiobutton(self.rb_frame, text=self.RadioButtonNames[i - 1], self.RadioButtons[i] = tk.Radiobutton(self.rb_frame, text=self.RadioButtonNames[i - 1],
variable=self.rb_int, variable=self.rb_int,
value=i, command=self.radio_button_callback) value=i, command=self.radio_button_callback)
@@ -338,6 +339,17 @@ class PrimaryOverlay(threading.Thread):
self.SpawnLabel.configure(text="") self.SpawnLabel.configure(text="")
self.EnergyLabel.configure(text="") self.EnergyLabel.configure(text="")
self.hide_mining_overlay() self.hide_mining_overlay()
elif self.rb_int.get() == 12:
self.EnergyEntry.configure(state=tk.DISABLED)
self.energy_use.set('')
self.SpawnEntry.configure(state=tk.DISABLED)
self.spawn_use.set('')
self.Emitter_Box.configure(state=tk.DISABLED)
self.emitter_use.set('')
self.EmitterLabel.configure(text="")
self.SpawnLabel.configure(text="")
self.EnergyLabel.configure(text="")
self.hide_mining_overlay()
def get_run_mode(self): def get_run_mode(self):
return self.run_mode return self.run_mode

63
flappy.py Normal file
View File

@@ -0,0 +1,63 @@
import cv2 as cv
import numpy as np
from time import time
import pydirectinput
from game_base_class import GameBase
from pynput.keyboard import Key, Controller
from flappy_pos_discovery_thread import FlappyPosDiscovery
class Flappy(GameBase):
def __init__(self, overlay):
super().__init__(overlay)
self.keyboard = Controller()
self.data_coordinates = np.zeros((20, 20), dtype=object)
self.observation = np.zeros((20, 20), dtype=int)
self.colors = [1, 2, 3, 4, 5, 6, 7, 8, 9]
self.offset_left = 610
self.offset_down = 40
self.fill_data_coordinates()
self.litris_reset_board = cv.imread("control_elements/sodoku_reset_button.jpg", cv.IMREAD_COLOR)
self.flappy_pos_disc = FlappyPosDiscovery()
self.move_mode = 1
def assess_playfield_and_make_move(self):
#last_letter_received = time()
while True:
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
return
#pydirectinput.mouseDown()
#cv.waitKey(50)
#pydirectinput.mouseUp()
#cv.waitKey(250)
'''
if self.stone_id_thread.get_pick_up_status() == False:
if (time() - last_letter_received) >= 5:
self.field.reset_field()
self.field.cleared_rows = 1
last_letter_received = time()
self.dig_point(1500, 980, 100)
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
return
continue
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
return
cv.waitKey(50)
continue
self.stone_id_thread.set_pick_up_status(False)
'''

BIN
flappy/flappy-mask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

BIN
flappy/flappy.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
flappy/flappy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
flappy/gate-mask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
flappy/gate.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
flappy/gate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

BIN
flappy/screen.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

View File

@@ -0,0 +1,62 @@
import threading
import cv2 as cv
import numpy as np
from window_capture import WindowCapture
from vision import Vision
from config_file import UserConfigs
class FlappyPosDiscovery(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.config = UserConfigs()
self.capture_window = WindowCapture(None, None, self.config)
self.vision_stun = Vision()
self.needle_f = cv.imread("flappy/flappy.jpg")
self.mask_f = cv.imread("flappy/flappy-mask.png")
self.needle_g = cv.imread("flappy/gate.png")
self.mask_g = cv.imread("flappy/gate-mask.png")
self.run_mode = 'run'
self.current_pet_height = 0
self.next_gate_height = 0
self.start()
def run(self):
while self.run_mode == 'run':
self.position_detection()
print("pet_pos: ", self.current_pet_height)
print("next gate: ", self.next_gate_height)
def get_actual_pet_height(self):
return self.current_pet_height
def get_next_gate_height(self):
return self.next_gate_height
def callback(self):
pass
def destroy(self):
self.destroy()
def get_run_mode(self):
return self.run_mode
def position_detection(self):
screenshot = self.capture_window.get_screenshot()
#screenshot = screenshot[580:845, 1148:1412]
rectangles_g = self.vision_stun.find(screenshot, self.needle_g, 0.9, 5, True, self.mask_g)
rectangles_f = self.vision_stun.find(screenshot, self.needle_f, 0.9, 1, True, self.mask_f)
if len(rectangles_g) == 0 or len(rectangles_f) == 0:
return None
self.current_pet_height = rectangles_f[1] + rectangles_f[3]
self.next_gate_height = rectangles_g[1] + rectangles_g[3]
# return pet height and next gate height