diff --git a/Alphaproj.py b/Alphaproj.py index 886ef1b..293c1a2 100644 --- a/Alphaproj.py +++ b/Alphaproj.py @@ -1,8 +1,10 @@ import time -from construct import createRoad, createTurtles, randomTurtles, createRanking +from construct import createRoad, createTurtles, randomTurtles,createRanking -Length = createRoad.create() -t = createTurtles.create() -time.sleep(1) -randomTurtles.makeItMove(t, Length) -createRanking.create(t) +def createtheWorld(length): + createRoad.create(length + 1) + t = createTurtles.create() + time.sleep(1) + time_r = randomTurtles.makeItMove(t, length) + createRanking.create(time_r,t) + \ No newline at end of file diff --git a/construct/__pycache__/createRoad.cpython-37.pyc b/construct/__pycache__/createRoad.cpython-37.pyc index 5d1b80c..116d16e 100644 Binary files a/construct/__pycache__/createRoad.cpython-37.pyc and b/construct/__pycache__/createRoad.cpython-37.pyc differ diff --git a/construct/__pycache__/createTurtles.cpython-37.pyc b/construct/__pycache__/createTurtles.cpython-37.pyc index b85aa34..17a3ea3 100644 Binary files a/construct/__pycache__/createTurtles.cpython-37.pyc and b/construct/__pycache__/createTurtles.cpython-37.pyc differ diff --git a/construct/__pycache__/randomTurtles.cpython-37.pyc b/construct/__pycache__/randomTurtles.cpython-37.pyc index d64c22b..5ebbb91 100644 Binary files a/construct/__pycache__/randomTurtles.cpython-37.pyc and b/construct/__pycache__/randomTurtles.cpython-37.pyc differ diff --git a/construct/createRanking.py b/construct/createRanking.py index 2e1b541..a5c5c76 100644 --- a/construct/createRanking.py +++ b/construct/createRanking.py @@ -1,57 +1,59 @@ from turtle import * -def create(tur): - #Clear drawer's line and pen-it-up - clear() - pu() - #Clear turtles' lines - for i in range(4): - tur[2*i].clear() - #Penup turtles - for i in range(4): - tur[2*i].pu() - #Hide turtles - for i in range(4): - tur[2*i].ht() - #Draw the ranking - ht() - y = 100 - setpos(-220, y) - pd() - for i in range(3): - forward(480) - pu() - y -= 100 - goto(-220, y) - pd() - pu() - x = -220 - setpos(x, 100) - pd() - right(90) - forward(200) - for i in range(4): - pu() - x += 120 - goto(x, 100) - pd() - forward(200) - #Write something :v - pu() - goto(-280, 40) - write("Turtle", move=False, align="center", font=("Arial", 15, "normal")) - goto(-280, -60) - write("Time", move=False, align="center", font=("Arial", 15, "normal")) - #Turtle's rank - x = -160 - for i in range(4): - tur[2*i].goto(x, 50) - tur[2*i].left(90) - x += 120 - tur[2*i].st() - x = -160 - for i in range(4): - goto(x, 100) - x += 120 - write(tur[2*i+1]) - + +def create(timeindex, tur): + # Clear drawer's line and pen-it-up + clear () + pu () + # Clear turtles' lines + for i in range (4): + tur[timeindex[2 * i]].clear () + # Penup turtles + for i in range (4): + tur[timeindex[2 * i]].pu () + # Hide turtles + for i in range (4): + tur[timeindex[2 * i]].ht () + # Draw the ranking + ht () + y = 100 + setpos (-220, y) + pd () + for i in range (3): + forward (480) + pu () + y -= 100 + goto (-220, y) + pd () + pu () + x = -220 + setpos (x, 100) + pd () + right (90) + forward (200) + for i in range (4): + pu () + x += 120 + goto (x, 100) + pd () + forward (200) + # Write something :v + pu () + goto (-280, 40) + write ("Turtle", move=False, align="center", font=("Arial", 15, "normal")) + goto (-280, -60) + write ("Time", move=False, align="center", font=("Arial", 15, "normal")) + # Turtle's rank + x = -160 + for i in range (4): + tur[timeindex[2 * i]].goto (x, 50) + tur[timeindex[2 * i]].left (90) + x += 120 + tur[timeindex[2 * i]].st () + x = -165 + for i in range (4): + goto (x, -55) + x += 120 + write (("%0.2f" % timeindex[2 * i + 1]), move=False, align="center", font=("Arial", 10, "bold")) + #Medals + diff --git a/construct/createRoad.py b/construct/createRoad.py index 1b994c5..4810ee2 100644 --- a/construct/createRoad.py +++ b/construct/createRoad.py @@ -1,43 +1,27 @@ from turtle import * from construct.createTurtles import gencolor -#Creat buttons of road's length -def makeshort(n): - n = int(10) -def makelong(n): - n = int(20) -def makemedium(n): - n = int(15) -#Create Road -def create(): +#Create road of course +def create(n): speed(0) penup() - goto(-140,140) #Set the default position - n = 0 + goto(-140,140) #Set the default position bgcolor("white") - # onkey(makeshort(n),"U") - # onkey(makelong(n),"O") - # onkey(makemedium(n),"I") - # listen() screensize(480, 360) - n = int(textinput("Noti from Pornhub ", "Please enter the length of the road: ")) - n = n + 1 #Draw lines of the road for step in range(n): write(step, align = 'center') right(90) - forward(10) #Draw dashed lines - for step in range (1,16): + for step in range (15): forward(10) if (step % 2 == 0): penup() else: pendown() - #Return and start drawing the next line + #Start drawing the next line penup() - backward(160) + backward(150) left(90) forward(20) - return n diff --git a/construct/createTurtles.py b/construct/createTurtles.py index 7c481ce..efbc7c8 100644 --- a/construct/createTurtles.py +++ b/construct/createTurtles.py @@ -1,17 +1,19 @@ from turtle import * from random import randint -#Generate each turtle colors + +#Generate colours of turtles def gencolor(): r = lambda: randint(0, 255) return ('#%02X%02X%02X' % (r(), r(), r())) -#Create turtles (Absolutely) :v + +#Create turtles absolutely def create(): x, y, spin = -150, 100, 0 #Set the default coordinates tur = [] - for n in (gencolor(),gencolor(),gencolor(),gencolor()): + for n in (gencolor(),gencolor(),gencolor(),gencolor()): #Create the turtles #Customize the turtles t = Turtle() t.color(n) diff --git a/construct/randomTurtles.py b/construct/randomTurtles.py index 69486e6..a869982 100644 --- a/construct/randomTurtles.py +++ b/construct/randomTurtles.py @@ -1,82 +1,107 @@ from turtle import * -from random import randint +from random import randint, shuffle from random import random -import datetime from construct.createTurtles import gencolor from time import perf_counter -#Apply de Bruijn Sequence to encode the events of turtles and the turtles theirself -##2 first bits encode which turtles -##3 bits after encode the events +# Apply de Bruijn sequence to create events of turtles def eventRand(): Bruijn = [0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1] - i = randint(0, 26) + i = randint (0, 26) X = [] - for o in range(8): + for o in range (8): Bitarr1 = [Bruijn[i], Bruijn[i + 1], Bruijn[i + 2], Bruijn[i + 3], Bruijn[i + 4]] S = Bitarr1[0] * 2 + Bitarr1[1] T = Bitarr1[2] * 4 + Bitarr1[3] * 2 + Bitarr1[4] * 1 i = i - 1 - X.append(S) - X.append(T) + X.append (S) + X.append (T) return X -def makeTutlePos(Tur,n): +# +def makeTutlePos(Tur, n): X = [] - for i in range(n): + for i in range (n): temp = Tur[i].position () - temp = list(temp) - X.append(temp[0]) + temp = list (temp) + X.append (temp[0]) return X -#Maketime Function +# Sort list of turtle's index and time records +def makeTrueTime_r(time_r): + index = [] + time = [] + for j in range (4): + time.append (time_r[2 * j + 1]) + time.sort (reverse=True) + for i in range (4): + for j in range (i, 4): + if (time[i] == time_r[2 * j + 1]): + # Swap index + temp = time_r[2 * j] + time_r[2 * j] = time_r[2 * i] + time_r[2 * i] = temp + # Swap time + temp = time_r[2 * j + 1] + time_r[2 * j + 1] = time_r[2 * i + 1] + time_r[2 * i + 1] = temp +# Making random events def makeItMove(valTurtle, step): - event = eventRand() - min_s = 1 - max_s = 3 - currentDT = perf_counter() - time_r = [0,0,0,0] + event = eventRand () + minSpeed = 1 + maxSpeed = 3 + StartTime = perf_counter () + RankTimeTable = [0, 0, 1, 0, 2, 0, 3, 0] road_l = step * 20 flag = [1, 1, 1, 1] - tur_set = [100, 70, 40, 10] - num_e = randint(0, road_l) - num_f = randint(num_e, road_l) - endPos = -150 + 20 * step - i = randint(0,num_e) - while(flag[0] == 1 or flag[1] == 1 or flag[2] == 1 or flag[3] == 1): - speed = [randint(min_s, max_s), randint(min_s, max_s), randint(min_s, max_s), randint(min_s, max_s)] - turRoadLengh = makeTutlePos(valTurtle,4) - i = i + 1 - for j in range(4): - if (endPos - turRoadLengh[j] >= max_s): - if (((0 == event[2 * j + 1] or event[2 * j + 1] == 1) and (i == num_f)) or ((0 == event[4 * j + 1] or event[4 * j + 1] == 1) and (i == num_e))): - if (1 == event[4 * j + 1] or event[4 * j + 1] == 2): - e_index = event[4*j] - else: - e_index = event[2*j] - valTurtle[e_index].right(180) - valTurtle[e_index].forward(speed[e_index]*4) - valTurtle[e_index].right(180) - if ((2 == event[2 * j + 1] or event[2 * j + 1] == 3) or (2 == event[4 * j + 1] or event[4 * j + 1] == 3)) and (num_e < i and i < num_f): - if (3 == event[4 * j + 1] or event[4 * j + 1] == 4): - e_index = event[4*j] - else: - e_index = event[2*j] - speed[e_index] = 0 - valTurtle[e_index].color(gencolor()) + SetTurPosition = [100, 70, 40, 10] + stunIndex = [0,0,0,0] + stunStep = step/4 + revStep = step/4 + endPos = -150 + road_l + pos0 = [randint(-140,endPos),randint(-140,endPos),randint(-140,endPos),randint(-140,endPos)] + pos1 = [randint(-140,endPos),randint(-140,endPos),randint(-140,endPos),randint(-140,endPos)] + pos2 = [randint(-140,endPos/2),randint(-140,endPos/2),randint(-140,endPos/2),randint(-140,endPos/2)] + pos3 = [randint(endPos/2,endPos),randint(endPos/2,endPos),randint(endPos/2,endPos),randint(endPos/2,endPos)] + while (flag[0] == 1 or flag[1] == 1 or flag[2] == 1 or flag[3] == 1): + speed = [randint (minSpeed, maxSpeed), randint (minSpeed, maxSpeed), randint (minSpeed, maxSpeed), randint (minSpeed, maxSpeed)] + turRoadLengh = makeTutlePos (valTurtle, 4) + TurtleEventFlag = [1, 1, 1, 1] + for i in range(8): #Check event + #If event is stun + if((event[i*2+1]==0 and (pos0[event[2*i]]-maxSpeed)< turRoadLengh[event[i*2]] < pos0[event[2*i]])or (event[2*i+1]==1 and (pos1[event[2*i]]-maxSpeed)= maxSpeed): + if (TurtleEventFlag[j]==1): + valTurtle[j].forward (speed[j]) - valTurtle[j].forward(speed[j]) + if (TurtleEventFlag[j] == -1): + valTurtle[j].left (180) + if (pos2[j] - maxSpeed", lambda event: makeshort(event, selectframe)) + lengthbutton1.grid(row = 1, column = 0, columnspan = 1) + lengthbutton2 = Button(selectframe, text = "Medium") + lengthbutton2.bind("", lambda event: makemedium(event, selectframe)) + lengthbutton2.grid(row = 1, column = 1, columnspan = 1) + lengthbutton3 = Button(selectframe, text = "Long") + lengthbutton3.bind("", lambda event: makelong(event, selectframe)) + lengthbutton3.grid(row = 1, column = 2, columnspan = 1) + #Deiconify select window + select.deiconify() +#--------------------------------------------------------------------# +#Set background +bgframe = Frame(root) +bgframe.pack(fill = BOTH) +#Background +bgphoto = PhotoImage(file = "images/login/Background.png") +background = Label(bgframe, image = bgphoto) +background.pack() +#Play button +playbutton = PhotoImage(file = "images/login/PlayButton.png") +play = Button(background, image = playbutton) +play.bind("", selectLength) +play.place(x = 135, y = 430) +#Quit button +quitbutton = PhotoImage(file = "images/login/QuitButton.png") +quit = Button(background, image = quitbutton, command = bgframe.quit) +quit.place(x = 245, y = 515) +#--------------------------------------------------------------------# +#Main loop +root.mainloop() diff --git a/images/login/Background.png b/images/login/Background.png new file mode 100644 index 0000000..04b405f Binary files /dev/null and b/images/login/Background.png differ diff --git a/images/login/PlayButton.png b/images/login/PlayButton.png new file mode 100644 index 0000000..de1b949 Binary files /dev/null and b/images/login/PlayButton.png differ diff --git a/images/login/QuitButton.png b/images/login/QuitButton.png new file mode 100644 index 0000000..f261036 Binary files /dev/null and b/images/login/QuitButton.png differ diff --git a/images/reward_medals/1st_Reward.gif b/images/reward_medals/1st_Reward.gif new file mode 100644 index 0000000..6486864 Binary files /dev/null and b/images/reward_medals/1st_Reward.gif differ