Mit der Veröffentlichung von Version 1.11 im August 2018 wurde GO mit erstem Unterstützung für WebAssembly unterstützt, sodass GO für die Webentwicklung von clientseitig ("Frontend") verwendet werden kann. Mit der WebAssembly können andere Sprachen als JavaScript den Webbrowser steuern und als effizient ausführende native kompilierte Code dienen.
Die grundlegende Art und Weise, wie es funktioniert, besteht darin, dass der Go -Compiler das WebAssembly -Format und nicht eine native ausführbare Datei erzeugt. Wenn das WebAssembly -Format vom Browser geladen wird, wird es schnell in den nativen Maschinencode zusammengestellt und ausgeführt.
Es gibt einige sehr gute Gründe, GO anstelle von JavaScript zu verwenden, einschließlich der statischen Tippen und Effizienz von Go. Da es sich um eine kompilierte Sprache handelt, können die meisten Programmierfehler vom Go -Compiler erfasst werden, anstatt nur dann gefunden zu werden, wenn das Programm ausgeführt wird, und zufällig den Teil des Codes ausführt, der den Fehler enthält. GO ist für die Parallelität ausgelegt, sodass Sie sich niemals mit Versprechen und anderen Konstrukten befassen müssen, die zu JavaScript hinzugefügt wurden, um es für die moderne Webprogrammierung nützlich zu machen.
Ich war neugierig auf die Technologie und als ich mehr darüber erfuhr, bemerkte ich einen überwältigenden Konsens darüber, dass WebAssembly schnell zu einer sehr beliebten und wichtigen Technologie für die Webentwicklung wird. Es gibt viele Pläne für die Technologie, die durch Zusammenarbeit mit Mozilla, Google und anderen rasch entwickelt wird. Alle großen Browser -Entwickler haben 2017 Unterstützung für WebAssembly angekündigt, und das ist alles sehr neu. Funktioniert es also?
Ich beschloss, es zu versuchen. Ich hatte ein Video -Poker -Spiel, das ich zwei Jahre zuvor in C schrieb und später in JavaScript und Go übersetzt habe. Ich habe die GO -Version so geändert, dass sie mit Ereignissen angetrieben werden, und dann die WebAssembly -Schnittstelle geschrieben, um sie in eine Web -App umzuwandeln.
Mit der Unterstützung von Go Go's WebAssembly, die so neu ist, erwartete ich, dass ich viele Probleme haben würde. Aber ich habe es nicht getan! Ich war erleichtert festgestellt, dass es nicht sehr schwierig war, die Dinge zum Laufen zu bringen, und alles scheint fast perfekt zu funktionieren. Wenn das WebAssembly -Programm in Go in der ersten Veröffentlichung von seiner Zukunft sehr begeistert ist.
In der aktuellen Version zeigt Video Poker die Verwendung von clientseitig Gehen Sie zum Implementieren einer MVC-Web-App (Modell-View-Control). Die Game Engine in videopoker-web.go implementiert das Modell. Die Ansicht wird von der WebAssembly -Schnittstelle in main.go behandelt, die das DOM manipuliert, was zu Updates im Webbrowser führt. Die Steuerung erfolgt über Mausklicks und Tasten, die im Browser -Fenster eingetragen sind, sowie über die Ereignisbehandlung und die Rückrufe in der HTML und in der WebAssembly -Schnittstelle in main.go
Es ist alles in Go geschrieben, und ich musste keine einzige Zeile JavaScript schreiben. Wie cool.
Dies wurde aktualisiert, um mit Go Version 1.12 zu arbeiten, was Änderungen an der WebAssembly -API in der Paketsyscall/JS einführte.
Diese Veröffentlichung ist für Ende Februar 2019. Die Game Engine funktioniert und Sie können eine einfache Go/WebAssembly -App in Aktion sehen.
Ich habe es vielleicht nicht immer zum Laufen, aber um das Spiel zu spielen, können Sie diese Webseite ausprobieren:
http://jayts.com/vp
Eine Beschreibung des Spiels und der Anweisungen zum Spielen finden Sie unten.
Es gibt einige seltsame Verhaltensweisen, die Sie in der App möglicherweise bemerken:
Die App funktioniert gut mit Desktop -Webbrowsern (Firefox, Chrome, Opera und Safari), die Unterstützung auf mobilen Geräten ist jedoch begrenzt. Möglicherweise müssen Sie einige Sekunden (bis zu 15 Sekunden für Firefox auf meinem alten Tablet) warten, bis das Spiel geladen wird.
Auf mobilen Geräten kann die App möglicherweise nicht ordnungsgemäß geladen werden, wenn die App zum ersten Mal gestartet wird oder wenn die Seite neu geladen wird (aktualisiert). Wenn es fehlschlägt, wird in dem braunen Text unterhalb der Titelzeile "Video Poker" eine Fehlermeldung angezeigt. Dieser Fehler scheint der gleiche zu sein wie bei Ausgabe Nr. 27462: Golang/Go #27462
Firefox für Android fällt mit dem Fehler der Fehlermeldung Fehler beim Laden von WebAssembly aus dem Speicher und Chrombasis -Browswers (Google Chrome und Opera) fehlschlägt mit dem Laden des Fehlers der WebAssembly - RangeError: WebAssembly -Instanziierung: Out aus dem Speicher: WASM -Speicher .
Wenn dies Ihnen passiert, starten Sie den Browser neu und öffnen Sie neben der Video -Poker -App keine anderen Webseiten. Dies gelingt oft mit Firefox für Android.
Nach AQ ("Quit") oder E ("Exit") TastePress zeigt das Spiel eine Nachricht zum Ende des Spiels und stoppt dann einfach und reagiert völlig nicht. Das liegt daran, dass das GO -Programm beendet wurde. Dies ist ein Überblick über die Konsolenversion und wird in einer zukünftigen Veröffentlichung eleganter arbeiten. (Mit anderen Worten, dies ist kein Problem mit Go/WebAssembly.)
Laden Sie vorerst die Seite neu, um ein neues Spiel zu starten.
Video Poker ist ein beliebtes Casino-Spiel, das auf Fünf-Karten-Draw Poker basiert.
Dem Spieler wird fünf Karten behandelt und darf alle oder alle von ihnen verwerfen. (Tatsächlich gibt der Spieler an, welche Karten abgehalten werden sollen.) Die weggeworfenen Karten werden durch Karten aus dem Deck ersetzt. Ziel ist es, eine Gewinnhand zu erhalten. Es gibt neun Arten von Gewinnhänden. Jedes hat eine andere Wahrscheinlichkeit, wobei die Menge mit der höheren Unerdlichkeit der Hand zunahm.
Es ist eine großartige Möglichkeit, Ihre Strategie zum Spaß zu üben oder vor ein Casino zu gehen.
Viele Varianten von Video -Poker sind als Optionen enthalten. (Derzeit nur über die Tastatur zugänglich unter Verwendung der KI -Tasten.) Einige zahlen besser als der Standard, was 9/6 -Buchsen sind oder besser.
Standardmäßig soll Video Poker dem Verhalten von 9/6 -Jacks oder besseren Video -Poker -Maschinen in Casinos genau übertragen werden, und eine Option ermöglicht die Auswahl anderer Spiele und Lohntabellen. Der Autor ist jedoch kein Experte für Spiele, und es wird keinerlei Garantie gemacht, dass das Verhalten von Video -Pokern genau zu dem eines anderen Videopokers passt. Bitte berücksichtigen Sie dies sorgfältig, bevor Sie einen echten Videopokermaschine ausprobieren.
Anfangs sehen Sie möglicherweise den folgenden Bildschirm:

