مع إصدار الإصدار 1.11 في أغسطس من عام 2018 ، جاء GO مع دعم أولي لـ Webassembly ، مما يسمح باستخدامه لتطوير الويب من جانب العميل ("الواجهة الأمامية"). يسمح Webassembly لغات أخرى غير JavaScript بالتحكم في متصفح الويب ، ويعمل على أنه رمز محلي تنصيب بكفاءة.
الطريقة الأساسية التي تعمل بها هي أن برنامج التحويل البرمجي GO ينتج تنسيقًا على الويب بدلاً من التنفيذ الأصلي. عندما يتم تحميل تنسيق webassembly بواسطة المتصفح ، يتم تجميعه بسرعة إلى رمز الجهاز الأصلي وتنفيذه.
هناك بعض الأسباب الجيدة جدًا لفضح استخدام GO بدلاً من JavaScript ، بما في ذلك الكتابة الثابتة والكفاءة. نظرًا لأنها لغة مجمعة ، يمكن اكتشاف معظم أخطاء البرمجة بواسطة برنامج التحويل البرمجي GO ، بدلاً من العثور عليها فقط عند تشغيل البرنامج ويحدث تنفيذ جزء من الكود الذي يحتوي على الخلل. تم تصميم GO من أجل التزامن ، لذلك لن تضطر أبدًا إلى التعامل مع الوعود وغيرها من التركيبات التي تمت إضافتها إلى JavaScript لجعلها مفيدة لبرمجة الويب الحديثة.
كنت مهتمًا بالتكنولوجيا ، وكما تعلمت المزيد عنها ، لاحظت إجماعًا ساحقًا على أن Webassembly ستصبح بسرعة تقنية شائعة للغاية ومهمة لتطوير الويب. هناك العديد من الخطط للتكنولوجيا ، ويتم تطويرها بسرعة من خلال التعاون الذي يشمل Mozilla و Google وغيرها. أعلن جميع مطوري المستعرضين الرئيسيين عن دعمه لـ Webassembly في عام 2017 ، وهذا كله جديد للغاية. فهل يعمل؟
قررت أن أجربها. كان لدي لعبة بوكر فيديو كتبت في C قبل عامين وترجمت لاحقًا إلى كل من JavaScript و Go. لقد قمت بتعديل إصدار GO ليتم تشغيله ، ثم كتبت واجهة Webassembly لتحويلها إلى تطبيق ويب.
مع وجود دعم Go's Webassembly جديدًا جدًا ، توقعت أن أواجه الكثير من المشكلات. لكني لم أفعل! لقد شعرت بالارتياح لتجد أنه حتى مع وثائق الحزمة الأساسية فقط وبعض الأمثلة البسيطة للغاية لاستخدامها كنقطة انطلاق ، لم يكن من الصعب للغاية عمل الأشياء ، ويبدو أن كل شيء يعمل بشكل مثالي تقريبًا. إذا كان هذا هو ما يبدو عليه برمجة WebAssembly في الإصدار الأول ، فأنا متحمس للغاية لمستقبلها.
في الإصدار الحالي ، يعرض Video Poker استخدام تطبيق الويب MVC (MODER-View-Control). محرك اللعبة ، في videopoker-web.go ، ينفذ النموذج. تتم معالجة طريقة العرض من خلال واجهة Webassembly في main.go التي تتلاعب بـ DOM ، مما يؤدي إلى تحديثات في متصفح الويب ، والتحكم في نقرات الماوس والمفاتيح المكتوبة في نافذة المتصفح ، إلى جانب معالجة الأحداث وعمليات الاتصال في HTML وواجهة webassembly في main.go
كل شيء مكتوب في GO ، ولم أكن بحاجة إلى كتابة سطر واحد من JavaScript. كم هو رائع.
تم تحديث هذا للعمل مع GO الإصدار 1.12 ، والذي قدم تغييرات على واجهة برمجة تطبيقات webassembly في الحزمة syscall/js.
هذا الإصدار في أواخر فبراير 2019. يعمل محرك اللعبة ، ويمكنك رؤية تطبيق SOP SO/Webassembly بسيط.
قد لا أقوم بتشغيله في جميع الأوقات ، ولكن لتشغيل اللعبة ، يمكنك تجربة صفحة الويب هذه:
http://jayts.com/vp
وصف للعبة واتجاهات اللعب أدناه.
هناك بعض السلوكيات الغريبة التي قد تلاحظها في التطبيق:
يعمل التطبيق بشكل جيد مع متصفحات الويب على سطح المكتب (Firefox و Chrome و Opera و Safari) ، ولكن الدعم على الأجهزة المحمولة محدودة. قد تحتاج إلى الانتظار ببعض الثواني (حتى 15 ثانية لـ Firefox على جهاز الكمبيوتر اللوحي القديم) حتى يتم تحميل اللعبة.
على الأجهزة المحمولة ، قد لا يتم تحميل التطبيق بشكل صحيح إما عند بدء تشغيل التطبيق لأول مرة ، أو عند إعادة تحميل الصفحة (تم تحديثها). عندما تفشل ، يتم عرض رسالة خطأ في النص البني أسفل سطر عنوان "Video Poker". يبدو أن هذا الخطأ هو نفسه القضية رقم 27462: Golang/Go #27462
فشل Firefox for Android مع خطأ رسالة الأخطاء في تحميل Webassembly - خارج الذاكرة ، وفشل Browswers المستندة إلى الكروم (Google Chrome و Opera) مع خطأ تحميل webassembly - RangeError: Webassembly Instantiation: Out of Memory: WASM Memory .
إذا حدث هذا لك ، فحاول إعادة تشغيل المتصفح ، ولا تفتح أي صفحات ويب أخرى إلى جانب تطبيق بوكر الفيديو. هذا غالبًا ما ينجح مع Firefox لنظام Android.
عند AQ ("Quit") أو E ("Exit") Keypress ، تعرض اللعبة رسالة نهاية اللعبة ، ثم تتوقف فقط وتصبح غير مستجيبة تمامًا. ذلك لأن برنامج GO خرج. هذا عقد من إصدار وحدة التحكم ، وسيعمل بشكل أكثر أناقة في إصدار مستقبلي. (بمعنى آخر ، هذه ليست مشكلة في GO/Webassembly.)
في الوقت الحالي ، أعد تحميل الصفحة لبدء لعبة جديدة.
Video Poker هي لعبة كازينو شهيرة تعتمد على لعبة البوكر السحمي من خمسة بطاقة.
يتم التعامل مع اللاعب خمس بطاقات ، ويُسمح له بتجاهل أي أو كلهم. (في الواقع ، يشير اللاعب إلى البطاقات التي سيتم عقدها.) يتم استبدال البطاقات المهملة بالبطاقات التي تم التعامل معها من سطح السفينة. الهدف هو الحصول على يد رابحة. هناك تسعة أنواع من الفوز. كل واحد لديه احتمال مختلف ، مع زيادة المبلغ مع عدم وجود غير ملائمة لليد.
إنها طريقة رائعة لممارسة استراتيجيتك للمتعة ، أو قبل الذهاب إلى كازينو.
يتم تضمين العديد من المتغيرات من لعبة البوكر بالفيديو كخيارات. (لا يمكن الوصول إليها حاليًا إلا من لوحة المفاتيح ، باستخدام مفاتيح الذكاء الاصطناعى.) يدفع عدد قليل من الافتراضي ، وهو 9/6 رافعات أو أفضل.
بشكل افتراضي ، تهدف لعبة البوكر للفيديو إلى مطابقة سلوك 9/6 مقبس أو آلات بوكر في الفيديو بشكل وثيق في الكازينوهات ، ويسمح خيار باختيار ألعاب أخرى وجداول الدفع. ومع ذلك ، فإن المؤلف ليس خبيرًا في الألعاب ، ولا يوجد أي ضمان على الإطلاق هو أن سلوك بوكر الفيديو هو مطابقة تمامًا مع أي لعبة بوكر فيديو أخرى. يرجى أخذ ذلك في دراسة متأنية قبل تجربة آلة البوكر فيديو حقيقية.
في البداية ، قد ترى الشاشة التالية:

فقط انتظر بضع ثوان حتى تنتهي اللعبة من التحميل. إذا كان جهازك قديمًا جدًا أو بطيئًا تمامًا ، فقد يستغرق ما يصل إلى 15 ثانية. سوف الأجهزة الحديثة تحميل اللعبة في أقل من ثانية.
عندما يتم تحميل اللعبة بالكامل ، سترى هذه الشاشة

انقر على زر Deal New Hand لمشاهدة يدك الأولى.
تنخفض درجاتك بمقدار 10 في كل مرة تتعامل فيها مع يد جديدة لأن هذا هو مقدار الرهان.

الآن يمكنك النقر على البطاقات التي تريد التمسك بها. يظهر شريط أخضر تحت كل بطاقة. إذا نقرت مرة أخرى ، فسيتم "إلغاء" البطاقة ، ويختفي الشريط الأخضر.

ثم انقر فوق زر Draw Cards لاستبدال البطاقات التي تريد تجاهلها.

حسنًا ، هذه اليد لم تفز بأي شيء. ربما في المرة القادمة!
ستستمر اللعبة حتى تترك أو تنفد من الرقائق.
للاستقالة ، اكتب إما q أو e . سيتم عرض درجاتك النهائية. لبدء لعبة جديدة ، إعادة تحميل صفحة الويب.
فيما يلي تسعة أنواع من الأيدي الفائزة.

