Inhaltsverzeichnis
1. Bereiten Sie das Flugzeugkriegsprogramm vor
2. Gesten erkennen
3. Gestensteuerung zum Anhalten des Spiels
4. Gestensteuerung der Flugzeugbewegung
Heim Technologie-Peripheriegeräte KI Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

May 17, 2023 am 11:34 AM
ai 计算 虚拟手势

Hallo zusammen.

Lassen Sie uns dieses kleine Projekt aufschlüsseln und Sie Schritt für Schritt bei der Umsetzung begleiten. Am Ende des Artikels erhalten wir den vollständigen Quellcode des Projekts.

1. Bereiten Sie das Flugzeugkriegsprogramm vor

Suchen Sie eine Python-Version des Flugzeugkriegsprogramms auf Github, installieren Sie Pygame und führen Sie es aus.

Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

Die Spielbedienung ist einfach. In der oberen rechten Ecke befindet sich die Spielpause/Start-Taste, die durch Klicken mit der Maus bedient werden kann.

Mit den Tasten A, D, W und S auf der Tastatur steuern Sie die Bewegungsrichtung des Flugzeugs, entsprechend links, rechts, oben und unten.

Unser KI-Programm muss also zwei Kernfunktionen erfüllen: Erstens: Gesten erkennen; zweitens: Gesten in Maus- und Tastaturoperationen umwandeln, um das Spiel zu steuern.

2. Gesten erkennen

Hier verwenden wir opencv, um den Videostream von der Kamera zu lesen.

Senden Sie jeden Frame im Videostream an das Handflächenerkennungsmodell in Mediapipe, um 21 Schlüsselpunkte der Handfläche zu identifizieren.

Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

In unserem Projekt werden nur der Zeigefinger und der Mittelfinger verwendet, das sind der 8. und 12. Punkt links und rechts.

Der Kerncode lautet wie folgt:

ret, frame = cap.read()
results = hands.process(frame[:, :, ::-1])
if results.multi_hand_landmarks:
# 遍历每个手掌
for hand_landmarks in results.multi_hand_landmarks:
finger_axis_8 = hand_landmarks.landmark[8]
finger_axis_12 = hand_landmarks.landmark[12]
Nach dem Login kopieren

Frame ist jedes Bild im Videostream und Hände ist das Handflächenerkennungsmodell.

Die analysierten Objekte finger_axis_8 und finger_axis_12 speichern die x- und y-Koordinaten des Zeigefingers bzw. des Mittelfingers.

3. Gestensteuerung zum Anhalten des Spiels

Berechnen Sie den Abstand zwischen den Koordinaten des Zeigefingers und des Mittelfingers. Wenn er größer als ein bestimmter Schwellenwert ist, bewegen Sie die Maus und klicken Sie auf die Schaltfläche „Spiel anhalten“.

Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

Das Spiel ist pausiert

Wenn der Abstand zwischen den Koordinaten des Zeigefingers und des Mittelfingers einen bestimmten Schwellenwert unterschreitet, bewegen Sie die Maus und klicken Sie auf die Schaltfläche „Spiel starten“

Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

Das Spiel beginnt

Die Entfernungsberechnung ist sehr einfach, hier wird kein Code gepostet. Konzentrieren wir uns nun auf die Steuerung der Maus durch Python.

Ich verwende die PyUserInput-Bibliothek, die zwei Klassen, PyMouse und PyKeyboard, zur Steuerung der Maus bzw. der Tastatur bereitstellt.

Wenn wir ein Python-Programm verwenden möchten, um die Pause und den Start des Spiels zu steuern, müssen wir nur die Maus über die Schaltfläche bewegen und einen Klickvorgang ausführen.

# 定义鼠标对象
self.mouse = PyMouse()

def pause_or_start_game(self, dist):
"""
判断是否需要暂停(开始)游戏
:param dist:
:return:
"""
if (not self.is_pause and dist > 80) or (self.is_pause and dist < 80):
self.mouse.move(915, 125)
self.mouse.click(915, 125)

