import time
import random
import sys
import os
import datetime
# mapping from ensei id to suitable fleet id for the ensei.
ensei_id_fleet_map = {3: [2],
5: [3],
6: [4]}
class Ensei:
def __init__(self, ensei_id, name_pict, area_pict, duration):
self.id = ensei_id
self.name_pict = name_pict
self.area_pict = area_pict
self.durati>
def start(self):
self.begin_time = datetime.datetime.now()
def end_time(self):
if hasattr(self, "begin_time"):
return self.begin_time + self.duration
return datetime.datetime.max
def is_end(self):
if hasattr(self, "begin_time"):
return self.end_time() < datetime.datetime.now()
return False
def __str__(self):
return 'ensei id = ' + str(self.id) + ', end time = ' + str(self.end_time())
def __nonzero__(self):
return self.is_end()
def ensei_factory(ensei_id):
if ensei_id == 1: return Ensei(1, 'ensei_name_01.png', 'ensei_area_01.png', datetime.timedelta(minutes = 15))
if ensei_id == 2: return Ensei(2, 'ensei_name_02.png', 'ensei_area_01.png', datetime.timedelta(minutes = 30))
if ensei_id == 3: return Ensei(3, 'ensei_name_03.png', 'ensei_area_01.png', datetime.timedelta(minutes = 20))
if ensei_id == 4: return Ensei(4, 'ensei_name_04.png', 'ensei_area_01.png', datetime.timedelta(minutes = 50))
if ensei_id == 5: return Ensei(5, 'ensei_name_05.png', 'ensei_area_01.png', datetime.timedelta(minutes = 90))
if ensei_id == 6: return Ensei(6, 'ensei_name_06.png', 'ensei_area_01.png', datetime.timedelta(minutes = 40))
if ensei_id == 7: return Ensei(7, 'ensei_name_07.png', 'ensei_area_01.png', datetime.timedelta(housr = 1))
if ensei_id == 8: return Ensei(8, 'ensei_name_08.png', 'ensei_area_01.png', datetime.timedelta(hours = 3))
if ensei_id == 9: return Ensei(9, 'ensei_name_09.png', 'ensei_area_02.png', datetime.timedelta(hours = 4))
if ensei_id == 10: return Ensei(10, 'ensei_name_10.png', 'ensei_area_02.png', datetime.timedelta(hours = 1, minutes = 30))
if ensei_id == 11: return Ensei(11, 'ensei_name_11.png', 'ensei_area_02.png', datetime.timedelta(hours = 5))
if ensei_id == 12: return Ensei(12, 'ensei_name_12.png', 'ensei_area_02.png', datetime.timedelta(hours = 8))
if ensei_id == 13: return Ensei(13, 'ensei_name_13.png', 'ensei_area_02.png', datetime.timedelta(hours = 4))
if ensei_id == 14: return Ensei(14, 'ensei_name_14.png', 'ensei_area_02.png', datetime.timedelta(hours = 6))
if ensei_id == 15: return Ensei(15, 'ensei_name_15.png', 'ensei_area_02.png', datetime.timedelta(hours = 12))
if ensei_id == 16: return Ensei(16, 'ensei_name_16.png', 'ensei_area_02.png', datetime.timedelta(hours = 15))
if ensei_id == 17: return Ensei(17, 'ensei_name_17.png', 'ensei_area_03.png', datetime.timedelta(minutes = 45))
if ensei_id == 18: return Ensei(18, 'ensei_name_18.png', 'ensei_area_03.png', datetime.timedelta(hours = 5))
if ensei_id == 19: return Ensei(19, 'ensei_name_19.png', 'ensei_area_03.png', datetime.timedelta(hours = 6))
if ensei_id == 20: return Ensei(20, 'ensei_name_20.png', 'ensei_area_03.png', datetime.timedelta(hours = 2))
if ensei_id == 21: return Ensei(21, 'ensei_name_21.png', 'ensei_area_03.png', datetime.timedelta(hours = 2, minutes = 20))
if ensei_id == 22: return Ensei(22, 'ensei_name_22.png', 'ensei_area_03.png', datetime.timedelta(hours = 3))
if ensei_id == 25: return Ensei(25, 'ensei_name_25.png', 'ensei_area_04.png', datetime.timedelta(hours = 40))
if ensei_id == 26: return Ensei(26, 'ensei_name_26.png', 'ensei_area_04.png', datetime.timedelta(hours = 80))
if ensei_id == 27: return Ensei(27, 'ensei_name_27.png', 'ensei_area_04.png', datetime.timedelta(hours = 20))
if ensei_id == 28: return Ensei(28, 'ensei_name_28.png', 'ensei_area_04.png', datetime.timedelta(hours = 25))
if ensei_id == 29: return Ensei(29, 'ensei_name_29.png', 'ensei_area_04.png', datetime.timedelta(hours = 24))
if ensei_id == 30: return Ensei(30, 'ensei_name_30.png', 'ensei_area_04.png', datetime.timedelta(hours = 48))
if ensei_id == 35: return Ensei(35, 'ensei_name_35.png', 'ensei_area_05.png', datetime.timedelta(hours = 7))
if ensei_id == 36: return Ensei(36, 'ensei_name_36.png', 'ensei_area_05.png', datetime.timedelta(hours = 9))
if ensei_id == 37: return Ensei(37, 'ensei_name_37.png', 'ensei_area_05.png', datetime.timedelta(hours = 2, minutes = 45))
if ensei_id == 38: return Ensei(38, 'ensei_name_38.png', 'ensei_area_05.png', datetime.timedelta(hours = 2, minutes = 55))
return ensei_factory(2)
def check_and_click(pict):
if exists(pict):
click(pict)
return True
return False
def wait_and_click(pict):
wait(pict)
click(pict)
def go_next():
if exists("next.png"):
click("next.png")
time.sleep(5)
go_next()
def go_bokou():
go_next()
check_and_click("bokou.png")
hover("senseki.png")
def shutsugeki():
hover("senseki.png")
wait_and_click("shutsugeki.png")
wait_and_click("ensei.png")
ensei_list = map(ensei_factory, ensei_id_fleet_map.keys())
random.shuffle(ensei_list)
success_ensei_list = []
for ensei in ensei_list:
click(ensei.area_pict)
sleep(2)
click(ensei.name_pict)
hover(ensei.area_pict)
click("decision.png")
if exists("ensei_enable.png"):
print "try", ensei
success_ensei = None
print 'suitable fleets:', ensei_id_fleet_map[ensei.id]
for fleet_id in ensei_id_fleet_map[ensei.id]:
print 'try to use fleet', fleet_id
fleet_name = "fleet_%d.png" % fleet_id
click(fleet_name)
sleep(3)
click("ensei_start.png")
sleep(5)
if not exists("ensei_enable.png"):
ensei.start()
success_ensei = ensei
time.sleep(10)
break
if success_ensei != None:
print ensei, "successfully started"
success_ensei_list.append(success_ensei)
else:
print "no fleets were aveilable for this ensei."
click("ensei_area_01.png")
else:
print ensei, "is already running. skipped."
go_bokou()
return success_ensei_list
def kitou():
try:
wait("ensei_finish.png", 5)
except:
return False
click("ensei_finish.png")
time.sleep(10)
go_next()
kitou()
return True
def hokyu():
hover("senseki.png")
wait("hokyu.png")
click("hokyu.png")
for fleet_id in [2, 3, 4]:
fleet_name = "fleet_%d.png" % fleet_id
click(fleet_name)
click("hokyu_all.png")
if check_and_click("matomete_hokyu.png"): time.sleep(5)
time.sleep(3)
click("bokou.png")
return
running_ensei_list = []
def init():
go_bokou()
hokyu()
while not running_ensei_list:
main()
time.sleep(120)
def main():
if kitou():
hokyu()
global running_ensei_list
running_ensei_list += shutsugeki()
def reflesh():
hover("senseki.png")
click("hokyu.png")
time.sleep(3)
go_bokou()
init()
while True:
if any(running_ensei_list):
running_ensei_list = filter(lambda e: not e.is_end, running_ensei_list)
reflesh()
main()
elif not running_ensei_list:
init()
else:
end_time = min(map(lambda e: e.end_time(), running_ensei_list))
print "next ensei end time:", end_time
time.sleep(10)
돌려보면 init 에서 에러뜨는거 보고 선언에서 뭔가 충돌나는거 같긴한데... 늅이라 모르겠음
부왘
이게 무슨언어냐?? 존나희안하게 작성되잇네
sikuli인데 기본은 파이썬이던거로 암
이런비주류언어 들고오지망