Skip to content
This repository was archived by the owner on Feb 13, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions Alphaproj.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import time
from construct import createRoad, createTurtles, randomTurtles,createRanking

length = createRoad.create()
t = createTurtles.create()
time.sleep(1)
time_r = randomTurtles.makeItMove(t, length)
createRanking.create(time_r,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)

Binary file modified construct/__pycache__/createRoad.cpython-37.pyc
Binary file not shown.
Binary file modified construct/__pycache__/createTurtles.cpython-37.pyc
Binary file not shown.
Binary file modified construct/__pycache__/randomTurtles.cpython-37.pyc
Binary file not shown.
108 changes: 55 additions & 53 deletions construct/createRanking.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,58 @@


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"))
# 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

19 changes: 1 addition & 18 deletions construct/createRoad.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,15 @@
from construct.createTurtles import gencolor


#Create road's length buttons
def makeshort(n):
n = int(10)
def makelong(n):
n = int(20)
def makemedium(n):
n = int(15)


#Create road of course
def create():
def create(n):
speed(0)
penup()
goto(-140,140) #Set the default position
n = 0
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')
Expand All @@ -41,4 +25,3 @@ def create():
backward(150)
left(90)
forward(20)
return n
119 changes: 63 additions & 56 deletions construct/randomTurtles.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
from construct.createTurtles import gencolor
from time import perf_counter

#Apply de Bruijn sequence to create events of turtles

# 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)
Expand All @@ -18,6 +19,7 @@ def eventRand():
X.append (T)
return X


#
def makeTutlePos(Tur, n):
X = []
Expand Down Expand Up @@ -46,69 +48,74 @@ def makeTrueTime_r(time_r):
time_r[2 * j + 1] = time_r[2 * i + 1]
time_r[2 * i + 1] = temp

#Making random events
# 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, 1, 0, 2, 0, 3, 0]
road_l = step * 20
minSpeed = 1
maxSpeed = 3
StartTime = perf_counter ()
RankTimeTable = [0, 0, 1, 0, 2, 0, 3, 0]
road_l = (step+1) * 20
flag = [1, 1, 1, 1]
tur_set = [100, 70, 40, 10]
rev_num_e = [0, 0, 0, 0]
rev_num_f = [0, 0, 0, 0]
rev_domb = [2, 0, 2, 1, 1, 1, 1, 1]
rev_index = 1
stun_num_e = [0, 0, 0, 0]
stun_num_f = [0, 0, 0, 0]
for i in range (4):
rev_num_e[i] = randint (0, road_l - 10)
rev_num_f[i] = randint (rev_num_e[i], rev_num_e[i] + 10)
stun_num_e[i] = randint (0, road_l - 10)
stun_num_f[i] = randint (rev_num_e[i], rev_num_e[i] + 10)
endPos = -150 + 20 * step
i = randint (0, min (rev_num_e))
SetTurPosition = [100, 70, 40, 10]
stunIndex = [0,0,0,0]
stunStep = 6
revStep = 6
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),randint(-140,endPos),randint(-140,endPos),randint(-140,endPos)]
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)]
speed = [randint (minSpeed, maxSpeed), randint (minSpeed, maxSpeed), randint (minSpeed, maxSpeed), randint (minSpeed, maxSpeed)]
turRoadLengh = makeTutlePos (valTurtle, 4)
i = i + 1
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)<turRoadLengh[event[i*2]]<pos1[event[2*i]])):
TurtleEventFlag[event[i*2]] = 0
valTurtle[event[2*i]].color(gencolor())
stunIndex[event[i*2]] = stunIndex[event[i*2]] + 1
if (stunIndex[event[i*2]] % stunStep == 0):
TurtleEventFlag[event[i * 2]] = 1
#If event is backward
if((event[i*2+1]==2 or event[i*2+1]==3)and(pos2[event[i*2]] - maxSpeed< turRoadLengh[event[i*2]] < pos2[event[i*2]])):
TurtleEventFlag[event[i*2]] = -1
###Make a real move and do event act
for j in range (4):
if (endPos - turRoadLengh[j] >= max_s):
# Event reverse
if (((0 == event[2 * j + 1] or event[2 * j + 1] == 1)and(rev_num_f[event[2 * j]] == i)) or ((0 == event[4 * j + 1] or event[
4 * j + 1] == 1) and (i == rev_num_e[event[2 * j]]))):
if (1 == event[4 * j + 1] or event[4 * j + 1] == 2):
e_index = event[4 * j]
else:
e_index = event[2 * j]
rev_index = rev_index - 1
if (rev_domb[rev_index%5]):
if(rev_index == 2):
valTurtle[e_index].right (180)
rev_num_e[e_index] = rev_num_e[e_index]+1
rev_num_f[e_index] = rev_num_f[e_index]+1
# Event stun
if ((2 == event[2 * j + 1] or event[2 * j + 1] == 3) and (
stun_num_e[event[2 * j]] < i < stun_num_f[event[2 * j]])) or (
(2 == event[4 * j + 1] or event[4 * j + 1] == 3) and (
stun_num_e[event[4 * j]] < i < stun_num_f[event[4 * j]])):
if (3 == event[4 * j + 1] or event[4 * j + 1] == 4):
e_index = event[4 * j]
else:
e_index = event[2 * j]
if (j > e_index):
valTurtle[e_index].backward (speed[e_index])
speed[e_index] = 0
valTurtle[e_index].color (gencolor ())
valTurtle[j].forward (speed[j])
if (endPos - turRoadLengh[j] >= maxSpeed):
if (TurtleEventFlag[j]==1):
valTurtle[j].forward (speed[j])