self.is_pause = not self.is_pause
Nach dem Login kopieren

Der Parameter dist der Funktion pause_or_start_game​ ist der Abstand zwischen Zeigefinger und Mittelfinger.

Die Koordinaten der Pause/Start-Taste sind (915, 125). Die Koordinaten jedes Computers sind unterschiedlich. Sie müssen entsprechend Ihrer tatsächlichen Situation neu berechnen.

Die Berechnungsidee ist sehr einfach. Das Spiel wird in der Mitte des Bildschirms gestartet grob geschätzt. Nachdem Sie die Verschiebungsfunktion von PyMouse aufgerufen haben, überprüfen Sie sie und optimieren Sie sie. Die Bewegungsfunktion von

PyMouse wird zum Verschieben der Mausposition verwendet, und die Klickfunktion wird zum Ausführen von Mausklickvorgängen verwendet.

4. Gestensteuerung der Flugzeugbewegung

Hier müssen Sie die Bewegungsrichtung und den Abstand der x- und y-Koordinaten des Zeigefingers in zwei benachbarten Frames berechnen. Dadurch wird bestimmt, welche der Tastaturen A, D, W und S gedrückt wird.

Ebenso sind die Richtung und Entfernung der Bewegung sehr einfach und werden hier nicht besprochen. Der Schwerpunkt liegt auf dem PyKeyboard-Modul, das die Tastaturtasten steuert.

self.key_board = PyKeyboard()
# 按下按键
self.key_board.press_key(key)
# 停留一段时间
time.sleep(press_dwell)
# 释放按键
self.key_board.release_key(key)
Nach dem Login kopieren

Zwischen den Funktionen press_key und release_key wird time.sleep(press_dwell) aufgerufen, um die Dauer der Taste zu steuern. Wenn die Taste lange gedrückt wird, ist die Distanz, die das Flugzeug zurücklegt, lang Wird die Taste kurz gedrückt, ist die Distanz, die das Flugzeug zurücklegt, kurz.

Die Schwierigkeit besteht hier also darin, die Bewegungsdistanz des Zeigefingers auf die Dauer des Tastendrucks abzubilden.

Ich habe den folgenden Code verwendet, um es zu messen

for i in range(n):
kb.press_key('A')
time.sleep(0.05)
kb.release_key('A')
Nach dem Login kopieren

Die feste Tastendauer beträgt 0,05 Sekunden, und das Testflugzeug bewegt sich von der Mitte nach ganz links, was das kleinste n erfordert.

Virtuelle KI-Gesten zum Spielen von Flugzeugkämpfen

Das Flugzeug bewegt sich von der Mitte nach ganz links und die Bewegungsdistanz beträgt 240. Daher ist 240 / (n * 0,05) die Bewegungsdistanz des Flugzeugs pro Sekunde.

Ich habe n=7 gemessen, daher beträgt die Distanz, die das Flugzeug pro Sekunde zurücklegt, 685,7142857.

Berechnen Sie einfach die Bewegungsdistanz des Zeigefingers und teilen Sie sie durch 685,7142857, um die Tastendauer der Tastatur zu erhalten.

Der vollständige Code für die Gestensteuerung von Flugzeugbewegungen lautet:

def press_key_board(self, direction, move_dist):
"""
将手指移动距离,换算为按键间隔,并执行按键操作
:param direction:移动方向
:param move_dist:移动距离
:return:
"""
dist_per_sec = 685.7142857
if direction == 'x':
key = 'A' if move_dist < 0 else 'D'
elif direction == 'y':
key = 'W' if move_dist < 0 else 'S'
else:
return

press_dwell = math.fabs(move_dist / dist_per_sec)
self.key_board.press_key(key)
time.sleep(press_dwell)
self.key_board.release_key(key)
Nach dem Login kopieren

Der Kernteil des Projekts wurde erklärt und der vollständige Code wurde aussortiert. Wenn Sie ihn benötigen, hinterlassen Sie einfach eine Nachricht im Kommentarbereich.