بطاقتان من نفس القيمة. هنا ، يظهر زوج من الملكات.
تدفع معظم المتغيرات من لعبة البوكر بالفيديو فقط عندما تكون البطاقات هي الرافعات أو الملكات أو الملوك أو ACEs. وبالتالي اسم "الرافعات أو أفضل". عشرات أو أفضل أيضا يدفع عندما يكون الزوج من عشرات. لا يوجد أي من الأيدي الأخرى لديها هذا المتطلبات الدنيا.
إن الدفع للزوج هو نفس مبلغ رهانك.

زوجان مختلفان في نفس اليد. يوضح المثال زوج من 7s وزوج من 5s.
الدفع ل 9/6 الرافعات أو الأفضل هو ضعف الرهان.

ثلاث بطاقات من نفس القيمة. ثلاثة 9s هو المثال الموضح.
دفع مدفوعات 9/6 الرافعات أو الأفضل هو 3 أضعاف الرهان.

خمس بطاقات مع قيم متتالية. في هذه الحالة ، تكون البطاقات 6 و 7 و 8 و 9 و 10.
يمكن أن يكون أي طلب في اليد المعروضة.
يمكن حساب ACE كأحد (على سبيل المثال ، ACE ، 1 ، 2 ، 3 ، و 4) ، أو قيمة فوق الملك. (انظر مثال التدفق الملكي لذلك.)
الدفع ل 9/6 الرافعات أو الأفضل هو 4 أضعاف الرهان.

جميع البطاقات في نفس الدعوى. هذه اليد تظهر تدفق في القلوب.
الدفع ل 9/6 الرافعات أو الأفضل هو 6 أضعاف الرهان.

بطاقتان بقيمة واحدة ، وثلاث بطاقات ذات قيمة أخرى. هذه اليد لديها 6s والرافعات.
الدفع ل 9/6 الرافعات أو الأفضل هو 9 أضعاف الرهان.

أربع بطاقات كل نفس القيمة. في هذه الحالة ، الملوك.
الدفع لـ 9/6 الرافعات أو الأفضل هو 25 ضعف الرهان.

اليد على حد سواء مستقيم وتدفق. تُظهر هذه اليد تدفقًا مستقيمًا في الأندية ، من 5 إلى 9.
الدفع ل 9/6 الرافعات أو الأفضل هو 50 ضعف الرهان.

هذا ببساطة تدفق مستقيم Ace (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
يمكن كتابة المفاتيح بأي ترتيب ، ويمكن إدخال مفتاح أكثر من مرة لتبديل الحالة التي يتم الاحتفاظ بها/المهملة للبطاقة.
ثم اكتب مفتاح إدخال (إرجاع) للتعامل. البطاقات المهملة هي redealt ، ويتم عرض اليد النهائية ، إلى جانب كيفية الاعتراف بها إما على أنها رابحة أو خاسرة ، والنتيجة الجديدة.
يمكنك تغيير رهانك قبل التعامل مع يد جديدة. لزيادة رهانك من الافتراضي من 10 رقائق ، اكتب رقمًا من 1 إلى 5 ، إلى جانب مفاتيح الاحتفاظ بالبطاقات. على سبيل المثال ، ستغير كتابة 3 رهانك إلى 30 رقائق.
إذا كان عدد الرقائق أقل من الرهان ، يتم تقليل الرهان تلقائيًا لجعله مساوياً لعدد الرقائق المتبقية ، حيث ستبقى حتى تقوم بتغييره.
الافتراضي هو 9/6 مقبس أو أفضل ، ولكن يمكنك تغييره إلى تباين آخر في لعبة البوكر بالفيديو من خلال الضغط على مفاتيح A - I تغيير اللعبة يعيد تشغيل اللعبة مع 1000 رقائق.
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
الاختلافات لها قواعد مختلفة قليلاً و/أو جداول الدفع. بالنسبة لمتغيرات الرافعات أو أفضل ، فإن الرقم الأول هو دفع تعويضات المنزل الكامل ، والثاني هو دفع تعويضات التدفق. TENS أو أفضل يدفع لزوج من 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 ) في 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 من البرنامج.
جاي تي
http://jayts.com
حقوق الطبع والنشر 2016-2019 Jay TS
تم إصداره تحت رخصة GNU العامة ، الإصدار 3.0 (GPLV3) (http://www.gnu.org/licenses/gpl.html)