ด้วยการเปิดตัวเวอร์ชัน 1.11 ในเดือนสิงหาคมปี 2018 GO มาพร้อมกับการสนับสนุนเบื้องต้นสำหรับ WebAssembly ช่วยให้สามารถใช้สำหรับการพัฒนาเว็บฝั่งไคลเอ็นต์ ("Front End") WebAssembly อนุญาตให้ภาษาอื่นนอกเหนือจาก JavaScript เพื่อควบคุมเว็บเบราว์เซอร์และทำงานเป็นรหัสคอมไพล์เนทีฟที่มีการดำเนินการอย่างมีประสิทธิภาพ
วิธีพื้นฐานที่ใช้งานได้คือคอมไพเลอร์ GO สร้างรูปแบบ webAssembly แทนที่จะใช้งานได้ทั่วไป เมื่อเบราว์เซอร์โหลดรูปแบบ webAssembly มันจะถูกรวบรวมอย่างรวดเร็วเป็นรหัสเครื่องเนทีฟและดำเนินการ
มีเหตุผลที่ดีมากสำหรับการเลือกใช้ไปแทน JavaScript รวมถึงการพิมพ์และประสิทธิภาพแบบคงที่ของ GO เนื่องจากเป็นภาษาที่รวบรวมข้อผิดพลาดการเขียนโปรแกรมส่วนใหญ่สามารถจับได้โดย GO Compiler แทนที่จะพบเฉพาะเมื่อโปรแกรมกำลังทำงานและเกิดขึ้นเพื่อเรียกใช้ส่วนของรหัสที่มีข้อบกพร่อง GO ได้รับการออกแบบมาสำหรับการเกิดพร้อมกันดังนั้นคุณจะไม่ต้องจัดการกับสัญญาและโครงสร้างอื่น ๆ ที่เพิ่มเข้ามาใน JavaScript เพื่อให้มีประโยชน์สำหรับการเขียนโปรแกรมเว็บที่ทันสมัย
ฉันอยากรู้อยากเห็นเกี่ยวกับเทคโนโลยีและเมื่อฉันเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ฉันสังเกตเห็นฉันทามติที่ท่วมท้นว่า WebAssembly จะกลายเป็นเทคโนโลยีที่ได้รับความนิยมและสำคัญมากสำหรับการพัฒนาเว็บ มีแผนมากมายสำหรับเทคโนโลยีและได้รับการพัฒนาอย่างรวดเร็วโดยการทำงานร่วมกันที่เกี่ยวข้องกับ Mozilla, Google และอื่น ๆ นักพัฒนาเบราว์เซอร์รายใหญ่ทั้งหมดประกาศการสนับสนุนสำหรับ WebAssembly ในปี 2560 และนี่คือใหม่มาก มันใช้งานได้หรือไม่?
ฉันตัดสินใจลองดู ฉันมีเกมโป๊กเกอร์วิดีโอที่ฉันเขียนใน C เมื่อสองปีก่อนและต่อมาแปลเป็นทั้ง JavaScript และ Go ฉันแก้ไขเวอร์ชัน Go เพื่อเป็นแรงผลักดันเหตุการณ์จากนั้นเขียนอินเตอร์เฟส WebAssembly เพื่อแปลงเป็นเว็บแอป
ด้วยการสนับสนุนการประกอบเว็บของ Go เป็นเรื่องใหม่ฉันคาดว่าจะมีปัญหามากมาย แต่ฉันไม่ได้! ฉันรู้สึกโล่งใจที่พบว่าแม้จะมีเอกสารแพคเกจพื้นฐานและตัวอย่างง่ายๆสองสามอย่างที่จะใช้เป็นจุดเริ่มต้น แต่ก็ไม่ยากที่จะทำให้สิ่งต่าง ๆ ทำงานได้และทุกอย่างดูเหมือนจะทำงานได้อย่างสมบูรณ์แบบ หากนี่คือสิ่งที่การเขียนโปรแกรม WebAssembly ใน GO เป็นเหมือนการเปิดตัวครั้งแรกฉันกระตือรือร้นมากเกี่ยวกับอนาคตของมัน
ในรุ่นปัจจุบัน Video Poker แสดงการใช้แอปพลิเคชันฝั่งไคลเอ็นต์เพื่อใช้แอป MVC (Model-View-Control) แอปพลิเคชัน เอ็นจิ้นเกมใน videopoker-web.go ใช้โมเดล มุมมองได้รับการจัดการโดยอินเทอร์เฟซ WebAssembly ใน main.go ที่จัดการกับ DOM ส่งผลให้เกิดการอัปเดตในเว็บเบราว์เซอร์และการควบคุมคือการคลิกเมาส์และปุ่มพิมพ์ในหน้าต่างเบรา main.go พร้อมกับการจัดการเหตุการณ์และการเรียกกลับใน HTML
ทุกอย่างเขียนขึ้นใน GO และฉันไม่จำเป็นต้องเขียน JavaScript บรรทัดเดียว เจ๋งแค่ไหน.
สิ่งนี้ได้รับการปรับปรุงให้ทำงานกับ GO เวอร์ชัน 1.12 ซึ่งแนะนำการเปลี่ยนแปลงของ WebAssembly API ในแพ็คเกจ SYSCALL/JS
การเปิดตัวนี้สำหรับปลายเดือนกุมภาพันธ์ 2019 เครื่องยนต์ของเกมใช้งานได้และคุณสามารถดูแอป GO/WebAssembly ที่เรียบง่ายได้
ฉันอาจไม่ได้ทำงานตลอดเวลา แต่เพื่อเล่นเกมคุณสามารถลองใช้หน้าเว็บนี้:
http://jayts.com/vp
คำอธิบายของเกมและเส้นทางสำหรับการเล่นอยู่ด้านล่าง
มีพฤติกรรมแปลก ๆ ที่คุณอาจสังเกตเห็นในแอพ:
แอพทำงานได้ดีกับเว็บเบราว์เซอร์เดสก์ท็อป (Firefox, Chrome, Opera และ Safari) แต่การรองรับอุปกรณ์มือถือมี จำกัด คุณอาจต้องรอไม่กี่วินาที (นานถึง 15 วินาทีสำหรับ Firefox บนแท็บเล็ตเก่าของฉัน) เพื่อให้เกมโหลด
บนอุปกรณ์มือถือแอปอาจไม่โหลดอย่างถูกต้องเมื่อเริ่มต้นแอปครั้งแรกหรือเมื่อหน้าถูกโหลดใหม่ (รีเฟรช) เมื่อล้มเหลวข้อความแสดงข้อผิดพลาดจะปรากฏในข้อความสีน้ำตาลด้านล่างบรรทัดชื่อ "วิดีโอโป๊กเกอร์" ข้อบกพร่องนี้ดูเหมือนจะเหมือนกับปัญหา #27462: Golang/Go #27462
Firefox สำหรับ Android ล้มเหลวด้วยข้อผิดพลาด ข้อผิดพลาดการโหลด webAssembly - ออกจากหน่วยความจำ และ browswers ที่ใช้โครเมียม (Google Chrome และ Opera) ล้มเหลวด้วย การโหลดข้อผิดพลาด webAssembly - RangeRor: การสร้างอินสแตนซ์ WebAssembly: หน่วยความจำ: WASM หน่วยความจำ
หากสิ่งนี้เกิดขึ้นกับคุณลองรีสตาร์ทเบราว์เซอร์และอย่าเปิดหน้าเว็บอื่น ๆ นอกเหนือจากแอพวิดีโอโป๊กเกอร์ สิ่งนี้มักจะประสบความสำเร็จกับ Firefox สำหรับ Android
เมื่อ AQ ("เลิก") หรือ E ("Exit") Keypress เกมแสดงข้อความจบเกมจากนั้นหยุดและไม่ตอบสนองอย่างสมบูรณ์ นั่นเป็นเพราะโปรแกรม GO ออก นี่คือการถือครองจากเวอร์ชันคอนโซลและจะทำงานได้อย่างสง่างามมากขึ้นในการเปิดตัวในอนาคต (กล่าวอีกนัยหนึ่งนี่ไม่ใช่ปัญหากับ GO/WebAssembly)
สำหรับตอนนี้โหลดหน้าใหม่เพื่อเริ่มเกมใหม่
Video Poker เป็นเกมคาสิโนยอดนิยมที่ใช้โป๊กเกอร์การวาดห้าใบ
ผู้เล่นได้รับการจัดการไพ่ห้าใบและได้รับอนุญาตให้ทิ้งใด ๆ หรือทั้งหมด (ที่จริงแล้วผู้เล่นระบุว่าจะถือไพ่ใด) การ์ดที่ถูกทิ้งจะถูกแทนที่ด้วยการ์ดที่จัดการจากเด็ค วัตถุประสงค์คือการได้รับมือที่ชนะ มีมือที่ชนะเก้าชนิด แต่ละคนมีความน่าจะเป็นที่แตกต่างกันโดยมีจำนวนที่จะเพิ่มขึ้นด้วยความไม่น่าจะเป็นไปได้ที่สูงขึ้นของมือ
เป็นวิธีที่ยอดเยี่ยมในการฝึกฝนกลยุทธ์ของคุณเพื่อความสนุกสนานหรือก่อนที่จะไปคาสิโน
วิดีโอโป๊กเกอร์หลายรุ่นรวมอยู่ในตัวเลือก (สามารถเข้าถึงได้ในปัจจุบันจากแป้นพิมพ์โดยใช้ปุ่ม AI) จ่ายน้อยกว่าค่าเริ่มต้นซึ่งก็คือแจ็ค 9/6 หรือดีกว่า
โดยค่าเริ่มต้นวิดีโอโป๊กเกอร์มีวัตถุประสงค์เพื่อให้ตรงกับพฤติกรรมของแจ็ค 9/6 หรือเครื่องวิดีโอโป๊กเกอร์ที่ดีกว่าในคาสิโนและตัวเลือกอนุญาตให้เลือกเกมอื่น ๆ และตารางจ่าย อย่างไรก็ตามผู้เขียนไม่ได้เป็นผู้เชี่ยวชาญเกี่ยวกับการเล่นเกมและไม่มีการรับประกันใด ๆ ที่ทำให้พฤติกรรมของวิดีโอโป๊กเกอร์ตรงกับวิดีโอโป๊กเกอร์อื่น ๆ โปรดพิจารณาอย่างรอบคอบก่อนที่จะลองใช้เครื่องโป๊กเกอร์วิดีโอจริง
เริ่มต้นคุณอาจเห็นหน้าจอต่อไปนี้:

