You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.5 KiB
87 lines
1.5 KiB
#!/usr/bin/env python3 |
|
|
|
import time |
|
import socket |
|
import random |
|
import math |
|
|
|
IP_ADDRESS = "2001:638:904:ffc9::2" |
|
PORT = 1234 |
|
|
|
W = 1920 |
|
H = 1080 |
|
|
|
s_w = 60 |
|
s_w_d = 9 |
|
s_c = "F904BC" |
|
s_c2 = "F7B9E7" |
|
|
|
target_x = random.randint(200, W-200) |
|
target_y = random.randint(200, H-200) |
|
|
|
|
|
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) |
|
s.connect((IP_ADDRESS, PORT)) |
|
|
|
x = random.randint(0, W) |
|
y = random.randint(0, H) |
|
d_x = 0 |
|
d_y = 0 |
|
step = 1 |
|
speed_x = 1 |
|
speed_y = 1 |
|
|
|
while True: |
|
if x < target_x: |
|
d_x += step |
|
else: |
|
d_x -= step |
|
|
|
if y < target_y: |
|
d_y += step |
|
else: |
|
d_y -= step |
|
|
|
d_x += random.randint(-1,1) |
|
d_y += random.randint(-1,1) |
|
|
|
x += d_x |
|
y += d_y |
|
|
|
if d_x > 20: |
|
d_x = 20 |
|
|
|
if d_y > 20: |
|
d_y = 20 |
|
|
|
if x < 100 or x > W-100: |
|
d_x = d_y//2 |
|
|
|
if y < 100 or y > H-100: |
|
d_y = d_y//2 |
|
|
|
s_w = int(math.sqrt(d_x**2+d_y**2)*2) |
|
|
|
s_w += s_w_d*2 |
|
s_r = s_w//2 |
|
s_r_q = s_r**2 |
|
|
|
out = [] |
|
|
|
for i in range(s_w): |
|
for j in range(s_w): |
|
if (i-s_r)**2 + (j-s_r)**2 <= s_r_q: |
|
ii = i - s_w//2 |
|
jj = j - s_w//2 |
|
if (i-s_r)**2 + (j-s_r)**2 <= s_w_d: |
|
c = s_c |
|
else: |
|
c = s_c2 |
|
out.append("PX {} {} {}\n".format(x+ii,y+jj, c)) |
|
|
|
frame_end_time = time.time() + 0.1 |
|
while time.time() < frame_end_time: |
|
s.send("".join(out).encode("utf-8")) |
|
|
|
|
|
#time.sleep(0.1)
|
|
|