un generateur de course aleatoire pour turtle_run.py
from kandinsky import * from random import * from ion import * road=[] road_size=30 xMap=160 yMap=111 sens=0 def draw_road(): for i in road: fill_rect(int(xMap+i[0]*road_size),int(yMap+i[1]*road_size),i[2]*road_size,i[3]*road_size,(0,0,0)) def check_road_collision(): a=0 for i in road: if not (i[0]>road[-1][0]+road[-1][2] or i[1]>road[-1][1]+road[-1][3] or i[0]+i[2]<road[-1][0] or i[1]+i[3]<road[-1][1]): a+=1 if a!=2: return True return False def generate(): global road road=[] x=0 y=0 stop_generation=False if randint(0,1)==1: c=choice([-2,-3,-4,-5,2,3,4,5]) road.append([0,0,c,1]) sens=0 else: b=choice([-2,-3,-4,-5,5,4,3,2]) road.append([0,0,1,b]) sens=1 for i in range(1,20): if sens==0: if randint(0,1)==1: b=choice([2,3,4,5]) if c>0: road.append([road[i-1][0]+road[i-1][2],road[i-1][1],1,b]) else: road.append([road[i-1][0]-1,road[i-1][1],1,b]) else: b=choice([-5,-4,-3,-2]) if c>0: road.append([road[i-1][0]+road[i-1][2],road[i-1][1]+1+b,1,abs(b)]) else: road.append([road[i-1][0]-1,road[i-1][1]+1+b,1,abs(b)]) if check_road_collision(): for j in range(50): if check_road_collision(): del road[len(road)-1] if randint(0,1)==1: b=choice([2,3,4,5]) if c>0: road.append([road[i-1][0]+road[i-1][2],road[i-1][1],1,b]) else: road.append([road[i-1][0]-1,road[i-1][1],1,b]) else: b=choice([-5,-4,-3,-2]) if c>0: road.append([road[i-1][0]+road[i-1][2],road[i-1][1]+1+b,1,abs(b)]) else: road.append([road[i-1][0]-1,road[i-1][1]+1+b,1,abs(b)]) if check_road_collision(): stop_generation=True del road[-1] sens=1 else: if randint(0,1)==0: c=choice([2,3,4,5]) if b>0: road.append([road[i-1][0],road[i-1][1]+road[i-1][3],c,1]) else: road.append([road[i-1][0],road[i-1][1]-1,c,1]) else: c=choice([-5,-4,-3,-2]) if b>0: road.append([road[i-1][0]+c+1,road[i-1][1]+road[i-1][3],abs(c),1]) else: road.append([road[i-1][0]+c+1,road[i-1][1]-1,abs(c),1]) if check_road_collision(): for j in range(50): if check_road_collision(): del road[len(road)-1] if randint(0,1)==1: c=choice([2,3,4,5]) if b>0: road.append([road[i-1][0],road[i-1][1]+road[i-1][3],c,1]) else: road.append([road[i-1][0],road[i-1][1]-1,c,1]) else: c=choice([-5,-4,-3,-2]) if b>0: road.append([road[i-1][0]+c+1,road[i-1][1]+road[i-1][3],abs(c),1]) else: road.append([road[i-1][0]+c+1,road[i-1][1]-1,abs(c),1]) if check_road_collision(): stop_generation=True del road[-1] sens=0 if stop_generation==True: break return road