รอเพียงไม่กี่วินาทีเพื่อให้เกมโหลดเสร็จ หากอุปกรณ์ของคุณเก่ามากหรือช้าธรรมดาอาจใช้เวลาถึง 15 วินาที อุปกรณ์ที่ทันสมัยจะโหลดเกมในเวลาน้อยกว่าหนึ่งวินาที
เมื่อเกมโหลดเต็มคุณจะเห็นหน้าจอนี้

คลิกที่ปุ่ม Deal New Hand เพื่อดูมือแรกของคุณ
คะแนนของคุณลดลง 10 ครั้งทุกครั้งที่คุณจัดการมือใหม่เพราะนั่นคือการเดิมพันเท่าไหร่

ตอนนี้คุณสามารถคลิกที่การ์ดที่คุณต้องการค้างไว้ แถบสีเขียวปรากฏขึ้นใต้การ์ดแต่ละใบ หากคุณคลิกอีกครั้งมันจะ "ไม่ถือ" การ์ดและแถบสีเขียวก็หายไป

จากนั้นคลิกที่ปุ่ม Draw Cards เพื่อแทนที่การ์ดที่คุณต้องการทิ้ง

โอ้มือนี้ไม่ชนะอะไรเลย อาจจะเป็นครั้งต่อไป!
เกมจะดำเนินต่อไปจนกว่าคุณจะเลิกหรือหมดชิป
หากต้องการเลิกพิมพ์ q หรือ e คะแนนสุดท้ายของคุณจะปรากฏขึ้น ในการเริ่มเกมใหม่ให้โหลดหน้าเว็บใหม่
นี่คือมือที่ชนะเก้าประเภท