Nachdem Sie den Code erhalten haben, schauen Sie sich zunächst die laufende Datei „steps.txt“ an.

Wenn Sie glauben, dass dieser Artikel für Sie nützlich ist, klicken Sie bitte auf „Lesen“, um mich zu ermutigen, auch in Zukunft hervorragende Python+KI-Projekte zu teilen.

Das obige ist der detaillierte Inhalt vonVirtuelle KI-Gesten zum Spielen von Flugzeugkämpfen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Laravels Geospatial: Optimierung interaktiver Karten und großen Datenmengen Laravels Geospatial: Optimierung interaktiver Karten und großen Datenmengen Apr 08, 2025 pm 12:24 PM

Verarbeiten Sie 7 Millionen Aufzeichnungen effizient und erstellen Sie interaktive Karten mit Geospatial -Technologie. In diesem Artikel wird untersucht, wie über 7 Millionen Datensätze mithilfe von Laravel und MySQL effizient verarbeitet und in interaktive Kartenvisualisierungen umgewandelt werden können. Erstes Herausforderungsprojektanforderungen: Mit 7 Millionen Datensätzen in der MySQL -Datenbank wertvolle Erkenntnisse extrahieren. Viele Menschen erwägen zunächst Programmiersprachen, aber ignorieren die Datenbank selbst: Kann sie den Anforderungen erfüllen? Ist Datenmigration oder strukturelle Anpassung erforderlich? Kann MySQL einer so großen Datenbelastung standhalten? Voranalyse: Schlüsselfilter und Eigenschaften müssen identifiziert werden. Nach der Analyse wurde festgestellt, dass nur wenige Attribute mit der Lösung zusammenhängen. Wir haben die Machbarkeit des Filters überprüft und einige Einschränkungen festgelegt, um die Suche zu optimieren. Kartensuche basierend auf der Stadt

Wie man MySQL löst, kann nicht gestartet werden Wie man MySQL löst, kann nicht gestartet werden Apr 08, 2025 pm 02:21 PM

Es gibt viele Gründe, warum MySQL Startup fehlschlägt und durch Überprüfung des Fehlerprotokolls diagnostiziert werden kann. Zu den allgemeinen Ursachen gehören Portkonflikte (prüfen Portbelegung und Änderung der Konfiguration), Berechtigungsprobleme (Überprüfen Sie den Dienst Ausführen von Benutzerberechtigungen), Konfigurationsdateifehler (Überprüfung der Parametereinstellungen), Datenverzeichniskorruption (Wiederherstellung von Daten oder Wiederaufbautabellenraum), InnoDB-Tabellenraumprobleme (prüfen IBDATA1-Dateien), Plug-in-Ladeversagen (Überprüfen Sie Fehlerprotokolle). Wenn Sie Probleme lösen, sollten Sie sie anhand des Fehlerprotokolls analysieren, die Hauptursache des Problems finden und die Gewohnheit entwickeln, Daten regelmäßig zu unterstützen, um Probleme zu verhindern und zu lösen.

So verwenden Sie MySQL nach der Installation So verwenden Sie MySQL nach der Installation Apr 08, 2025 am 11:48 AM

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

Verstehen von Säureeigenschaften: Die Säulen einer zuverlässigen Datenbank Verstehen von Säureeigenschaften: Die Säulen einer zuverlässigen Datenbank Apr 08, 2025 pm 06:33 PM

Detaillierte Erläuterung von Datenbanksäureattributen Säureattribute sind eine Reihe von Regeln, um die Zuverlässigkeit und Konsistenz von Datenbanktransaktionen sicherzustellen. Sie definieren, wie Datenbanksysteme Transaktionen umgehen, und sorgen dafür, dass die Datenintegrität und -genauigkeit auch im Falle von Systemabstürzen, Leistungsunterbrechungen oder mehreren Benutzern gleichzeitiger Zugriff. Säureattributübersicht Atomizität: Eine Transaktion wird als unteilbare Einheit angesehen. Jeder Teil schlägt fehl, die gesamte Transaktion wird zurückgerollt und die Datenbank behält keine Änderungen bei. Wenn beispielsweise eine Banküberweisung von einem Konto abgezogen wird, jedoch nicht auf ein anderes erhöht wird, wird der gesamte Betrieb widerrufen. begintransaktion; updateAccountsSetBalance = Balance-100WH

