حاسبة الضرر لجميع أجيال من بوكيمون القتال.
إذا كنت تبحث حاليًا في Smogon/Darcy-Calc وليس شوكة ، فهذا هو المستودع الرسمي لمواجهة بوكيمون! حاسبة الضرر: https://calc.pokemonshowdown.com.
يضم هذا المستودع كل من الحزمة التي تنفذ ميكانيكا صيغة الأضرار الأساسية في كل جيل ( @smogon/calc
) بالإضافة إلى المنطق والارتياح لوزارة واجهة المستخدم الرسمية.
@smogon/calc
تعمل حزمة @smogon/calc
على تشغيل واجهة المستخدم ، مما يوفر واجهة برمجية لنطاقات حوسبة الأضرار. تحتوي الحزمة الفرعية هذه على رمز سيتم تشغيله على كل من الخادم أو المتصفح ويمكن استخدامه كبلاط بناء لوضع واجهة المستخدم البديلة أو التطبيقات.
$ npm install @smogon/calc
بدلاً من ذلك ، كما هو مفصل أدناه ، إذا كنت تستخدم @smogon/calc
في المتصفح وتريد طريقة مريحة للبدء ، فما عليك سوى الاعتماد على نسخة مُنقل ومُحيرة عبر unpkg:
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script >
في هذا المثال ، يتم تضمين رمز @smogon/calc/data
أيضًا للوفاء بمتطلبات طبقة بيانات CALC. بدلاً من ذلك ، يمكن استخدام طبقة بيانات أكثر اكتظاظًا تمامًا مثل @pkmn/data
بدلاً من ذلك ، انظر أدناه.
@smogon/calc
تصدير جميع أنواع البيانات المطلوبة لإجراء حساب. تتطلب طرق calculate
:
Generation
يحتوي على معلومات حول ميكانيكا صيغة الضرر التي يجب تطبيقها وأين يمكن العثور على جميع البيانات المتعلقة بالجيل.Pokemon
(ملاحظة: هناك حاجة فقط للسمات ذات الصلة ، كل شيء آخر يجب أن يكون له افتراضات معقولة). يتطلب مُنشئ Pokemon
أيضًا Generation
لتوفير بيانات بوكيمون للجيل.Move
التي يستخدمها المهاجم (والتي تتطلب أيضًا حجة Generation
لتحديد بيانات الحركة إلى الجيل المعين).Field
يحتوي على معلومات حول حالة كل Side
. calculate
إرجاع كائن Result
الذي يحتوي على طرق لجلب لفات الأضرار ، والنطاقات ، والأوصاف ، ومعلومات الارتداد/الصرف ، إلخ.
import { calculate , Generations , Pokemon , Move } from '@smogon/calc' ;
const gen = Generations . get ( 5 ) ; // alternatively: const gen = 5;
const result = calculate (
gen ,
new Pokemon ( gen , 'Gengar' , {
item : 'Choice Specs' ,
nature : 'Timid' ,
evs : { spa : 252 } ,
boosts : { spa : 1 } ,
} ) ,
new Pokemon ( gen , 'Chansey' , {
item : 'Eviolite' ,
nature : 'Calm' ,
evs : { hp : 252 , spd : 252 } ,
} ) ,
new Move ( gen , 'Focus Blast' )
) ;
يأتي @smogon/calc
معبأة مع جميع البيانات المطلوبة لحساب الأضرار - بشكل افتراضي ، فإنه يعرض ذلك عبر كائن Generations
من @smogon/calc/data
. كاختصار ، يمكن أن تكون وسيطة Generation
المطلوبة بموجب calculate
، Pokemon
، Move
ببساطة رقم التوليد (على سبيل المثال. 5
) ، وسوف تتعامل مع الحصول على كائن Generation
الأجيال وراء الكواليس من طبقة البيانات التي تشحنها.
يجب أن تبقى البيانات في calc/data
متزامنة مع مواجهة بوكيمون. إذا كانت هناك مشكلة في بيانات CALC ، فيرجى إصلاحها في المحاكاة أولاً. بشكل عام ، ربما لا ينبغي أن تقوم بإجراء تعديلات يدوية لأي من ملفات البيانات ، وفي المستقبل ، من المحتمل أن يتم إنشاءها برمجيًا.
في بعض حالات الاستخدام المتقدمة ، قد ترغب في استخدام طبقة بيانات مختلفة مع الآلة الحاسبة. يمكن استخدام نقطة الدخول @smogon/calc/adaptable
مع أي طبقة بيانات تنفذ واجهة Generations
Calc. هذه الواجهة عبارة عن مجموعة فرعية من واجهة Generations
بـ @pkmn/data
، لذلك يمكن استخدام @pkmn/data
(التي تحتوي على جميع البيانات ذات الصلة التنافسية من مواجهة Pokémon) مع نقطة الدخول القابلة للتكيف للتطبيقات التي ترغب في تجنب وجود مجموعتين منفصلتين من نفس البيانات التي يتم شحنها للمستخدمين.
import { Dex } from '@pkmn/dex' ;
import { Generations } from '@pkmn/data' ;
import { calculate , Pokemon , Move , Field } from '@smogon/calc/adaptable' ;
const gens = new Generations ( Dex ) ;
const gen = gens . get ( 1 ) ;
const result = calculate (
gen ,
new Pokemon ( gen , 'Gengar' ) ,
new Pokemon ( gen , 'Vulpix' ) ,
new Move ( gen , 'Surf' ) ,
new Field ( { defenderSide : { isLightScreen : true } } )
) ;
تتمثل الطريقة الموصى بها لاستخدام @smogon/calc
في متصفح الويب في تكوين Bundler (WebPack ، Rollup ، Parcel ، إلخ) لتقليله إلى الحد الأدنى مع بقية التطبيق الخاص بك. إذا لم تستخدم Bundler ، يتم تضمين production.min.js
في الحزمة. تحتاج ببساطة إلى الاعتماد على ./node_modules/@smogon/calc/production.min.js
في علامة script
(وهو ما يفعله اختصار UNPKG أعلاه) ، وبعد ذلك سيكون من الممكن الوصول calc
كعالم عالمي. يجب أن يكون لديك أيضًا تطبيق Generations
، يمكنك إما الاعتماد على طبقة بيانات الحاسبة من خلال الاعتماد على ./node_modules/@smogon/calc/data/production.min.js
(أو @smogon/calc/data
عبر unpkg) أو يمكنك استخدام طبقة بيانات بديلة مثل @pkmn/data
. يجب عليك تحميل طبقة البيانات الخاصة بك قبل تحميل calc:
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script >
طبقة واجهة المستخدم حاليا مكتوبة في الفانيليا جافا سكريبت و HTML. لعرض واجهة المستخدم محليًا ، يجب عليك أولاً تثبيت التبعيات عن طريق تشغيل npm install
في المستوى العلوي وبدون calc/
. هذا يجب أن ينشئ node_modules/
folder ضمن كل من الدليل الجذر وتحت calc/
:
$ npm install
$ cd calc && npm install
بعد ذلك ، قم بتشغيل node build
من الدليل الجذر لاستنساخك لهذا المستودع. يجب أن يعمل هذا على تشغيل npm run compile
في calc/
subdirectory لتجميع حزمة @smogon/calc
من TypeScript إلى javaScript التي يمكن تشغيلها في المتصفح ، ثم تجميع "templated 'html ونسخ كل شيء في dist/
المجلد . لعرض واجهة المستخدم بعد ذلك ، افتح dist/index.html
- ما عليك سوى النقر نقرًا مزدوجًا على الملف من واجهة المستخدم الخاصة بنظام التشغيل الخاص بنظام التشغيل ، يجب فتحه في متصفحك الافتراضي.
$ node build
$ open dist/index.html # open works on macOS, simply double-clicking the file on Windows/macOS works
إذا قمت بإجراء تغييرات على أي شيء في calc/
، فيجب عليك تشغيل node build
من المستوى الأعلى لتجميع الملفات ونسخها إلى dist/
مرة أخرى. إذا قمت بإجراء تغييرات على HTML أو JavaScript في src/
يجب تشغيل node build view
قبل أن تصبح التغييرات مرئية في متصفحك (يعمل node build
أيضًا ، لكنه أبطأ ، حيث سيتم تجميع calc/
أيضًا ، وهو أمر غير ضروري أيضًا إذا لم تقم بإجراء أي تغييرات على هذا الدليل).
قبل فتح طلب سحب ، يرجى التأكد من تمريرات npm test
:
$ npm test
يضم هذا المستودع أيضًا حزمة داخلية ضمن import/
يتم استخدامها لملء بيانات مجموعات Pokémon (وكذلك بيانات حول خيارات المعركة العشوائية) التي يستخدمها واجهة المستخدم. قبل إجراء تغييرات هنا ، يجب تشغيل npm install
من أسفل import/
الدليل لتثبيت تبعياته لأنه لم يتم تثبيته بشكل افتراضي. تحتوي TASKS.md
على مزيد من المعلومات حول كيفية التحديث برمجيًا.
تم إنشاء هذا المشروع بواسطة Honko ويتم الحفاظ عليه بشكل أساسي من قبل أوستن وجيتو.
أضاف العديد من المساهمين الآخرين ميزات أو إصلاحات الأخطاء المساهمة ، يرجى الاطلاع على القائمة الكاملة للمساهمين.
يتم توزيع هذه الحزمة بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا.