-
Notifications
You must be signed in to change notification settings - Fork 0
/
tron.py
95 lines (67 loc) · 1.93 KB
/
tron.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
"""Tron, classic arcade game.
Exercises
1. Make the tron players faster/slower. ya
2. Stop a tron player from running into itself. ya
3. Allow the tron player to go around the edge of the screen. -ya
4. How would you create a computer player?-
"""
from turtle import set, update, ontimer, setup, hideturtle, tracer, listen
from turtle import onkey, done
from freegames import square, vector
from playsound import playsound
from threading import Thread
#Función para abrir un archivo de música
def music_func():
playsound('badGuy.mid')
#Definir función que llama audio
music = Thread(target = music_func)
music.daemon = True
#Iniciar música
music.start()
p1xy = vector(-100, 0)
p1aim = vector(4, 0)
p1body = set()
p2xy = vector(100, 0)
p2aim = vector(-4, 0)
p2body = set()
def inside(head):
"Return True if head inside screen."
return -200 < head.x < 200 and -200 < head.y < 200
def draw():
"Advance players and draw game."
p1xy.move(p1aim)
p1head = p1xy.copy()
p2xy.move(p2aim)
p2head = p2xy.copy()
if p1head in p2body or p1head in p1body:
print('Player blue wins!')
return
elif p2head in p1body or p2head in p2body:
print('Player red wins!')
return
elif not inside(p1head):
if p1xy.y>199 or p1xy.y<-199:
p1xy.y=(p1xy.y*-1)
elif p1xy.x>199 or p1xy.x<-199:
p1xy.x=(p1xy.x*-1)
elif not inside(p2head):
if p2xy.y>199 or p2xy.y<-199:
p2xy.y=(p2xy.y*-1)
elif p2xy.x>199 or p2xy.x<-199:
p2xy.x=(p2xy.x*-1)
p1body.add(p1head)
p2body.add(p2head)
square(p1xy.x, p1xy.y, 3, 'red')
square(p2xy.x, p2xy.y, 3, 'blue')
update()
ontimer(draw, 100)
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: p1aim.rotate(90), 'a')
onkey(lambda: p1aim.rotate(-90), 'd')
onkey(lambda: p2aim.rotate(90), 'j')
onkey(lambda: p2aim.rotate(-90), 'l')
draw()
done()