I have a special request. I have built a game where you have to untangle traffic. Cars are placed on a map and have fixed routes to get out. If a car blocks the route, the clicked car cannot drive out. The game itself is pretty complex. I'm handling the placement of the cars and the routes they have to take by a list of lists.
Code: Select all
def set_traffic_cars():
global traffic_cars
traffic_cars = [
[1,11, "down", "right", [11,10],0,0,True,False], #
[4,14, "up", "straight", [4],0,0,True,False], #
[6,16, "up", "straight", [6],0,0,True,False], #
[8,18, "down", "left", [18,19],0,0,True,False], #
[10,11,"left", "straight", [10],0,0,True,False], #
[11,12,"left", "straight", [11,10],0,0,True,False], #
[12,13,"right", "turnright", [13,23,22,21,20],0,0,True,False], #
[13,14,"right", "left", [14,4],0,0,True,False], #
[13,23,"down", "right", [23,22,21,20],0,0,True,False], #
[14,15,"left", "straight", [14,13,12,11,10],0,0,True,False], #
[15,16,"left", "right", [15,14,4],0,0,True,False], #
[16,17,"left", "right", [16,6],0,0,True,False], #
[17,18,"right", "straight", [18,19],0,0,True,False], #
[18,19,"right", "straight", [19],0,0,True,False], #
[20,21,"left", "straight", [20],0,0,True,False], #
[21,22,"left", "turnleft", [21,31,32,33,34,35,36,37,38,39],0,0,True,False], #
[21,31,"up", "left", [21,20],0,0,True,False], #
[22,23,"left", "turnleft", [22,21,31,32,33,34,35,36,37,38,39],0,0,True,False], #
[23,24,"left", "straight", [22,21,20],0,0,True,False], #
[30,31,"left", "straight", [30],0,0,True,False], #
[31,32,"right", "turnright", [32,42,41,40],0,0,True,False], #
[32,33,"left", "straight", [32,31,30],0,0,True,False], #
[32,42,"down", "right", [42,41,40],0,0,True,False], #
[33,34,"left", "straight", [33,32,31,30],0,0,True,False], #
[34,35,"right", "straight", [35,36,37,38,39],0,0,True,False], #
[34,44,"up", "left", [34,33,32,31,30],0,0,True,False], #
[35,36,"right", "turnright", [36,37,38,48,58,57,56,55,54,53,52,51,50],0,0,True,False], #
[36,37,"right", "straight", [37,38,39],0,0,True,False], #
[37,38,"right", "turnright", [38,48,58,57,56,55,54,53,52,51,50],0,0,True,False], #
[38,39,"right", "straight", [39],0,0,True,False], #
[40,41,"left", "straight", [40],0,0,True,False], #
[41,42,"right", "turnright", [42,43,53,52,51,50],0,0,True,False], #
[42,43,"right", "turnright", [43,53,52,51,50],0,0,True,False], #
[43,44,"left", "turnleft", [43,53,54,55,56,57,58,59],0,0,True,False], #
[43,53,"down", "right", [53,52,51,50],0,0,True,False], #
[44,45,"left", "turnright", [44,34,35,36,37,38,39],0,0,True,False], #
[45,46,"left", "turnleft", [45,55,56,57,58,59],0,0,True,False], #
[45,55,"up", "left", [45,44,43,42,41,40],0,0,True,False], #
[46,56,"down", "left", [56,57,58,59],0,0,True,False], #
[48,38,"up", "right", [38,39],0,0,True,False], #
[48,58,"up", "right", [48,38,39],0,0,True,False], #
[50,51,"right", "straight", [51,52,53,54,55,56,57,58,59],0,0,True,False], #
[51,52,"right", "straight" [52,53,54,55,56,57,58,59],0,0,True,False], #
[52,53,"right", "right", [53,54,64,74],0,0,True,False], #
[52,62,"up", "left", [52,51,50],0,0,True,False], #
[53,54,"right", "right", [54,64,74],0,0,True,False], #
[54,55,"left", "left", [54,64,74],0,0,True,False], #
[55,56,"left", "left", [55,54,64,74],0,0,True,False], #
[56,57,"right", "straight", [57,58,59],0,0,True,False], #
[57,58,"right", "straight", [58,59],0,0,True,False], #
[58,59,"left", "turnright", [58,48,38,39],0,0,True,False], #
[61,62,"right", "turnleft", [62,52,51,50],0,0,True,False], #
[62,63,"right", "straight", [63,64,65,67,68,69],0,0,True,False], #
[63,64,"right", "turnleft", [64,54,53,52,51,50],0,0,True,False], #
[64,74,"down", "straight", [74],0,0,True,False], #
[67,77,"up", "right", [67,68,69],0,0,True,False], #
[64,65,"left", "turnright", [64,54,55,56,57,58,59],0,0,True,False], #
[66,65,"left", "turnright", [65,64,54,55,56,57,58,59],0,0,True,False], #
[67,68,"right", "straight", [68,69],0,0,True,False], #
[69,68,"right", "straight", [69],0,0,True,False], #
[66,56,"up", "right", [56,57,58,59],0,0,True,False], #
]
return traffic_cars
The sublists have diverse indizes:
Index 0 & 1: The coordinates the car is in between.
Index 2: The direction the car faces to (left, right, up, down)
Index 3: The direction the car will drive to (straight, left, right, turnleft, turnright)
Index 4: A list if path coordinates the car has to drive along to get out of the map
Index 5 & 6: pixel coordinates of the cars (get set when the car gets placed)
Index 7: Boolean that determines if the car is visible atm. Default is True
Index 8: Boolean that determines if the car is moving atm. Default is False
The current function just returns the list of cars as a static list to reset the game.
I would like to generate a list dynamically. In my thoughts this seems to be very complex.
Cars (and their paths) must be prevented to face each other to prevent a situation where the game is unsolvable.
The coordinates of the cars are fixed and also the number of cars is a fixed value.
The map has fixed paths and endpoints to leave the map.
What do I hope to get from this post?
Ideas how to generate this list without getting conflicts.
How would you start?
Best regards
Lacha