if (TurtleEventFlag[j] == -1):
valTurtle[j].left (180)
pos2[j] = pos2[j] - speed[j]*revStep
else:
valTurtle[j].goto (endPos, tur_set[j])
valTurtle[j].goto (endPos, SetTurPosition[j])
if (flag[j] == 1):
time_r[j * 2 + 1] = perf_counter ()
RankTimeTable[j * 2 + 1] = perf_counter ()
flag[j] = flag[j] - 1

for j in range (4):
time_r[2 * j + 1] = time_r[2 * j + 1] - currentDT
makeTrueTime_r (time_r)
return time_r
RankTimeTable[2 * j + 1] = RankTimeTable[2 * j + 1] - StartTime
makeTrueTime_r (RankTimeTable)
return RankTimeTable
74 changes: 74 additions & 0 deletions createUI.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
from tkinter import *
from turtle import *
from Alphaproj import *

#--------------------------------------------------------------------#
#Set main window
root = Tk()
root.geometry("800x600+300-80")
root.title("Turtle Racing Boiz")
#--------------------------------------------------------------------#
#Set select buttons window
select = Tk()
select.withdraw()
select.title("Road's Length")
#--------------------------------------------------------------------#
#Create road's length buttons
def makeshort(event, frame):
select.withdraw()
frame.destroy()
clearscreen()
createtheWorld(12)
root.deiconify()
def makelong(event, frame):
select.withdraw()
frame.destroy()
clearscreen()
createtheWorld(20)
root.deiconify()
def makemedium(event, frame):
select.withdraw()
frame.destroy()
clearscreen()
createtheWorld(16)
root.deiconify()
#Choose length
def selectLength(event):
#Hide old window
root.withdraw()
#Frame contains select buttons
selectframe = Frame(select)
selectframe.pack(fill = BOTH)
text = Label(selectframe, text = "Select the length of the road:")
text.grid(row = 0, columnspan = 3)
lengthbutton1 = Button(selectframe, text = "Short")
lengthbutton1.bind("<Button-1>", lambda event: makeshort(event, selectframe))
lengthbutton1.grid(row = 1, column = 0, columnspan = 1)
lengthbutton2 = Button(selectframe, text = "Medium")
lengthbutton2.bind("<Button-1>", lambda event: makemedium(event, selectframe))
lengthbutton2.grid(row = 1, column = 1, columnspan = 1)
lengthbutton3 = Button(selectframe, text = "Long")
lengthbutton3.bind("<Button-1>", 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("<Button-1>", 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()
Binary file added images/login/Background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/login/PlayButton.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/login/QuitButton.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/reward_medals/1st_Reward.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.