Вверх ↑
Ответов: 253
Рейтинг: 0
#1: 2024-03-26 11:16:56 ЛС | профиль | цитата
3042 писал(а):
egorhay писал(а):
если ось прёться в 0 то программа не сможет понять, двигаю ли я дальше мышку или она просто в 0.

Можно так сделать: как курсор упрётся в 0, программно переместить его в 1, тогда при последующем движении мыши он снова уйдёт в 0, а это уже можно отследить. Только не будет ли дёргаться карта игры...

Редактировалось 2 раз(а), последний 2024-03-26 00:39:36


Нууу как вариант. Можно попробовать.
Ось X если 0 то -1 (перемещение в лево),
Учесть разрешение экрана, например 1920 x 1080.
И если по оси X 1920 то +1 (перемещение в право)
ну и если вернуться в диапазон от 1 до 1919 то перестаем отнимать или прибавлять соответственно ( чтобы камера бесконечно не убегала влево или в право )

по оси Y аналогично сделать

Может быть и получиться

Пока переключился на попытки реализации это в Python
(правда что то совсем в нем не понимаю)

Пока что вот что вышло

Клиент


from pynput import mouse
import os
import sys
import socket

# Функция преобразования речи в текст


client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 3636))





def on_move(x, y):
print(f"Указатель перемещен на {x, y}")
client.send(f"{x, y}\n".encode())
from_server = client.recv(4096)



def on_click(x, y, button, pressed):
print(f"{'Нажато' if pressed else 'Отпущено'} на {(x, y)}")
client.send(f"{'Нажато' if pressed else 'Отпущено'} на {(x, y)}\n".encode())
from_server = client.recv(4096)
if not pressed:
# Остановить слушатель
return False


def on_scroll(x, y, dx, dy):
print(f"Прокручено {'вниз' if dy < 0 else 'вверх'} на {(x, y)}")

# блок `with` слушает события до выхода


with mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll) as listener:
listener.join()

# ...или неблокирующим способом:
listener = mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll)
listener.start()


Сервер


import socket
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(('127.0.0.1', 3636))
serv.listen(5)
while True:
conn, addr = serv.accept()
from_client = ''
while True:
data = conn.recv(4096)
if not data: break
from_client += data.decode('utf8')
print (from_client)
conn.send("I am SERVER\n".encode())
conn.close()
print ('client disconnected and shutdown')


Координаты отлично улетаю и за отрицательное число) то есть продолжает показывать движение. И отправляет их серверу по tcp. Правда пока дальше не придумал что делать. надо как-то заставить сервер обрабатывать полученные координаты)
карма: 0

0