-
Notifications
You must be signed in to change notification settings - Fork 4
/
yılanoyunu.py
126 lines (96 loc) · 2.2 KB
/
yılanoyunu.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import turtle
import random
w = 500
h = 500
fs = 10
d = 100
offsets = {
"up": (0, 20),
"down": (0, -20),
"left": (-20, 0),
"right": (20, 0)
}
def r():
global yılan, yön, bejo, cam
yılan = [[0, 0], [0, 20], [0, 40], [0, 60], [0, 80]]
yön = "up"
bejo = nun()
food.goto(bejo)
hall()
def hall():
global yön
new_head = yılan[-1].copy()
new_head[0] = yılan[-1][0] + offsets[yön][0]
new_head[1] = yılan[-1][1] + offsets[yön][1]
if new_head in yılan[:-1]:
r()
else:
yılan.append(new_head)
if not khana():
yılan.pop(0)
if yılan[-1][0] > w / 2:
yılan[-1][0] -= w
elif yılan[-1][0] < - w / 2:
yılan[-1][0] += w
elif yılan[-1][1] > h / 2:
yılan[-1][1] -= h
elif yılan[-1][1] < -h / 2:
yılan[-1][1] += h
cam.clearstamps()
for segment in yılan:
cam.goto(segment[0], segment[1])
cam.stamp()
screen.update()
turtle.ontimer(hall, d)
def khana():
global bejo
if dist(yılan[-1], bejo) < 20:
bejo = nun()
food.goto(bejo)
return True
return False
def nun():
x = random.randint(- w / 2 + fs, w / 2 - fs)
y = random.randint(- h / 2 + fs, h / 2 - fs)
return (x, y)
def dist(poos1, poos2):
x1, y1 = poos1
x2, y2 = poos2
distance = ((y2 - y1) ** 2 + (x2 - x1) ** 2) ** 0.5
return distance
def yukarı():
global yön
if yön != "down":
yön = "up"
def sag_git():
global yön
if yön != "left":
yön = "right"
def asagi():
global yön
if yön != "up":
yön = "down"
def sol_git():
global yön
if yön != "right":
yön = "left"
screen = turtle.Screen()
screen.setup(w, h)
screen.title("Yılan Oyunu")
screen.bgcolor("grey")
screen.setup(500, 500)
screen.tracer(0)
cam = turtle.Turtle("turtle")
cam.penup()
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.shapesize(fs / 20)
food.penup()
screen.listen()
screen.onkey(yukarı, "Up")
screen.onkey(sag_git, "Right")
screen.onkey(asagi, "Down")
screen.onkey(sol_git, "Left")
r()
turtle.done()