Warten Sie nur ein paar Sekunden, bis das Spiel das Laden beendet hat. Wenn Ihr Gerät sehr alt oder einfach nur langsam ist, kann es bis zu 15 Sekunden dauern. Moderne Geräte laden das Spiel in weniger als einer Sekunde.
Wenn das Spiel voll geladen ist, sehen Sie diesen Bildschirm

Klicken Sie auf die Schaltfläche Deal New Hand um Ihre erste Hand zu sehen.
Ihre Punktzahl fällt jedes Mal um 10 um, wenn Sie eine neue Hand umgeben, da Sie so viel wetten.

Jetzt können Sie auf die Karten klicken, an denen Sie festhalten möchten. Unter jeder Karte erscheint eine grüne Balken. Wenn Sie erneut klicken, wird die Karte "unauffällig", und die grüne Bar verschwindet.

Klicken Sie dann auf die Schaltfläche Draw Cards , um die Karten zu ersetzen, die Sie abwerfen möchten.

Na ja, diese Hand hat nichts gewonnen. Vielleicht beim nächsten Mal!
Das Spiel wird fortgesetzt, bis Sie die Chips entweder verlassen oder ausgehen.
Geben Sie entweder q oder e . Ihr Endergebnis wird angezeigt. Laden Sie die Webseite neu.
Hier sind die neun Arten von Gewinnhänden.

