Skip to content

Commit 52f2e89

Browse files
committed
tkinter
1 parent 0f755ab commit 52f2e89

File tree

2 files changed

+138
-0
lines changed
  • tkinter
    • __canvas__/canvas-follow-player
    • __other__/equation-eval-entry

2 files changed

+138
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#!/usr/bin/env python3
2+
3+
# date:2020.01.21
4+
# https://stackoverflow.com/questions/59805177/how-to-make-enemy-follow-player/
5+
6+
import tkinter as tk
7+
import random
8+
9+
def follow(player_x, player_y, enemy_x, enemy_y, enemy_speed=5):
10+
diff_x = player_x - enemy_x
11+
diff_y = player_y - enemy_y
12+
13+
distance = (diff_x**2 + diff_y**2)**0.5 # Pythagoras: a**2 + b**2 = c**2
14+
15+
if distance <= enemy_speed:
16+
return diff_x, diff_y
17+
18+
normal_x = diff_x/distance
19+
normal_y = diff_y/distance
20+
21+
enemy_move_x = enemy_speed * normal_x
22+
enemy_move_y = enemy_speed * normal_y
23+
24+
return enemy_move_x, enemy_move_y
25+
26+
def on_key_press(event):
27+
global player_move_x
28+
global player_move_y
29+
30+
if event.char == 'w':
31+
player_move_y -= 5
32+
if event.char == 's':
33+
player_move_y += 5
34+
if event.char == 'a':
35+
player_move_x -= 5
36+
if event.char == 'd':
37+
player_move_x += 5
38+
39+
def on_key_release(event):
40+
global player_move_x
41+
global player_move_y
42+
43+
if event.char == 'w':
44+
player_move_y -= -5
45+
if event.char == 's':
46+
player_move_y += -5
47+
if event.char == 'a':
48+
player_move_x -= -5
49+
if event.char == 'd':
50+
player_move_x += -5
51+
52+
def update_game():
53+
global player_x
54+
global player_y
55+
global enemy_x
56+
global enemy_y
57+
58+
player_x += player_move_x
59+
player_y += player_move_y
60+
canvas.move(player_id, player_move_x, player_move_y)
61+
62+
enemy_move_x, enemy_move_y = follow(player_x, player_y, enemy_x, enemy_y, enemy_speed)
63+
enemy_x += enemy_move_x
64+
enemy_y += enemy_move_y
65+
canvas.move(enemy_id, enemy_move_x, enemy_move_y)
66+
67+
root.after(100, update_game)
68+
69+
# --- main ---
70+
71+
player_x = 250
72+
player_y = 250
73+
player_move_x = 0
74+
player_move_y = 0
75+
76+
enemy_x = random.randint(0, 500)
77+
enemy_y = random.randint(0, 500)
78+
enemy_speed = 5
79+
80+
root = tk.Tk()
81+
82+
canvas = tk.Canvas(root, width=500, height=500, bg='gray')
83+
canvas.pack()
84+
root.bind('<KeyPress>', on_key_press)
85+
root.bind('<KeyRelease>', on_key_release)
86+
87+
player_id = canvas.create_oval(player_x-5, player_y-5, player_x+5, player_y+5, fill='green')
88+
enemy_id = canvas.create_oval(enemy_x-5, enemy_y-5, enemy_x+5, enemy_y+5, fill='red')
89+
90+
update_game()
91+
92+
root.mainloop()
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python3
2+
3+
# date: 2020.01.21
4+
# ???
5+
6+
import tkinter as tk
7+
8+
# --- functions ---
9+
10+
def solve():
11+
12+
x = float(entry_x.get())
13+
y = float(entry_y.get())
14+
z = eval(equation.get())
15+
z_var.set("{0:.3f}".format(z))
16+
17+
# --- main ---
18+
19+
root = tk.Tk()
20+
21+
z_var = tk.StringVar()
22+
23+
tk.Label(root, text="Equation").grid(row=0, column=0)
24+
equation = tk.Entry(root)
25+
equation.grid(row=0, column=1)
26+
27+
tk.Label(root, text="x =").grid(row=1, column=0, sticky='e')
28+
entry_x = tk.Entry(root)
29+
entry_x.grid(row=1, column=1)
30+
31+
tk.Label(root, text="y =").grid(row=2, column=0, sticky='e')
32+
entry_y = tk.Entry(root)
33+
entry_y.grid(row=2, column=1)
34+
35+
tk.Label(root, text="z =").grid(row=3, column=0, sticky='e')
36+
tk.Label(root, textvariable=z_var, anchor='w').grid(row=3, column=1, sticky='we')
37+
38+
button = tk.Button(root, text="Solve", command=solve)
39+
button.grid(row=4, column=0, columnspan=2, sticky='we')
40+
41+
entry_x.insert('end', '3')
42+
entry_y.insert('end', '4')
43+
equation.insert('end', '(x**2 + y**2)**0.5')
44+
solve()
45+
46+
root.mainloop()

0 commit comments

Comments
 (0)