Compare commits
12 Commits
main
...
8c977a3e58
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c977a3e58 | |||
| f204d72850 | |||
| 5c3bfa56b0 | |||
| b15eaec8be | |||
| 8a35e51d21 | |||
| 9dfff400de | |||
| 70777c9f80 | |||
| 9054a9d80f | |||
| 97afe595fb | |||
| 58b24176ab | |||
| c9f5dcd642 | |||
| 7891ff172f |
276
PlayerScript.gd
276
PlayerScript.gd
@@ -8,6 +8,7 @@ var Current_Position = [0,0]
|
||||
var Cords = [[0,0]]
|
||||
var Cords_Copy = []
|
||||
var Intersections = [[]]
|
||||
|
||||
var Intersections_Copy = []
|
||||
var Distance_From_Intersection = 0
|
||||
var Tree_Array = []
|
||||
@@ -29,7 +30,9 @@ var move_check = 0
|
||||
var ways = ["None", "Dead End", "Plain Path", "3 Way Intersection", "4 Way Intersection"]
|
||||
var ignore = false
|
||||
var Ordered_Commands_Backward = []
|
||||
var Ordered_Commands_Forward = []
|
||||
var Individual_Steps = []
|
||||
var Individual_Steps_Opp = []
|
||||
var Back_To_Start = []
|
||||
var Command = []
|
||||
var TakeOut = 0
|
||||
@@ -39,6 +42,7 @@ var Move_Check2 = 0
|
||||
var Move_Check = 0
|
||||
var move_check2 = 0
|
||||
var Move_Check3 = 0
|
||||
var move_check7 = 99
|
||||
var Been_There_Overide = false
|
||||
var LogDump = []
|
||||
var IntersectionDump = []
|
||||
@@ -46,13 +50,16 @@ var move_check3 = 0
|
||||
var move_check5 = 0
|
||||
var Move_Check6 = 0
|
||||
var Move_Check7 = 0
|
||||
var Move_Check4 = 0
|
||||
var Move_Check9 = 0
|
||||
var Move_Check10 = 0
|
||||
var Cicling = false
|
||||
var CircleIntsMax = 0
|
||||
var CircleInts = 0
|
||||
var LogDumpOrdered = []
|
||||
var Order = []
|
||||
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 AutoBacktrack = false
|
||||
var IntersectionDict = {"Cord": [], "Data": [] }
|
||||
@@ -60,6 +67,13 @@ var IntersectionDir = []
|
||||
var IntersectionMove = 0
|
||||
var IntOptions = []
|
||||
var CurrentInt = ""
|
||||
var Invert = false
|
||||
var InvertionArray = []
|
||||
var CordsDump = []
|
||||
var FullCount = 0
|
||||
var Done = 0
|
||||
var Root = []
|
||||
var FirstGoTo = []
|
||||
|
||||
func _input(event):
|
||||
if Current_Position != TargetCord:
|
||||
@@ -99,8 +113,21 @@ func _process(delta):
|
||||
MoveAfterIntersection()
|
||||
IntersectionWaysAvailable()
|
||||
IntersectionDumping()
|
||||
CordsDumping()
|
||||
FinishCircling()
|
||||
#print(Ordered_Commands_Backward)
|
||||
#print(InverNext)
|
||||
#print(CordsDump)
|
||||
else:
|
||||
print("We Done!!!!!!!!!!!!!!!!!!!!!!!")
|
||||
if Done != 1:
|
||||
print("******************************")
|
||||
print()
|
||||
print()
|
||||
print("We Done!!!!!!!!!!!!!!!!!!!!!!!")
|
||||
print()
|
||||
print()
|
||||
print("******************************")
|
||||
Done = 1
|
||||
|
||||
func Mark(Prev_Direction):
|
||||
|
||||
@@ -126,6 +153,13 @@ func WhatMove():
|
||||
move = move + 1
|
||||
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():
|
||||
if Detail_Dict.Been_There == false:
|
||||
if move_check3 != move:
|
||||
@@ -140,6 +174,8 @@ func BackTracking():
|
||||
BackTrack_Array.push_back(move)
|
||||
if Intersections.find(Current_Position) == -1 and Intersections.find(Current_Position) != Intersections.size() -1 and BackTrack_Array.size() >= 2:
|
||||
TrackBack = GiveOrder()
|
||||
Individual_Steps_Opp.push_back(Ordered_Commands_Forward)
|
||||
#print(TrackBack)
|
||||
Distance_From_Intersection = BackTrack_Array[-1] - BackTrack_Array[-2]
|
||||
print("The distance from the last intersection is : ", Distance_From_Intersection)
|
||||
print("To get to the last intersection follow these steps : ", TrackBack)
|
||||
@@ -151,62 +187,132 @@ func Circling():
|
||||
if Been_There_Array.size() > 3:
|
||||
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:
|
||||
var holder = []
|
||||
for n in (move - BackTrack_Array[-1]):
|
||||
holder.push_back(LogDump[n])
|
||||
holder.push_front(Prev_dir_Opp)
|
||||
print("Circling")
|
||||
Cicling = true
|
||||
Individual_Steps.push_front(holder)
|
||||
CircleRootsAndInts()
|
||||
Root = Current_Position
|
||||
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()
|
||||
FirstCirclePart()
|
||||
if CircleInts == 0:
|
||||
print("This Circle is exhausted go back")
|
||||
for n in CircleIntsMax:
|
||||
Individual_Steps.pop_front()
|
||||
GoBack(Individual_Steps[0])
|
||||
Individual_Steps.pop_front()
|
||||
print(Individual_Steps)
|
||||
Cicling = false
|
||||
print("Circling is false!!!!")
|
||||
|
||||
if CircleInts != 0:
|
||||
print("Go back to circle part :(")
|
||||
FirstCirclePart()
|
||||
move_check5 = move
|
||||
|
||||
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)
|
||||
|
||||
|
||||
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]:
|
||||
Cicling = false
|
||||
Intersection_Tree()
|
||||
Ordered_Commands_Backward.clear()
|
||||
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
|
||||
print("Skipping Array is : ", Skipping_array)
|
||||
|
||||
elif count != 0 and Current_Position == Intersections_from_root[0]:
|
||||
|
||||
print("This is X: ",Skipping_array[0])
|
||||
|
||||
if Tree_Array[Skipping_array[0]] == 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])
|
||||
Individual_Steps.pop_front()
|
||||
print("Number Of Ints: ", CircleInts)
|
||||
print(Individual_Steps)
|
||||
#** Returning if it needs more work or not
|
||||
return true
|
||||
print("First Go To is : ",FirstGoTo)
|
||||
else:
|
||||
for n in 2:
|
||||
print("N is equal to: ",n)
|
||||
GoBack(Individual_Steps[0])
|
||||
Individual_Steps.pop_front()
|
||||
print("Needs More WORK!!!!!!!")
|
||||
print("First Go To is : ",FirstGoTo)
|
||||
|
||||
func Goto():
|
||||
print("CircleInts: ", CircleInts, " and CircleInts Max: ", CircleIntsMax)
|
||||
if CircleInts == CircleIntsMax:
|
||||
print("FIRST CHANGE")
|
||||
FirstIntChange()
|
||||
print("Shouldn't Need more work")
|
||||
else:
|
||||
print("FIRST CHANGE")
|
||||
FirstIntChange()
|
||||
print("Needs More WORK!!!!!!!")
|
||||
print("First Go To is : ",FirstGoTo)
|
||||
|
||||
|
||||
func FirstIntChange():
|
||||
FirstGoTo.append_array(Ordered_Commands_Backward)
|
||||
FirstGoTo.push_back(Prev_dir_Opp)
|
||||
FirstGoTo.reverse()
|
||||
print(Intersections_from_root)
|
||||
print(Ordered_Commands_Backward)
|
||||
GoBack(FirstGoTo)
|
||||
print(FirstGoTo)
|
||||
|
||||
|
||||
func CircleRootsAndInts():
|
||||
if Cicling == true:
|
||||
if Detail_Dict.Type != "Plain Path":
|
||||
if Intersections_from_root.find(Current_Position) == -1:
|
||||
if Intersections_from_root.size() == 0:
|
||||
print(Intersections)
|
||||
print(Intersections[-(CircleIntsMax+1)])
|
||||
Intersections_from_root.push_back(Intersections[-(CircleIntsMax+1)])
|
||||
Intersections_from_root.push_back(Current_Position)
|
||||
var Duplicate = Intersections_from_root.duplicate(true)
|
||||
Intersections_from_root = Duplicate
|
||||
print(Intersections_from_root)
|
||||
|
||||
func FinishCircling():
|
||||
if Cicling == true:
|
||||
if Move_Check10 != move:
|
||||
if CircleInts == 0:
|
||||
if Current_Position == Intersections[-(CircleIntsMax+1)]:
|
||||
Cicling = false
|
||||
print("Its On the Root!!!")
|
||||
GoBack(Individual_Steps[0])
|
||||
Individual_Steps.pop_front()
|
||||
print(Individual_Steps)
|
||||
else:
|
||||
print("Its Off the Root!!!")
|
||||
Cicling = false
|
||||
GoBack(Individual_Steps[0])
|
||||
Individual_Steps.pop_front()
|
||||
GoBack(Individual_Steps[0])
|
||||
Individual_Steps.pop_front()
|
||||
print("Its On the Root!!!")
|
||||
print(Individual_Steps)
|
||||
Move_Check10 = move
|
||||
|
||||
func DeadEndCircles():
|
||||
if Cicling == true:
|
||||
if Detail_Dict.Type == "Dead End":
|
||||
if AutoBacktrack == true:
|
||||
CircleIntSubtractor()
|
||||
return true
|
||||
else:
|
||||
return false
|
||||
@@ -215,21 +321,29 @@ func SolvinCircleDeadEnds():
|
||||
if CircleManualDistance() != null:
|
||||
for n in CircleManualDistance():
|
||||
GoBack(LogDump[n])
|
||||
CircleInts -= 1
|
||||
GoBack(Individual_Steps[0])
|
||||
Individual_Steps.pop_front()
|
||||
print(CircleInts)
|
||||
|
||||
func CircleComplete():
|
||||
if CircleCompleted == true:
|
||||
if Detail_Dict.Type != "Plain Path" and Detail_Dict.Been_There == false:
|
||||
Individual_Steps.push_front(GiveOrder())
|
||||
print("Circle Complete")
|
||||
print(Individual_Steps)
|
||||
print(Tree_Array)
|
||||
CircleCompleted = false
|
||||
else:
|
||||
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 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():
|
||||
if Cicling == false:
|
||||
@@ -263,22 +377,15 @@ func CheckForTreeDeadEnds():
|
||||
else:
|
||||
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():
|
||||
Ordered_Commands_Backward.erase("")
|
||||
Ordered_Commands_Forward.erase("")
|
||||
if move_check != move:
|
||||
TrackIntersections()
|
||||
if Detail_Dict.Been_There == false:
|
||||
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]))
|
||||
var test = Ordered_Commands_Backward.slice(0 , TakeOut)
|
||||
test.reverse()
|
||||
@@ -295,21 +402,44 @@ func TrackIntersections():
|
||||
|
||||
func MoveAfterIntersection():
|
||||
if move == IntersectionMove+1:
|
||||
if Move_Check6 != move:
|
||||
if TrackBack.size() != 1:
|
||||
if Move_Check6 != move and Cicling == false:
|
||||
if TrackBack.size() != 1 and BackTrack_Array.size() > 1:
|
||||
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:
|
||||
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():
|
||||
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:
|
||||
IntersectionMove = move
|
||||
IntersectionDump.push_back(Current_Position)
|
||||
var Dupe = IntersectionDump.duplicate(true)
|
||||
IntersectionDump = Dupe
|
||||
#print(IntersectionDump)
|
||||
Move_Check9 = move
|
||||
|
||||
func CallableRaycastData():
|
||||
@@ -330,20 +460,22 @@ func IntersectionWaysAvailable():
|
||||
var Sender = []
|
||||
var Colliders = [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():
|
||||
if Colliders[n] == false:
|
||||
Sender.push_back(DirArray[n])
|
||||
IntOptions.push_back(Sender)
|
||||
print(IntOptions)
|
||||
#print(IntOptions)
|
||||
if Move_Check7 != move and TypeOfIntersectionHelper() == "BlanketIntersection" and Detail_Dict.Been_There == true:
|
||||
print(IntOptions)
|
||||
#print(IntOptions)
|
||||
pass
|
||||
Move_Check7 = move
|
||||
|
||||
|
||||
func BackToStart():
|
||||
if Detail_Dict.Type == "Plain Path":
|
||||
Individual_Steps.push_front(Ordered_Commands_Backward)
|
||||
Individual_Steps_Opp.push_front(Ordered_Commands_Forward)
|
||||
|
||||
func Been_There():
|
||||
if Been_There_Overide == false:
|
||||
@@ -403,12 +535,21 @@ func AutoSolve():
|
||||
DirectionStrengths[n] -= 25
|
||||
if MoveScore < 15:
|
||||
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:
|
||||
if Intersections.find(i) != -1:
|
||||
DirectionStrengths[n] -= 100
|
||||
AutoBacktrack = false
|
||||
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])
|
||||
|
||||
#***** Helpers *****
|
||||
@@ -432,6 +573,7 @@ func TypeOfIntersectionHelper():
|
||||
func goDown():
|
||||
var D = $Forwardv
|
||||
dir = Vector2.DOWN
|
||||
FullCount += 1
|
||||
if not D.is_colliding():
|
||||
self.global_position.y += 24
|
||||
Current_Position[1] -=1
|
||||
@@ -444,6 +586,7 @@ func goDown():
|
||||
move += Move_Strength
|
||||
print("There is something below you")
|
||||
|
||||
|
||||
func goUp():
|
||||
var U = $Backv
|
||||
dir = Vector2.UP
|
||||
@@ -459,6 +602,7 @@ func goUp():
|
||||
move += Move_Strength
|
||||
print("There is something above you")
|
||||
#BeenTheirFromPrevCord()
|
||||
FullCount += 1
|
||||
|
||||
func goRight():
|
||||
var R = $Rightv
|
||||
@@ -474,6 +618,7 @@ func goRight():
|
||||
Been_There_Overide = true
|
||||
move += Move_Strength
|
||||
print("There is something to your right")
|
||||
FullCount += 1
|
||||
|
||||
func goLeft():
|
||||
var L = $Leftv
|
||||
@@ -489,6 +634,7 @@ func goLeft():
|
||||
Been_There_Overide = true
|
||||
move += Move_Strength
|
||||
print("There is something to your left")
|
||||
FullCount += 1
|
||||
|
||||
#***** Auto Movement *****
|
||||
|
||||
@@ -500,6 +646,7 @@ func Move(SetDirection):
|
||||
Prev_dir_Opp = "L"
|
||||
move += Move_Strength
|
||||
Been_There()
|
||||
FullCount += 1
|
||||
|
||||
if SetDirection == "L":
|
||||
self.global_position.x -= 24.4
|
||||
@@ -508,6 +655,7 @@ func Move(SetDirection):
|
||||
Prev_dir_Opp = "R"
|
||||
move += Move_Strength
|
||||
Been_There()
|
||||
FullCount += 1
|
||||
|
||||
if SetDirection == "D":
|
||||
self.global_position.y += 24
|
||||
@@ -516,6 +664,7 @@ func Move(SetDirection):
|
||||
Prev_dir_Opp = "U"
|
||||
move += Move_Strength
|
||||
Been_There()
|
||||
FullCount += 1
|
||||
|
||||
if SetDirection == "U":
|
||||
self.global_position.y -= 24
|
||||
@@ -524,3 +673,4 @@ func Move(SetDirection):
|
||||
Prev_dir_Opp = "D"
|
||||
move += Move_Strength
|
||||
Been_There()
|
||||
FullCount += 1
|
||||
|
||||
Reference in New Issue
Block a user