การ์ดสองใบที่มีค่าเดียวกัน ที่นี่มีการแสดงคู่ของควีนส์
Video Poker ส่วนใหญ่จ่ายเฉพาะเมื่อการ์ดเป็นแจ็ค, ควีนส์, กษัตริย์หรือเอซ ดังนั้นชื่อ "แจ็คหรือดีกว่า" สิบหรือดีกว่าก็จ่ายเมื่อทั้งคู่เป็นสิบ ไม่มีมืออื่นใดที่มีข้อกำหนดขั้นต่ำนี้
การจ่ายเงินสำหรับคู่นั้นเหมือนกับจำนวนเงินเดิมพันของคุณ

สองคู่ที่แตกต่างกันในมือเดียวกัน ตัวอย่างแสดงคู่ของ 7s และคู่ของ 5s
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพันสองครั้ง

การ์ดสามใบที่มีค่าเดียวกัน สาม 9S เป็นตัวอย่างที่แสดง
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพัน 3 ครั้ง

การ์ดห้าใบที่มีค่าติดต่อกัน ในกรณีนี้การ์ดคือ 6, 7, 8, 9 และ 10
พวกเขาสามารถเป็นคำสั่งใด ๆ ในมือที่แสดง
เอซสามารถนับได้ว่าเป็นหนึ่ง (ตัวอย่างเช่นเอซ, 1, 2, 3 และ 4) หรือค่าที่สูงกว่ากษัตริย์ (ดูตัวอย่างของการล้างราชวงศ์สำหรับสิ่งนั้น)
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพัน 4 เท่า