Zwei Karten mit dem gleichen Wert. Hier wird ein Paar Königinnen gezeigt.
Die meisten Varianten von Video -Poker bezahlen nur, wenn die Karten Jacks, Königinnen, Könige oder Asse sind. So der Name "Jacks oder besser". Zehnt oder besser zahlt sich auch aus, wenn das Paar Zehnteilen besteht. Keine der anderen Hände hat diese minimale Anforderung.
Die Auszahlung für ein Paar entspricht dem Betrag Ihrer Wette.

Zwei verschiedene Paare in derselben Hand. Das Beispiel zeigt ein Paar 7s und ein 5S -Paar.
Auszahlung für 9/6 -Buchsen oder besser ist doppelt so viel.

Drei Karten mit dem gleichen Wert. Drei 9s sind das Beispiel.
Auszahlung für 9/6 -Buchsen oder besser ist das 3 -fache der Wette.

Fünf Karten mit aufeinanderfolgenden Werten. In diesem Fall sind die Karten 6, 7, 8, 9 und 10.
Sie können jede Bestellung in der angezeigten Hand sein.
Ein ACE kann entweder als einer (zum Beispiel Ace, 1, 2, 3 und 4) oder als Wert über einem König gezählt werden. (Siehe das Beispiel eines königlichen Flushs dafür.)
Auszahlung für 9/6 -Buchsen oder besser ist das 4 -fache der Wette.

Alle Karten sind im gleichen Anzug. Diese Hand zeigt einen Flush in Herzen.
Auszahlung für 9/6 -Buchse oder besser ist 6 -mal die Wette.

Zwei Karten mit einem Wert und drei Karten eines anderen Wertes. Diese Hand hat 6s und Jacks.
Auszahlung für 9/6 -Buchsen oder besser ist 9 -mal soweit.

Vier Karten alle gleicher Wert. In diesem Fall Könige.
Auszahlung für 9/6 -Buchsen oder besser ist 25 -mal die Wette.

Die Hand ist sowohl geradlinig als auch ein Flush. Diese Hand zeigt einen geraden Flush in Clubs von 5 bis 9.
Auszahlung für 9/6 -Buchsen oder besser ist das 50 -fache der Wette.

