Dengan rilis versi 1.11 pada bulan Agustus 2018, GO datang dengan dukungan awal untuk WebAssembly, memungkinkan Go to digunakan untuk pengembangan web sisi klien ("depan"). WebAssembly memungkinkan bahasa selain JavaScript untuk mengontrol browser web, dan beroperasi sebagai kode yang dikompilasi secara efisien.
Cara dasarnya adalah bahwa kompiler GO menghasilkan format WebAssembly daripada yang dapat dieksekusi asli. Ketika format WebAssembly dimuat oleh browser, itu dengan cepat dikompilasi ke kode mesin asli dan dieksekusi.
Ada beberapa alasan yang sangat bagus untuk lebih memilih menggunakan Go daripada JavaScript, termasuk pengetikan dan efisiensi statis Go. Karena ini adalah bahasa yang dikompilasi, sebagian besar kesalahan pemrograman dapat ditangkap oleh kompiler GO, daripada ditemukan hanya ketika program berjalan dan terjadi untuk menjalankan bagian kode yang berisi bug. GO dirancang untuk konkurensi, jadi Anda tidak akan pernah harus menangani janji dan konstruksi lain yang telah ditambahkan ke JavaScript untuk membuatnya berguna untuk pemrograman web modern.
Saya ingin tahu tentang teknologi ini, dan ketika saya belajar lebih banyak tentang hal itu, saya melihat konsensus yang luar biasa bahwa WebAssembly akan dengan cepat menjadi teknologi yang sangat populer dan penting untuk pengembangan web. Ada banyak rencana untuk teknologi ini, dan sedang dikembangkan dengan cepat dengan kolaborasi yang melibatkan Mozilla, Google, dan lainnya. Semua pengembang browser utama mengumumkan dukungan untuk WebAssembly pada tahun 2017, dan ini semua sangat baru. Jadi apakah itu berhasil?
Saya memutuskan untuk mencobanya. Saya memiliki permainan poker video yang saya tulis di C dua tahun sebelumnya dan kemudian diterjemahkan ke JavaScript dan Go. Saya memodifikasi versi GO untuk didorong oleh acara, dan kemudian menulis antarmuka WebAssembly untuk mengonversinya menjadi aplikasi web.
Dengan dukungan WebAssembly GO menjadi sangat baru, saya berharap memiliki banyak masalah. Tapi saya tidak! Saya merasa lega menemukan bahwa bahkan dengan dokumentasi paket dasar yang hanya dan beberapa contoh yang sangat sederhana untuk digunakan sebagai titik awal, tidak terlalu sulit untuk membuat hal -hal berfungsi, dan semuanya tampaknya bekerja hampir sempurna. Jika inilah yang diprogram WebAssembly di Go adalah pada rilis pertama, saya sangat antusias tentang masa depannya.
Pada rilis saat ini, Video Poker menunjukkan penggunaan aplikasi web sisi klien untuk mengimplementasikan aplikasi web MVC (model-view-control). Mesin Game, di videopoker-web.go , mengimplementasikan model. View ditangani oleh antarmuka WebAssembly di main.go yang memanipulasi DOM, menghasilkan pembaruan di browser web, dan kontrol adalah melalui klik mouse dan kunci yang diketik di jendela browser, bersama dengan penanganan acara dan panggilan balik di HTML dan antarmuka WebAssembly di main.go
Semuanya ditulis dalam go, dan saya tidak perlu menulis satu baris JavaScript. Betapa kerennya.
Ini telah diperbarui untuk bekerja dengan GO versi 1.12, yang memperkenalkan perubahan pada API WebAssembly dalam paket Syscall/JS.
Rilis ini untuk akhir Februari 2019. Mesin game berfungsi, dan Anda dapat melihat aplikasi GO/WebAssembly sederhana yang sedang beraksi.
Saya mungkin tidak menjalankannya setiap saat, tetapi untuk memainkan game, Anda dapat mencoba halaman web ini:
http://jayts.com/vp
Deskripsi permainan dan arahan untuk bermain di bawah ini.
Ada beberapa perilaku aneh yang mungkin Anda perhatikan di aplikasi:
Aplikasi ini bekerja dengan baik dengan browser web desktop (Firefox, Chrome, Opera, dan Safari), tetapi dukungan pada perangkat seluler terbatas. Anda mungkin perlu menunggu beberapa detik (hingga 15 detik untuk Firefox di tablet lama saya) untuk dimuat.
Pada perangkat seluler, aplikasi mungkin tidak memuat dengan benar ketika aplikasi pertama kali dimulai, atau ketika halaman dimuat ulang (disegarkan). Ketika gagal, pesan kesalahan ditampilkan dalam teks coklat di bawah garis judul "video poker". Bug ini tampaknya sama dengan edisi #27462: golang/go #27462
Firefox for Android gagal dengan kesalahan pesan kesalahan memuat WebAssembly - di luar memori , dan browswers berbasis kromium (Google Chrome dan Opera) gagal dengan kesalahan memuat WebAssembly - RangeError: WebAssembly Instantiation: Out of Memory: Wasm Memory .
Jika ini terjadi pada Anda, coba mulai ulang browser, dan jangan buka halaman web lain selain aplikasi poker video. Ini sering berhasil dengan Firefox untuk Android.
Setelah keypress aq ("QUIT") atau E ("Exit"), game menunjukkan pesan akhir pertandingan, kemudian berhenti dan menjadi sama sekali tidak responsif. Itu karena program GO keluar. Ini adalah peninggalan dari versi konsol, dan akan bekerja lebih elegan dalam rilis mendatang. (Dengan kata lain, ini bukan masalah dengan Go/WebAssembly.)
Untuk saat ini, muat ulang halaman untuk memulai game baru.
Video Poker adalah game kasino populer yang didasarkan pada poker undian lima kartu.
Pemain dibagikan lima kartu, dan diizinkan untuk membuang salah satu atau semuanya. (Sebenarnya, pemain menunjukkan kartu mana yang akan diadakan.) Kartu yang dibuang digantikan oleh kartu yang dibagikan dari geladak. Tujuannya adalah untuk mendapatkan tangan yang menang. Ada sembilan jenis tangan yang menang. Masing -masing memiliki probabilitas yang berbeda, dengan jumlah yang menang meningkat dengan ketidakberdayaan yang lebih tinggi.
Ini cara yang bagus untuk melatih strategi Anda untuk bersenang -senang, atau sebelum pergi ke kasino.
Banyak varian video poker dimasukkan sebagai opsi. (Saat ini hanya dapat diakses dari keyboard, menggunakan tombol AI.) Beberapa membayar lebih baik daripada default, yaitu 9/6 jack atau lebih baik.
Secara default, video poker dimaksudkan untuk mencocokkan perilaku jack 9/6 atau mesin poker video yang lebih baik di kasino, dan opsi memungkinkan pemilihan game lain dan tabel pembayaran. Namun, penulis bukan ahli dalam bermain game, dan tidak ada jaminan apa pun yang dibuat bahwa perilaku poker video sangat cocok dengan poker video lainnya. Harap pertimbangkan itu dengan cermat sebelum mencoba mesin poker video sungguhan.
Pada awalnya, Anda dapat melihat layar berikut:

