71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
import pygame
|
|
import sys
|
|
import threading
|
|
import math
|
|
import websocket
|
|
import json
|
|
import time
|
|
sin_remote = 0
|
|
th1 = None
|
|
th2 = None
|
|
moon_addr = "127.0.0.1"
|
|
def on_open(wsapp):
|
|
print("打开新连接")
|
|
print("准备待命")
|
|
message = {
|
|
"id": "comet",
|
|
"sendto": "auth",
|
|
"content": "none"
|
|
}
|
|
wsapp.send(json.dumps(message))
|
|
|
|
def on_message(wsapp, message):
|
|
global sin_remote
|
|
print(f"接收到消息: {message}")
|
|
if message == "-3":
|
|
th1.start()
|
|
sin_remote = float(message)
|
|
|
|
def on_close(wsapp):
|
|
print("on_close")
|
|
|
|
def inet():
|
|
global sin_remote
|
|
wsapp = websocket.WebSocketApp(f"ws://{moon_addr}:8765",
|
|
on_open=on_open,
|
|
on_message=on_message,
|
|
on_close=on_close)
|
|
wsapp.run_forever()
|
|
|
|
def grap():
|
|
pygame.init()
|
|
width, height = 628, 600
|
|
screen = pygame.display.set_mode((width, height))
|
|
pygame.display.set_caption("TEST")
|
|
LOCAL_COLOR = (255, 255, 255, 64)
|
|
REMOTE_COLOR = [(0, 0, 255, 128), (255, 0, 0, 128)]
|
|
frequency = 0.01 # 波动频率
|
|
amplitude = 100 # 波动幅度
|
|
x = round(time.time()*1000)
|
|
while True:
|
|
x = round(time.time()*1000)
|
|
x = x % 628
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
sys.exit()
|
|
|
|
#pygame.draw.rect(screen, (0, 0, 0), (x, 0, 5, height)) # 扫描线
|
|
y = height // 2 + amplitude * math.sin((x * frequency))
|
|
y_remote = height // 2 + amplitude * sin_remote
|
|
pygame.draw.rect(screen, (round(time.time()*1000+120)%256,round(time.time()*1000)%256,round(time.time()*1000+60)%256), (x, int(y_remote), 4, 4)) # 远程波形
|
|
pygame.draw.rect(screen, LOCAL_COLOR, (x, int(y), 2, 2)) # 本地波形
|
|
pygame.display.flip()
|
|
pygame.time.delay(10)
|
|
|
|
if __name__ == "__main__":
|
|
th1 = threading.Thread(target=grap)
|
|
th2 = threading.Thread(target=inet)
|
|
# 启动线程
|
|
th2.start()
|