Dies ist einfach ein ace-hohe, gerade Flush (10, Jack, Königin, König, Ass). Das Beispiel zeigt einen königlichen Flush in Herzen.
Auszahlung für 9/6 -Buchse oder besser ist 800 -mal die Wette.
Die Verwendung der Tastatur ermöglicht ein sehr schnelles Spiel.
Starten Sie das Spiel und ruhen Sie die Finger Ihrer rechten Hand auf der Tastatur so aus wie beim Tippen. Ihr Daumen befindet sich in der Space Bar, und Ihr Zeigefinger durch den kleinen Finger befindet sich auf den Keys j , k , l und Semikolon ( ; .
Durch das Drücken der Taste ENTER (oder Rückgabe) wird das Gleiche wie auf die breite Taste unter den fünf Karten klicken.
Um Karten zu halten oder nicht zu halten, geben Sie die Tasten ein, die den Karten entsprechen:
SPACE Leftmost card
j Second card from left
k Middle card
l Second card from right
; Rightmost card
Die Schlüssel können in beliebiger Reihenfolge eingegeben werden, und ein Schlüssel kann mehr als einmal eingegeben werden, um den gehaltenen/weggeworfenen Zustand der Karte umzuschalten.
Geben Sie dann den Taste ENTER (RETURN) ein, um zu handeln. Weggeworfene Karten werden erneuert, und die letzte Hand wird gezeigt, und wie sie entweder als Gewinner oder Verlust von Hand und die neue Partitur erkannt wird.
Sie können Ihre Wette ändern, bevor eine neue Hand behandelt wird. Um Ihre Wette aus dem Standard von 10 Chips zu erhöhen, geben Sie eine Ziffer von 1 auf 5 zusammen mit den Schlüssel zum Halten von Karten ein. Wenn Sie beispielsweise ein 3 eingeben, wird Ihre Wette auf 30 Chips geändert.
Wenn die Anzahl der Chips geringer ist als die Wette, wird die Wette automatisch reduziert, um sie gleich der Anzahl der verbleibenden Chips zu machen, wo sie bleibt, bis Sie es ändern.
Die Standardeinstellung ist 9/6 Jacks oder besser, aber Sie können es in eine andere Variation des Video -Pokerspiels ändern, indem Sie die A I -Tasten drücken. Das Ändern des Spiels startet das Spiel wieder mit 1000 Chips.
A All American
B Tens or Better
C Bonus Poker
D Double Bonus Poker
E Double Bonus Bonus Poker
F 9/6 Jacks or Better (default)
G 9/5 Jacks or Better
H 8/6 Jacks or Better
I 8/5 Jacks or Better
Die Variationen haben leicht unterschiedliche Regeln und/oder Lohntabellen. Für die Varianten von Jacks oder besser ist die erste Zahl die Auszahlung für ein komplettes Haus, und die zweite ist die Auszahlung für einen Flush. Zehnte oder besser zahlt sich für ein Paar 10 oder besser aus, wobei nur eine Auszahlung von 6/5 für ein volles Haus und ein Flush. Alle Amerikaner sind 8/8, zusammen mit der 8 -fachen Auszahlung für eine Straße.
Sie können das Spiel auch im Textmodus abspielen, indem Sie die Entwicklertools des Browsers öffnen und in der Debug -Konsole spielen. Stellen Sie sicher, dass Sie das Fenster der Webseite (dh den Hintergrund hinter den Karten) klicken, um den Fokus der Tastatur dort anstatt im Fenster Debug -Konsole zu setzen.
Es gibt viele Websites im Internet mit Hinweisen und Strategieführern auf Video -Poker. Suchen Sie einfach nach "Video -Poker -Strategie" oder ähnlichem.
Die Verteilung enthält die folgenden Dateien, die das Spiel implementieren:
css/
normalize.css
styles.css
favicon.ico
img/
01-clubs.png
... (... card images)
13-spades.png
nocard.png (transparent card)
ybtile.gif (background tile)
index.html
main.wasm (WebAssembly code, produced by compiling main.go and videopoker-web.go)
wasm_exec.js (JavaScript glue code, copied from $GOROOT/misc/wasm)
Für lokale Tests gibt es einen Webserver in Go, der so ausgeführt werden kann:
$ go run webserver.go
Web server running. Listening on ":8080"
Stellen Sie sicher, dass Sie sich im Verzeichnis befinden und die Dateien in der obigen Liste enthalten, und starten Sie den Webserver.
Zeigen Sie dann Ihren Webbrowser unter http: // localhost: 8080, um die App auszuführen.
Wenn Sie das Spiel auf einem öffentlich zugänglichen Webserver bereitstellen möchten, kopieren Sie alle Dateien in der Liste auf Ihren Server. Der Server muss den WASM -MIME -Typ unterstützen. Für Apache 2 müssen Sie diese Zeile möglicherweise in Ihre .htaccess -Datei aufnehmen:
AddType application/wasm wasm
Das WebAssembly -Programm main.wasm . Gasmus kann mit dem folgenden Befehl erstellt werden:
GOOS=js GOARCH=wasm go build -o main.wasm main.go videopoker-web.go
Die Game Engine befindet sich in videopoker-web.go , und die Benutzeroberfläche (mit Anrufen an js Paketfunktionen) befindet sich in main.go
Die Verteilung enthält ein Makefile . Wenn Sie make installiert haben, können Sie die folgenden Befehle verwenden:
make # Build main.wasm
make vet # run 'go vet' on the sources
make webserver # Compile the web server.
make test # Run the web server. (Compile it first!)
make dep # Copy the files you need for deployment into a
# directory named deploy. (Create it first.)
Dieser Readme ist für Version 1.0 des Programms.
Jay Ts
http://jayts.com
Copyright 2016-2019 Jay TS
Veröffentlicht unter der GNU Public Lizenz, Version 3.0 (GPLV3) (http://www.gnu.org/licenses/gpl.html)