Tunggu saja beberapa detik untuk permainan menyelesaikan pemuatan. Jika perangkat Anda sangat tua atau hanya lambat, mungkin perlu waktu hingga 15 detik. Perangkat modern akan memuat game dalam waktu kurang dari satu detik.
Saat game terisi penuh, Anda akan melihat layar ini

Klik tombol Deal New Hand untuk melihat tangan pertama Anda.
Skor Anda turun 10 setiap kali Anda menangani tangan baru karena itulah seberapa banyak Anda bertaruh.

Sekarang Anda dapat mengklik kartu yang ingin Anda pegang. Bilah hijau muncul di bawah setiap kartu. Jika Anda mengklik lagi, itu akan "menghapus" kartu, dan bilah hijau menghilang.

Kemudian klik tombol Draw Cards untuk mengganti kartu yang ingin Anda buang.

Oh well, tangan ini tidak memenangkan apa pun. Mungkin lain kali!
Permainan akan berlanjut sampai Anda berhenti atau kehabisan chip.
Untuk berhenti, ketik q atau e . Skor akhir Anda akan ditampilkan. Untuk memulai game baru, muat ulang halaman web.
Berikut adalah sembilan jenis tangan yang menang.

Dua kartu dengan nilai yang sama. Di sini, sepasang ratu ditampilkan.
Sebagian besar varian video poker hanya membayar ketika kartu adalah jack, ratu, raja, atau ace. Dengan demikian nama "jack atau lebih baik". Puluhan atau lebih baik juga membayar ketika pasangan itu dari puluhan. Tak satu pun dari tangan lain yang memiliki persyaratan minim ini.
Pembayaran untuk pasangan sama dengan jumlah taruhan Anda.

Dua pasangan berbeda di tangan yang sama. Contohnya menunjukkan sepasang 7s dan sepasang 5s.
Pembayaran untuk jack 9/6 atau lebih baik dua kali taruhan.

Tiga kartu dengan nilai yang sama. Tiga 9 adalah contoh yang ditampilkan.
Pembayaran untuk 9/6 jack atau lebih baik adalah 3 kali taruhan.

Lima kartu dengan nilai berturut -turut. Dalam hal ini, kartunya adalah 6, 7, 8, 9, dan 10.
Mereka dapat berupa pesanan di tangan yang ditampilkan.
ACE dapat dihitung sebagai salah satu (misalnya, ACE, 1, 2, 3, dan 4), atau nilai di atas raja. (Lihat contoh flush kerajaan untuk itu.)
Pembayaran untuk 9/6 jack atau lebih baik adalah 4 kali taruhan.

Semua kartu berada dalam setelan yang sama. Tangan ini menunjukkan flush di hati.
Pembayaran untuk 9/6 jack atau lebih baik adalah 6 kali taruhan.

