Compare commits

...

10 Commits

2 changed files with 169 additions and 67 deletions

View File

@@ -8,6 +8,7 @@ var Current_Position = [0,0]
var Cords = [[0,0]] var Cords = [[0,0]]
var Cords_Copy = [] var Cords_Copy = []
var Intersections = [[]] var Intersections = [[]]
var Intersections_Copy = [] var Intersections_Copy = []
var Distance_From_Intersection = 0 var Distance_From_Intersection = 0
var Tree_Array = [] var Tree_Array = []
@@ -39,6 +40,7 @@ var Move_Check2 = 0
var Move_Check = 0 var Move_Check = 0
var move_check2 = 0 var move_check2 = 0
var Move_Check3 = 0 var Move_Check3 = 0
var move_check7 = 99
var Been_There_Overide = false var Been_There_Overide = false
var LogDump = [] var LogDump = []
var IntersectionDump = [] var IntersectionDump = []
@@ -46,13 +48,15 @@ var move_check3 = 0
var move_check5 = 0 var move_check5 = 0
var Move_Check6 = 0 var Move_Check6 = 0
var Move_Check7 = 0 var Move_Check7 = 0
var Move_Check4 = 0
var Move_Check9 = 0 var Move_Check9 = 0
var Cicling = false var Cicling = false
var CircleIntsMax = 0
var CircleInts = 0 var CircleInts = 0
var LogDumpOrdered = [] var LogDumpOrdered = []
var Order = [] var Order = []
var Intersections_from_root = [] var Intersections_from_root = []
var TargetCord = [100,-10] var TargetCord = [200,-10] # HAD TO CHANGE TARGET CORD, IT WAS PREVIOUSLY [2,-10]
var CircleCompleted = null var CircleCompleted = null
var AutoBacktrack = false var AutoBacktrack = false
var IntersectionDict = {"Cord": [], "Data": [] } var IntersectionDict = {"Cord": [], "Data": [] }
@@ -60,6 +64,12 @@ var IntersectionDir = []
var IntersectionMove = 0 var IntersectionMove = 0
var IntOptions = [] var IntOptions = []
var CurrentInt = "" var CurrentInt = ""
var Invert = false
var InvertionArray = []
var CordsDump = []
var FullCount = 0
var Done = 0
var Root = []
func _input(event): func _input(event):
if Current_Position != TargetCord: if Current_Position != TargetCord:
@@ -98,9 +108,20 @@ func _process(delta):
SolvinCircleDeadEnds() SolvinCircleDeadEnds()
MoveAfterIntersection() MoveAfterIntersection()
IntersectionWaysAvailable() IntersectionWaysAvailable()
IntersectionDumping() IntersectionDumping()
CordsDumping()
#print(InverNext)
#print(CordsDump)
else: else:
print("We Done!!!!!!!!!!!!!!!!!!!!!!!") if Done != 1:
print("******************************")
print()
print()
print("We Done!!!!!!!!!!!!!!!!!!!!!!!")
print()
print()
print("******************************")
Done = 1
func Mark(Prev_Direction): func Mark(Prev_Direction):
@@ -126,6 +147,13 @@ func WhatMove():
move = move + 1 move = move + 1
state4 = 2 state4 = 2
func CordsDumping():
if move_check7 != FullCount:
CordsDump.push_back(Current_Position)
var Duplicate = CordsDump.duplicate(true)
CordsDump = Duplicate
move_check7 = FullCount
func TravelLog(): func TravelLog():
if Detail_Dict.Been_There == false: if Detail_Dict.Been_There == false:
if move_check3 != move: if move_check3 != move:
@@ -140,6 +168,7 @@ func BackTracking():
BackTrack_Array.push_back(move) BackTrack_Array.push_back(move)
if Intersections.find(Current_Position) == -1 and Intersections.find(Current_Position) != Intersections.size() -1 and BackTrack_Array.size() >= 2: if Intersections.find(Current_Position) == -1 and Intersections.find(Current_Position) != Intersections.size() -1 and BackTrack_Array.size() >= 2:
TrackBack = GiveOrder() TrackBack = GiveOrder()
#print(TrackBack)
Distance_From_Intersection = BackTrack_Array[-1] - BackTrack_Array[-2] Distance_From_Intersection = BackTrack_Array[-1] - BackTrack_Array[-2]
print("The distance from the last intersection is : ", Distance_From_Intersection) print("The distance from the last intersection is : ", Distance_From_Intersection)
print("To get to the last intersection follow these steps : ", TrackBack) print("To get to the last intersection follow these steps : ", TrackBack)
@@ -151,48 +180,80 @@ func Circling():
if Been_There_Array.size() > 3: if Been_There_Array.size() > 3:
if move_check5 != move: if move_check5 != move:
if Intersections.find(Current_Position) != Intersections.size()-1 and Intersections.find(Current_Position) != -1 and Been_There_Array[-2] == false and Been_There_Array[-3] == false: if Intersections.find(Current_Position) != Intersections.size()-1 and Intersections.find(Current_Position) != -1 and Been_There_Array[-2] == false and Been_There_Array[-3] == false:
var holder = []
for n in (move - BackTrack_Array[-1]):
holder.push_back(LogDump[n])
holder.push_front(Prev_dir_Opp)
print("Circling") print("Circling")
Cicling = true Cicling = true
Individual_Steps.push_front(holder) Root = Current_Position
CircleRootsAndInts() print("The Root is equal to: ",Root, " and its position in int array is: ", Intersections.find(Root))
print("There are ", Intersections.size() - Intersections.find(Root), " Intersections")
HowManyIntsInCircle() HowManyIntsInCircle()
FirstCirclePart() if CircleInts == 0:
print("This Circle is exhausted go back")
print(Individual_Steps)
for n in CircleIntsMax:
Individual_Steps.pop_front()
GoBack(Individual_Steps[0])
if CircleInts != 0:
print("Go back to circle part :(")
FirstCirclePart()
move_check5 = move move_check5 = move
func HowManyIntsInCircle(): func HowManyIntsInCircle():
CircleInts = Tree_Array.size() - Intersections.find(Current_Position)+1
var subtractor = 0
CircleIntsMax = Intersections.size() - (Intersections.find(Current_Position)+1)
CircleInts = CircleIntsMax
for n in CircleInts:
if Tree_Array[-(n+1)] == 1:
CircleInts -= 1
print(CircleInts) print(CircleInts)
func FirstCirclePart(): func FirstCirclePart():
var count = CircleInts var Skipping_array = []
print(Tree_Array)
for nums in Intersections.size() - Intersections.find(Root):
if nums > 0:
Skipping_array.push_back((Intersections.find(Root) - nums) + 1)
if count == 0 and Current_Position == Intersections_from_root[0]: print("Skipping Array is : ", Skipping_array)
Cicling = false
Intersection_Tree() for x in Skipping_array:
Ordered_Commands_Backward.clear() print("This is X: ",x)
print("Ignoreeeeeee")
for takeout in CircleInts + 1:
Individual_Steps.pop_front()
Tree_Array.pop_back()
print("Goin back")
print(Individual_Steps)
GoBack(Individual_Steps[0])
CircleCompleted = true
#** Returning if it needs more work or not
return false
elif count != 0 and Current_Position == Intersections_from_root[0]: if Tree_Array[x] == 1:
print("Skip")
Skip()
else:
print("Go To")
#Goto()
func Skip():
#print("CircleInts: ", CircleInts, " and CircleInts Max: ", CircleIntsMax)
if CircleInts + 1 == CircleIntsMax:
FirstIntChange()
GoBack(Individual_Steps[0]) GoBack(Individual_Steps[0])
Individual_Steps.pop_front() Individual_Steps.pop_front()
print("Number Of Ints: ", CircleInts) else:
print(Individual_Steps) for n in 2:
#** Returning if it needs more work or not print("N is equal to: ",n)
return true GoBack(Individual_Steps[0])
Individual_Steps.pop_front()
func Goto():
if CircleInts + 1 == CircleIntsMax:
FirstIntChange()
else:
GoBack(Individual_Steps[0])
Individual_Steps.pop_front()
func FirstIntChange():
var FirstGoTo = []
FirstGoTo.push_front(Prev_dir_Opp)
FirstGoTo.append_array(Ordered_Commands_Backward)
GoBack(FirstGoTo)
print(FirstGoTo)
func CircleRootsAndInts(): func CircleRootsAndInts():
if Cicling == true: if Cicling == true:
@@ -201,12 +262,11 @@ func CircleRootsAndInts():
Intersections_from_root.push_back(Current_Position) Intersections_from_root.push_back(Current_Position)
var Duplicate = Intersections_from_root.duplicate(true) var Duplicate = Intersections_from_root.duplicate(true)
Intersections_from_root = Duplicate Intersections_from_root = Duplicate
print(Intersections_from_root)
func DeadEndCircles(): func DeadEndCircles():
if Cicling == true: if Cicling == true:
if Detail_Dict.Type == "Dead End": if Detail_Dict.Type == "Dead End":
if AutoBacktrack == true:
CircleIntSubtractor()
return true return true
else: else:
return false return false
@@ -215,21 +275,29 @@ func SolvinCircleDeadEnds():
if CircleManualDistance() != null: if CircleManualDistance() != null:
for n in CircleManualDistance(): for n in CircleManualDistance():
GoBack(LogDump[n]) GoBack(LogDump[n])
CircleInts -= 1
func CircleComplete(): GoBack(Individual_Steps[0])
if CircleCompleted == true: Individual_Steps.pop_front()
if Detail_Dict.Type != "Plain Path" and Detail_Dict.Been_There == false: print(CircleInts)
Individual_Steps.push_front(GiveOrder())
print("Circle Complete") func CircleManualDistance():
print(Individual_Steps) if DeadEndCircles() == true and Intersections_from_root.size() >= 2:
print(Tree_Array) var Starting_Pos = Intersections_from_root[-2]
CircleCompleted = false var Ending_Pos = Intersections_from_root[-1]
else:
pass var x = abs(Starting_Pos[0] - Ending_Pos[0])
var y = abs(Starting_Pos[1] - Ending_Pos[1])
return x+y
func ManualDistance(Start, End):
if DeadEndCircles() == true and Intersections_from_root.size() >= 2:
var Starting_Pos = Start
var Ending_Pos = End
var x = abs(Starting_Pos[0] - Ending_Pos[0])
var y = abs(Starting_Pos[1] - Ending_Pos[1])
return x+y
func CircleIntSubtractor():
CircleInts -= 1
print(CircleInts)
func Intersection_Tree(): func Intersection_Tree():
if Cicling == false: if Cicling == false:
@@ -263,14 +331,6 @@ func CheckForTreeDeadEnds():
else: else:
pass pass
func CircleManualDistance():
if DeadEndCircles() == true and Intersections_from_root.size() >= 2:
var Starting_Pos = Intersections_from_root[-2]
var Ending_Pos = Intersections_from_root[-1]
var x = abs(Starting_Pos[0] - Ending_Pos[0])
var y = abs(Starting_Pos[1] - Ending_Pos[1])
return x+y
func GiveOrder(): func GiveOrder():
Ordered_Commands_Backward.erase("") Ordered_Commands_Backward.erase("")
@@ -278,7 +338,7 @@ func GiveOrder():
TrackIntersections() TrackIntersections()
if Detail_Dict.Been_There == false: if Detail_Dict.Been_There == false:
Ordered_Commands_Backward.push_back(Prev_dir_Opp) Ordered_Commands_Backward.push_back(Prev_dir_Opp)
if Detail_Dict.Type != "Plain Path": if Detail_Dict.Type != "Plain Path" and Intersections.size() > 1:
TakeOut = (Cords.size() - Cords.find(Intersections[-2])) TakeOut = (Cords.size() - Cords.find(Intersections[-2]))
var test = Ordered_Commands_Backward.slice(0 , TakeOut) var test = Ordered_Commands_Backward.slice(0 , TakeOut)
test.reverse() test.reverse()
@@ -295,21 +355,44 @@ func TrackIntersections():
func MoveAfterIntersection(): func MoveAfterIntersection():
if move == IntersectionMove+1: if move == IntersectionMove+1:
if Move_Check6 != move: if Move_Check6 != move and Cicling == false:
if TrackBack.size() != 1: if TrackBack.size() != 1 and BackTrack_Array.size() > 1:
IntersectionDir.push_back(LogDumpOrdered[0]) IntersectionDir.push_back(LogDumpOrdered[0])
if BackTrack_Array.size() > 1 and BackTrack_Array[-1] - BackTrack_Array[-2] == 1:
InvertionArray.pop_back()
Invert = true
else:
Invert = false
else: else:
IntersectionDir.push_back(LogDump[0]) IntersectionDir.push_back(LogDump[0])
Move_Check6 = move if BackTrack_Array.size() > 1 and BackTrack_Array[-1] - BackTrack_Array[-2] == 1 and Invert == false:
InvertionArray.pop_back()
Invert = true
elif BackTrack_Array.size() > 1 and BackTrack_Array[-1] - BackTrack_Array[-2] != 1:
Invert = false
else:
Invert = false
if Invert == true:
#print(Prev_dir_Opp)
IntOptions[-1].erase(Prev_dir_Opp)
#print(IntOptions)
if Invert == false and CordsDump.size() >= 2 :
#print(Prev_dir)
if CordsDump.size() >= 2 and Intersections.find(CordsDump[-1]) != -1:
IntOptions[Intersections.find(CordsDump[-1])-1].erase(Prev_dir)
#print(IntOptions)
#print(Intersections)
Move_Check6 = move
func IntersectionDumping(): func IntersectionDumping():
if CurrentInt != "Plain Path" and Detail_Dict.Type != "Dead End": if CurrentInt != "Plain Path" and Detail_Dict.Type != "Dead End" and Been_There_Array.size() >=1:
if Move_Check9 != move or Been_There_Array[-1] == true: if Move_Check9 != move or Been_There_Array[-1] == true:
IntersectionMove = move IntersectionMove = move
IntersectionDump.push_back(Current_Position) IntersectionDump.push_back(Current_Position)
var Dupe = IntersectionDump.duplicate(true) var Dupe = IntersectionDump.duplicate(true)
IntersectionDump = Dupe IntersectionDump = Dupe
#print(IntersectionDump)
Move_Check9 = move Move_Check9 = move
func CallableRaycastData(): func CallableRaycastData():
@@ -330,14 +413,15 @@ func IntersectionWaysAvailable():
var Sender = [] var Sender = []
var Colliders = [R,L,U,D] var Colliders = [R,L,U,D]
var DirArray = ["R","L","U","D"] var DirArray = ["R","L","U","D"]
if Move_Check7 != move and TypeOfIntersectionHelper() == "BlanketIntersection" and Detail_Dict.Been_There == false:# and Intersections.find(Current_Position) == -1: if Move_Check7 != move and TypeOfIntersectionHelper() == "BlanketIntersection" and Detail_Dict.Been_There == false:
for n in Colliders.size(): for n in Colliders.size():
if Colliders[n] == false: if Colliders[n] == false:
Sender.push_back(DirArray[n]) Sender.push_back(DirArray[n])
IntOptions.push_back(Sender) IntOptions.push_back(Sender)
print(IntOptions) #print(IntOptions)
if Move_Check7 != move and TypeOfIntersectionHelper() == "BlanketIntersection" and Detail_Dict.Been_There == true: if Move_Check7 != move and TypeOfIntersectionHelper() == "BlanketIntersection" and Detail_Dict.Been_There == true:
print(IntOptions) #print(IntOptions)
pass
Move_Check7 = move Move_Check7 = move
@@ -403,12 +487,21 @@ func AutoSolve():
DirectionStrengths[n] -= 25 DirectionStrengths[n] -= 25
if MoveScore < 15: if MoveScore < 15:
DirectionStrengths[n] -= MoveScore DirectionStrengths[n] -= MoveScore
if Intersections.find(Current_Position) != -1:
var Set = Intersections.find(Current_Position) -1
#print(IntOptions[Set])
#print(IntOptions)
#print(Set)
if IntOptions[Set].find(DirArray[n]) == -1:
DirectionStrengths[n] -= 1000
for i in OptionArrays: for i in OptionArrays:
if Intersections.find(i) != -1: if Intersections.find(i) != -1:
DirectionStrengths[n] -= 100 DirectionStrengths[n] -= 100
AutoBacktrack = false AutoBacktrack = false
var HighestPoints = DirectionStrengths.find(max(DirectionStrengths[0],DirectionStrengths[1],DirectionStrengths[2],DirectionStrengths[3])) var HighestPoints = DirectionStrengths.find(max(DirectionStrengths[0],DirectionStrengths[1],DirectionStrengths[2],DirectionStrengths[3]))
print(DirectionStrengths)
print("The Direction with the lowest points is ", DirArray[HighestPoints], "!")
Move(DirArray[HighestPoints]) Move(DirArray[HighestPoints])
#***** Helpers ***** #***** Helpers *****
@@ -432,6 +525,7 @@ func TypeOfIntersectionHelper():
func goDown(): func goDown():
var D = $Forwardv var D = $Forwardv
dir = Vector2.DOWN dir = Vector2.DOWN
FullCount += 1
if not D.is_colliding(): if not D.is_colliding():
self.global_position.y += 24 self.global_position.y += 24
Current_Position[1] -=1 Current_Position[1] -=1
@@ -444,6 +538,7 @@ func goDown():
move += Move_Strength move += Move_Strength
print("There is something below you") print("There is something below you")
func goUp(): func goUp():
var U = $Backv var U = $Backv
dir = Vector2.UP dir = Vector2.UP
@@ -459,6 +554,7 @@ func goUp():
move += Move_Strength move += Move_Strength
print("There is something above you") print("There is something above you")
#BeenTheirFromPrevCord() #BeenTheirFromPrevCord()
FullCount += 1
func goRight(): func goRight():
var R = $Rightv var R = $Rightv
@@ -474,6 +570,7 @@ func goRight():
Been_There_Overide = true Been_There_Overide = true
move += Move_Strength move += Move_Strength
print("There is something to your right") print("There is something to your right")
FullCount += 1
func goLeft(): func goLeft():
var L = $Leftv var L = $Leftv
@@ -489,6 +586,7 @@ func goLeft():
Been_There_Overide = true Been_There_Overide = true
move += Move_Strength move += Move_Strength
print("There is something to your left") print("There is something to your left")
FullCount += 1
#***** Auto Movement ***** #***** Auto Movement *****
@@ -500,6 +598,7 @@ func Move(SetDirection):
Prev_dir_Opp = "L" Prev_dir_Opp = "L"
move += Move_Strength move += Move_Strength
Been_There() Been_There()
FullCount += 1
if SetDirection == "L": if SetDirection == "L":
self.global_position.x -= 24.4 self.global_position.x -= 24.4
@@ -508,6 +607,7 @@ func Move(SetDirection):
Prev_dir_Opp = "R" Prev_dir_Opp = "R"
move += Move_Strength move += Move_Strength
Been_There() Been_There()
FullCount += 1
if SetDirection == "D": if SetDirection == "D":
self.global_position.y += 24 self.global_position.y += 24
@@ -516,6 +616,7 @@ func Move(SetDirection):
Prev_dir_Opp = "U" Prev_dir_Opp = "U"
move += Move_Strength move += Move_Strength
Been_There() Been_There()
FullCount += 1
if SetDirection == "U": if SetDirection == "U":
self.global_position.y -= 24 self.global_position.y -= 24
@@ -524,3 +625,4 @@ func Move(SetDirection):
Prev_dir_Opp = "D" Prev_dir_Opp = "D"
move += Move_Strength move += Move_Strength
Been_There() Been_There()
FullCount += 1

File diff suppressed because one or more lines are too long