การ์ดทั้งหมดอยู่ในชุดสูทเดียวกัน มือนี้แสดงให้เห็นถึงการล้างในหัวใจ
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพัน 6 เท่า

การ์ดสองใบที่มีค่าหนึ่งและไพ่สามใบของค่าอื่น มือนี้มี 6s และแจ็ค
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพัน 9 เท่า

การ์ดสี่ใบมีค่าเดียวกันทั้งหมด ในกรณีนี้กษัตริย์
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือ 25 เท่าของการเดิมพัน

มือเป็นทั้งตรงและฟลัช มือนี้แสดงให้เห็นถึงการล้างตรงในคลับจาก 5 ถึง 9
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพัน 50 เท่า

นี่เป็นเพียงการล้างสูงเอซ (10, แจ็ค, ราชินี, ราชา, เอซ) ตัวอย่างแสดงให้เห็นถึงการล้างราชวงศ์ในหัวใจ
การจ่ายเงินสำหรับแจ็ค 9/6 หรือดีกว่าคือการเดิมพัน 800 เท่า
การใช้แป้นพิมพ์ช่วยให้เล่นเกมได้อย่างรวดเร็ว
เริ่มเกมและวางนิ้วมือขวาของคุณบนแป้นพิมพ์เหมือนเมื่อสัมผัสการพิมพ์ นิ้วหัวแม่มือของคุณจะอยู่บนแถบอวกาศและนิ้วชี้ของคุณผ่านนิ้วก้อยจะอยู่บนปุ่ม j , k , l และ Semicolon ( ; )
การกดปุ่ม ENTER (หรือ return) ทำสิ่งเดียวกันกับการคลิกที่ปุ่มกว้างด้านล่างการ์ดห้าใบ
หากต้องการถือหรือไม่ถือการ์ดให้พิมพ์คีย์ที่สอดคล้องกับการ์ด:
SPACE Leftmost card
j Second card from left
k Middle card
l Second card from right
; Rightmost card
คีย์อาจพิมพ์ได้ในลำดับใด ๆ และสามารถป้อนคีย์ได้มากกว่าหนึ่งครั้งเพื่อสลับสถานะที่ถือ/ทิ้งของการ์ด
จากนั้นพิมพ์ปุ่ม ENTER (return) เพื่อจัดการ การ์ดที่ถูกทิ้งจะถูก redealt และมือสุดท้ายจะปรากฏขึ้นพร้อมกับวิธีการที่ได้รับการยอมรับว่าเป็นทั้งการชนะหรือสูญเสียมือและคะแนนใหม่
คุณอาจเปลี่ยนการเดิมพันก่อนที่จะมีการจัดการมือใหม่ ในการเพิ่มการเดิมพันของคุณจากค่าเริ่มต้นของชิป 10 ชิปให้พิมพ์ตัวเลขจาก 1 เป็น 5 พร้อมกับกุญแจที่จะถือการ์ด ตัวอย่างเช่นการพิมพ์ 3 จะเปลี่ยนการเดิมพันของคุณเป็น 30 ชิป
หากจำนวนชิปน้อยกว่าการเดิมพันการเดิมพันจะลดลงโดยอัตโนมัติเพื่อให้เท่ากับจำนวนชิปที่เหลืออยู่ซึ่งจะยังคงอยู่จนกว่าคุณจะเปลี่ยน
ค่าเริ่มต้นคือแจ็ค 9/6 หรือดีกว่า แต่คุณสามารถเปลี่ยนเป็นเกมโป๊กเกอร์วิดีโอรูปแบบอื่นได้โดยกดปุ่ม A - I การเปลี่ยนเกมรีสตาร์ทเกมด้วยชิป 1,000 ชิป
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
รูปแบบมีกฎและ/หรือตารางจ่ายที่แตกต่างกันเล็กน้อย สำหรับสายพันธุ์ของแจ็คหรือดีกว่าหมายเลขแรกคือการจ่ายเงินสำหรับบ้านเต็มและที่สองคือการจ่ายเงินสำหรับการล้าง สิบหรือดีกว่าจ่ายสำหรับคู่ของ 10s หรือดีกว่าโดยมีเพียง 6/5 การจ่ายเงินสำหรับบ้านเต็มและล้าง ชาวอเมริกันทุกคนคือ 8/8 พร้อมด้วยการจ่ายเงิน 8 ครั้งสำหรับตรง
นอกจากนี้คุณยังสามารถเล่นเกมในโหมดข้อความได้โดยเปิดเครื่องมือนักพัฒนาของเบราว์เซอร์และเล่นในคอนโซลดีบั๊ก ตรวจสอบให้แน่ใจว่าคลิกในหน้าต่างของหน้าเว็บ (นั่นคือพื้นหลังด้านหลังการ์ด) เพื่อให้แป้นพิมพ์โฟกัสอยู่ที่นั่นแทนที่จะอยู่ในหน้าต่างคอนโซลดีบั๊ก
มีเว็บไซต์มากมายบนอินเทอร์เน็ตที่มีคำแนะนำและคู่มือกลยุทธ์เกี่ยวกับวิดีโอโป๊กเกอร์ เพียงค้นหา "กลยุทธ์วิดีโอโป๊กเกอร์" หรือสิ่งที่คล้ายกัน
การกระจายมีไฟล์ต่อไปนี้ที่ใช้เกม:
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)
สำหรับการทดสอบในพื้นที่มีเว็บเซิร์ฟเวอร์ใน GO ที่สามารถเรียกใช้ได้เช่นนี้:
$ go run webserver.go
Web server running. Listening on ":8080"
ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเรกทอรีที่มีไฟล์ในรายการด้านบนและเริ่มต้นเว็บเซิร์ฟเวอร์
จากนั้นชี้เว็บเบราว์เซอร์ของคุณที่ http: // localhost: 8080 เพื่อเรียกใช้แอพ
หากคุณต้องการปรับใช้เกมบนเว็บเซิร์ฟเวอร์ที่เข้าถึงได้สาธารณะคัดลอกไฟล์ทั้งหมดในรายการไปยังเซิร์ฟเวอร์ของคุณ เซิร์ฟเวอร์ต้องรองรับประเภท MIME WASM สำหรับ Apache 2 คุณอาจต้องรวมบรรทัดนี้ไว้ในไฟล์ .htaccess ของคุณ:
AddType application/wasm wasm
โปรแกรม WebAssembly, main.wasm สามารถสร้างได้ด้วยคำสั่งต่อไปนี้:
GOOS=js GOARCH=wasm go build -o main.wasm main.go videopoker-web.go
เอ็นจิ้นเกมอยู่ใน videopoker-web.go และส่วนต่อประสานผู้ใช้ (พร้อมฟังก์ชั่นการโทรไปยัง js Package) อยู่ใน main.go
มี Makefile ในการแจกแจงดังนั้นหากคุณ make ตั้งคุณสามารถใช้คำสั่งต่อไปนี้:
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 นี้ใช้สำหรับเวอร์ชัน 1.0 ของโปรแกรม
Jay ts
http://jayts.com
ลิขสิทธิ์ 2016-2019 Jay TS
เปิดตัวภายใต้ใบอนุญาตสาธารณะ GNU เวอร์ชัน 3.0 (gplv3) (http://www.gnu.org/licenses/gpl.html)