Dua kartu bernilai satu, dan tiga kartu dengan nilai lain. Tangan ini memiliki 6s dan jack.
Pembayaran untuk 9/6 jack atau lebih baik adalah 9 kali taruhan.

Empat kartu semua nilai yang sama. Dalam hal ini, raja.
Pembayaran untuk 9/6 jack atau lebih baik adalah 25 kali taruhan.

Tangannya lurus dan rata. Tangan ini menunjukkan flush lurus di klub, dari 5 hingga 9.
Pembayaran untuk 9/6 jack atau lebih baik adalah 50 kali taruhan.

Ini hanyalah flush lurus setinggi ace (10, Jack, Queen, King, Ace). Contohnya menunjukkan flush royal di hati.
Pembayaran untuk 9/6 jack atau lebih baik adalah 800 kali taruhan.
Menggunakan keyboard memungkinkan untuk bermain game yang sangat cepat.
Mulailah permainan dan beristirahatlah di tangan kanan Anda di keyboard saat mengetik sentuh. Jempol Anda akan berada di bilah ruang angkasa, dan jari telunjuk Anda melalui jari kelingking akan berada di tombol j , k , l , dan titik koma ( ; ).
Menekan tombol Enter (atau Return) melakukan hal yang sama dengan mengklik tombol lebar di bawah lima kartu.
Untuk menahan atau tidak menahan kartu, ketik tombol yang sesuai dengan kartu:
SPACE Leftmost card
j Second card from left
k Middle card
l Second card from right
; Rightmost card
Kunci dapat diketik dalam urutan apa pun, dan kunci dapat dimasukkan lebih dari satu kali untuk beralih dari keadaan kartu yang dipegang/dibuang.
Kemudian ketik tombol Enter (Return) untuk menangani. Kartu yang dibuang adalah Redealt, dan tangan terakhir ditampilkan, bersama dengan bagaimana itu diakui sebagai tangan yang menang atau kehilangan, dan skor baru.
Anda dapat mengubah taruhan Anda sebelum tangan baru dibagikan. Untuk meningkatkan taruhan Anda dari default 10 chip, ketik satu digit dari 1 hingga 5 , bersama dengan kunci untuk menahan kartu. Misalnya, mengetik 3 akan mengubah taruhan Anda menjadi 30 chip.
Jika jumlah chip kurang dari taruhan, taruhan secara otomatis dikurangi untuk membuatnya sama dengan jumlah chip yang tersisa, di mana ia akan tetap sampai Anda mengubahnya.
Standarnya adalah 9/6 jack atau lebih baik, tetapi Anda dapat mengubahnya ke variasi lain dari permainan poker video dengan menekan tombol A - I Mengubah game memulai kembali game dengan 1000 chip.
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
Variasi memiliki aturan yang sedikit berbeda dan/atau tabel pembayaran. Untuk varian jack atau lebih baik, nomor pertama adalah pembayaran untuk rumah penuh, dan yang kedua adalah pembayaran untuk flush. Puluhan atau lebih baik membayar sepasang 10 -an atau lebih baik, dengan hanya pembayaran 6/5 untuk rumah penuh dan flush. Semua orang Amerika 8/8, bersama dengan pembayaran 8 kali untuk lurus.
Anda juga dapat memainkan game dalam mode teks dengan membuka alat pengembang browser dan bermain di konsol debug. Pastikan untuk mengklik di jendela halaman web (yaitu, latar belakang di belakang kartu) untuk menempatkan fokus keyboard di sana alih -alih di jendela Konsol Debug.
Ada banyak situs web di internet dengan petunjuk dan panduan strategi di video poker. Cari saja "strategi poker video" atau yang serupa.
Distribusi berisi file -file berikut yang mengimplementasikan game:
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)
Untuk pengujian lokal, ada server web di Go yang dapat dijalankan seperti ini:
$ go run webserver.go
Web server running. Listening on ":8080"
Pastikan Anda berada di direktori yang berisi file dalam daftar di atas, dan mulai server web.
Kemudian arahkan browser web Anda di http: // localhost: 8080 untuk menjalankan aplikasi.
Jika Anda ingin menggunakan game di server web yang dapat diakses publik, salin semua file dalam daftar ke server Anda. Server harus mendukung tipe MIME WASM. Untuk Apache 2, Anda mungkin perlu memasukkan baris ini dalam file .htaccess Anda:
AddType application/wasm wasm
Program WebAssembly, main.wasm , dapat dibangun dengan perintah berikut:
GOOS=js GOARCH=wasm go build -o main.wasm main.go videopoker-web.go
Mesin game ada di videopoker-web.go , dan antarmuka pengguna (dengan panggilan ke fungsi paket js ) ada di main.go
Ada Makefile dalam distribusi, jadi jika Anda telah make terpasang, Anda dapat menggunakan perintah berikut:
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.)
Readme ini untuk versi 1.0 program.
Jay TS
http://jayts.com
Hak Cipta 2016-2019 Jay TS
Dirilis di bawah Lisensi Publik GNU, Versi 3.0 (GPLV3) (http://www.gnu.org/licenses/gpl.html)