MySQL kann nach dem Herunterladen nicht installiert werden MySQL kann nach dem Herunterladen nicht installiert werden Apr 08, 2025 am 11:24 AM

Die Hauptgründe für den Fehler bei MySQL -Installationsfehlern sind: 1. Erlaubnisprobleme, Sie müssen als Administrator ausgeführt oder den Sudo -Befehl verwenden. 2. Die Abhängigkeiten fehlen, und Sie müssen relevante Entwicklungspakete installieren. 3. Portkonflikte müssen Sie das Programm schließen, das Port 3306 einnimmt, oder die Konfigurationsdatei ändern. 4. Das Installationspaket ist beschädigt. Sie müssen die Integrität herunterladen und überprüfen. 5. Die Umgebungsvariable ist falsch konfiguriert und die Umgebungsvariablen müssen korrekt entsprechend dem Betriebssystem konfiguriert werden. Lösen Sie diese Probleme und überprüfen Sie jeden Schritt sorgfältig, um MySQL erfolgreich zu installieren.

Remote Senior Backend Engineers (Plattformen) benötigen Kreise Remote Senior Backend Engineers (Plattformen) benötigen Kreise Apr 08, 2025 pm 12:27 PM

Remote Senior Backend Engineer Job Vacant Company: Circle Standort: Remote-Büro-Jobtyp: Vollzeitgehalt: 130.000 bis 140.000 US-Dollar Stellenbeschreibung Nehmen Sie an der Forschung und Entwicklung von Mobilfunkanwendungen und öffentlichen API-bezogenen Funktionen, die den gesamten Lebenszyklus der Softwareentwicklung abdecken. Die Hauptaufgaben erledigen die Entwicklungsarbeit unabhängig von RubyonRails und arbeiten mit dem Front-End-Team von React/Redux/Relay zusammen. Erstellen Sie die Kernfunktionalität und -verbesserungen für Webanwendungen und arbeiten Sie eng mit Designer und Führung während des gesamten funktionalen Designprozesses zusammen. Fördern Sie positive Entwicklungsprozesse und priorisieren Sie die Iterationsgeschwindigkeit. Erfordert mehr als 6 Jahre komplexes Backend für Webanwendungen

Kann MySQL JSON zurückgeben? Kann MySQL JSON zurückgeben? Apr 08, 2025 pm 03:09 PM

MySQL kann JSON -Daten zurückgeben. Die JSON_EXTRACT -Funktion extrahiert Feldwerte. Über komplexe Abfragen sollten Sie die Where -Klausel verwenden, um JSON -Daten zu filtern, aber auf die Leistungsauswirkungen achten. Die Unterstützung von MySQL für JSON nimmt ständig zu, und es wird empfohlen, auf die neuesten Versionen und Funktionen zu achten.

Laravel eloquent orm bei bangla partieller Modellsuche) Laravel eloquent orm bei bangla partieller Modellsuche) Apr 08, 2025 pm 02:06 PM

Laraveleloquent-Modellab Abruf: Das Erhalten von Datenbankdaten Eloquentorm bietet eine prägnante und leicht verständliche Möglichkeit, die Datenbank zu bedienen. In diesem Artikel werden verschiedene eloquente Modellsuchtechniken im Detail eingeführt, um Daten aus der Datenbank effizient zu erhalten. 1. Holen Sie sich alle Aufzeichnungen. Verwenden Sie die Methode All (), um alle Datensätze in der Datenbanktabelle zu erhalten: UseApp \ Models \ post; $ posts = post :: all (); Dies wird eine Sammlung zurückgeben. Sie können mit der Foreach-Schleife oder anderen Sammelmethoden auf Daten zugreifen: foreach ($ postas $ post) {echo $ post->

See all articles