ব্যাকরণগতভাবে এমওডি-শৈলীর আক্রমণ সম্পর্কিত বিবরণ তৈরি করা


13

আমি বর্তমানে একটি পাঠ্য ভিত্তিক গেমের সাথে কাজ করছি, যেখানে লড়াইয়ের রাউন্ডের ফলাফলটি এরকম কিছু হয়

%attacker% inflicts a serious wound (12 points damage) on %defender%

এই মুহুর্তে, আমি কেবল আক্রমণকারী% এবং আক্রমণকারীর নামের সাথে% ডিফেন্ডার% নিয়ে আছি। তবে বর্ণনাটি কাজ করে তবে সঠিকভাবে পড়বেন না read যেহেতু গেমটি কেবলমাত্র সমস্ত পাঠ্য, তাই আমি জেনেরিক বিবরণ অবলম্বন করতে চাই না (যেমন "আপনি 5 টি ক্ষতিতে গোব্লিনের উপর আক্রমণ ব্যবহার করেন", যা তর্কাতীতভাবে সমস্যার সমাধান করে)

যেখানে% আক্রমণকারী% উল্লেখ করেছে সেই ক্ষেত্রে আমি কীভাবে সঠিক বিবরণ তৈরি করতে পারি

  • "আপনি", প্লেয়ার? "আপনি চাপ দিন ..." ভুল
  • "মৌমাছি", বা অন্যান্য বহুবচন? নামটি একটি "" "দিয়ে উপসর্গ করা উচিত আমার কোনওভাবে জানতে হবে
  • যদি% আক্রমণকারী% জেনেরিক বিশেষ্য হয়, যেমন "গোব্লিন", এটি% আক্রমণকারী% নাম থাকার বিপরীতে অদ্ভুত পড়বে। "গাবলিন ক্ষতিগ্রস্থ ..." বনাম "অ্যালডেরিক সোর্ডব্রিংগার আটকায় ...." তুলনা করুন

পাঠ্য-ভিত্তিক গেমগুলি সাধারণত এই জাতীয় সমস্যাগুলি কীভাবে সমাধান করে?

উত্তর:


15

% আক্রমণকারী% পদ্ধতির অবজেক্টের নাম বাদে কিছু তথ্য অন্তর্ভুক্ত করার জন্য বাড়ানো যেতে পারে:

  1. ক্রিয়াটি একক বা বহুবচন হতে পারে। এটি বিষয়ের উপর নির্ভর করে। "আপনি এক্স আক্রমণ করেন " (একবচনীয় ২ য় ব্যক্তির বিষয়) বনাম "এক্সট্রাকুন আক্রমণ করে এক্স" (একবচনীয় তৃতীয় ব্যক্তির বিষয়) বনাম "গব্লিনস অ্যাটাক এক্স" (বহুবচনীয় তৃতীয় ব্যক্তির বিষয়)। বেশিরভাগ ক্রিয়াগুলির জন্য কেবল একটি -sযুক্ত হওয়া দরকার তবে কয়েকটি ব্যতিক্রম রয়েছে।
  2. বিশেষ্যটি একটি উপযুক্ত বিশেষ্য (" গোব্লিন আক্রমণ করে এক্স") বা সাধারণ বিশেষ্য (" একটি গব্লিন এক্স আক্রমণ করে") হতে পারে। স্বরবর্ণের সাথে শুরু হওয়া সাধারণ বিশেষ্যগুলিতে "ক" এর পরিবর্তে "একটি" ব্যবহার করা উচিত। এটি একটি সাধারণ বিশেষ্য হতে পারে তবে বর্তমান প্রসঙ্গে কেবল একটি উদাহরণ রয়েছে (" গব্লিন এক্স আক্রমণ করে")।
  3. বিশেষ্যটি শূন্য থেকে ("আপনি কোনও গবলিন মারেন না ") থেকে এক ("আপনি একটি গব্লিনকে আঘাত করেছেন ") থেকে অনেকের কাছে ("আপনি তিনটি গব্লিনকে আঘাত করেছেন ") সংখ্যায় ভিন্ন হতে পারে । অনেক বিশেষ্যকে কেবল একটি -sবা -esসংযোজন করা প্রয়োজন তবে অনেকগুলি ব্যতিক্রম রয়েছে।
  4. বিষয় এবং অবজেক্টগুলি সহজ (" একটি গব্লিন ") বা যৌগিক (" একটি গব্লিন এবং তার ভাই ") হতে পারে।
  5. বাক্যটির শুরুতে প্রচলিত বিশেষ্যগুলি মূলধনীকরণ করা দরকার, তবে বিশেষ্যটির যদি কোনও নিবন্ধ থাকে বা এটি যৌগিক হয় তবে আপনি কেবল প্রথম শব্দটি মূলধন করতে চান। যথাযথ বিশেষ্য সর্বদা মূলধনযুক্ত হয়।
  6. বিষয় অবস্থানে ( " তিনি এবং বস্তুর অবস্থান অপদেবতা আঘাত") ( "অপদেবতা আঘাত তার ") বিভিন্ন সর্বনাম ব্যবহার করুন।
  7. 'sএকক ("একটি গব্লিনের কুঠার") যোগ করে 'বহুবচন ("দুটি গব্লিনস অক্ষ") যোগ করে প্যাস্যাসিভগুলি তৈরি করা যেতে পারে তবে সর্বনামগুলির নিজস্ব নিয়ম রয়েছে (" আপনার কুঠার")।

ইংরাজির জন্য আমি পাইথনকে একটি পাঠ্য প্রজন্মের লাইব্রেরি লিখেছিলাম যা জেহাউসএমইউ নামে একটি এমইউডি থেকে প্রাপ্ত। কোডটি অধ্যয়ন করতে বা অনুলিপি করুন । এটি ব্যতিক্রমী ক্ষেত্রে একটি ভাল গ্রন্থাগার নেই; আপনার গেমটিতে ব্যবহৃত শব্দগুলির সাথে আপনাকে এটি যুক্ত করতে হবে। আমি ভয় করি যে আমার পোর্ট করা কোডটি ব্যাপকভাবে পরীক্ষা করা হয়নি। এটি গেমসের জন্য আরও সংখ্যক কেস যুক্ত হতে পারে (এটি একটি সামাজিক এমইউডি জন্য ডিজাইন করা হয়েছিল, গেমিং এমইউডি নয়)।

আপনার উদাহরণ হিসাবে লেখা হবে "%1I %1:(inflicts) a serious wound (%2n damage) on %3i"। সংখ্যার %1, %2, %3এটা তা বলুন বস্তুর প্রতিস্থাপিত করা হয়; I/ প্রয়োজনে iপরোক্ষ নিবন্ধ ("একটি", "একটি") যুক্ত করতে বলুন; nএটি নিবন্ধ ছাড়াই বিশেষ্য প্রদর্শন করতে বলে; :(inflicts)এটিকে সেই অবজেক্টের ক্রিয়াটি সংহত করতে বলে।

আক্রমণকারী, ডিফেন্ডার এবং অন্য সকলকে দেখানোর জন্য আউটপুট এখানে দেওয়া হয়েছে:

$ python
>>> import msg
>>> m = "%1I %1:(inflicts) a serious wound (%2n damage) on %3i."
>>> attacker = msg.GenderedObject('Amit', 'm', 'proper')
>>> defender = msg.GenderedObject('goblin', 'm', 'unique')
>>> points = (12, 'point')
>>> msg.Msg().sub_parties({1: attacker, 2: points, 3: defender}, 
                          m, [attacker, defender])
(['You inflict a serious wound (12 points damage) on the goblin.', 
  'Amit inflicts a serious wound (12 points damage) on you.'], 
 'Amit inflicts a serious wound (12 points damage) on the goblin.')

দ্রষ্টব্য আপনি যদি (1, 'point')এটি দিয়েছিলেন তবে এটি "1 পয়েন্ট" এর পরিবর্তে "1 পয়েন্ট" মুদ্রণ করবে। এটাই এমন কিছু যা আমাকে গেমের পাঠ্যে বাগ দেয়, তাই আমি এটিকে সঠিকভাবে মুদ্রণ করা সহজ করার জন্য কোনও বৈশিষ্ট্য অন্তর্ভুক্ত করার বিষয়টি নিশ্চিত করেছিলাম।

যৌগিক বিশেষ্য এবং "একটি" বনাম "একটি" সহ এখানে আরও একটি উদাহরণ রয়েছে:

>>> m = "%1I %1:(hits) %2'n %2'(head)."
>>> a1 = msg.GenderedObject('goblin', 'm', 'normal')
>>> a2 = msg.GenderedObject('orc', 'm', 'normal')
>>> d1 = msg.GenderedObject('Amit', 'm', 'proper')
>>> d2 = msg.GenderedObject('Extrakun', 'm', 'proper')
>>> msg.Msg().sub_parties({1: [a1, a2], 2: [d1, d2]}, m, [d1, d2])
(["A goblin and an orc hit your and Extrakun's heads.", 
  "A goblin and an orc hit Amit's and your heads."], 
 "A goblin and an orc hit Amit's and Extrakun's heads.")

এই উদাহরণগুলি ইংরাজীতে রয়েছে এবং কেবল পুরুষ / মহিলা, সর্বনাম, একক / বহুবচন ক্রিয়া / বিশেষ্য এবং সঠিক / সাধারণ বিশেষ্যগুলি অনুসরণ করে। আপনাকে যা ট্র্যাক করতে হবে তা বিভিন্ন ভাষা এবং আপনার গেমের পাঠ্যের ধরণে পৃথক হতে পারে। স্প্যানিশ ভাষায় আনুষ্ঠানিক এবং অনানুষ্ঠানিক সর্বনাম রয়েছে। বেশ কয়েকটি ভাষায় পুরুষানুরাগ এবং ক্রিয়াগুলির স্ত্রীলিঙ্গ রয়েছে। জাপানি সর্বনাম বস্তুর সাথে সম্পর্কিত বিষয়ের স্থিতির উপর নির্ভর করে। কিছু ভাষায় ক্রিয়া সংযোগের বিষয়টি সুস্পষ্টভাবে অন্তর্ভুক্ত করতে পারে। আপনি যে ধরণের পাঠ্য উত্পন্ন করতে চান এবং যে ভাষাগুলিতে আপনি অনুবাদ করতে চান তা নির্ধারণ করুন এবং এটি আপনাকে গেমের অবজেক্টগুলিতে কী কী ট্র্যাক করতে হবে তা আপনাকে জানিয়ে দেবে। আপনি যখন সামগ্রীটি তৈরি করছেন, আপনি প্রয়োজনীয় টিকা এবং ব্যতিক্রমী ক্ষেত্রে অন্তর্ভুক্ত করতে পারেন।


1
+1, সমস্যার দুর্দান্ত সংক্ষিপ্তসার। একটি জিনিস আমি যুক্ত করব যে খেলোয়াড়েরা যতক্ষণ না বাকী তথ্য (ক্ষতির পরিমাণ, উত্স, লক্ষ্য, প্রকোস) সঠিক হয় ততক্ষন পর্যন্ত উত্পন্ন পাঠ্যের জন্য ছোটখাটো ব্যাকরণগত ত্রুটিগুলি ভুলে যাওয়ার প্রবণতা রয়েছে - 95% সঠিক ব্যাকরণের জন্য অঙ্কুর , কারণ শেষ 5% হাস্যকরভাবে শক্ত।

6

একটি একক স্ট্রিং না রেখে এবং এটিতে যথাযথভাবে প্রতিস্থাপনের চেষ্টা করার পরিবর্তে আপনার পুরো সেটটি থাকতে পারে। অবজেক্ট দিয়ে শুরু করুন। আপনি জানেন, জনতা তৈরি করার সময়, কী হিসাবে এটি উল্লেখ করা উচিত। আক্রমণের স্ট্রিংগুলিতে প্রতিস্থাপনের জন্য আপনি এটির নামের থেকে পৃথক করে একটি নির্দিষ্ট সম্পত্তি দিতে পারেন। অস্ত্রগুলিতে বিভিন্ন ধরণের একাধিক স্ট্রিং থাকতে পারে এবং আরও বিশদে বিশিষ্ট হতে পারে। 'আক্রমণকারী' এর পরিবর্তে তারা 'আক্রমণকারী-সর্বনাম' বা 'আক্রমণকারী-যথাযথ নাম' জন্য বিশেষভাবে জিজ্ঞাসা করতে পারে। ভিড়গুলিতে এই শনাক্তকারীদের বহুবচন সংস্করণ থাকতে পারে, যদি আপনার 'মৌমাছি' একাধিক ভিড় দ্বারা উপস্থাপন করা হয় এবং কেবলমাত্র একক ভিড় নয় যেটিকে 'মৌমাছি' বলা হয়।

সুতরাং আপনার মত একটি ভিড় হবে

name = goblin
pronoun = he
plural = goblins
proper = goblin
common = a goblin
specific_common = the goblin
possessive = the goblin's
possessive_pronoun = his

তারপরে আপনার আক্রমণ স্ট্রিংটি নির্দিষ্ট আইটেমগুলির জন্য অনুরোধ করে ..

% আক্রমণকারী-সর্বনাম% ক্ষতি% এর জন্য% ডিফেন্ডার-নির্দিষ্ট_কমোন% হিট! % ডিফেন্ডার-সর্বনাম% সত্যিই অনুভূত হয়েছে যে এটি!


5

লিংগা :: EN :: দিয়ে শুরু করে পার্লের মডিউলগুলির একটি সেট রয়েছে যা এই সমস্যাগুলি নিয়ে কাজ করে lect এমনকি যদি আপনি কোনও আলাদা ভাষা ব্যবহার করেন তবে তৈরি করা এপিআই পছন্দগুলি আপনাকে নিজের ডিজাইনের ফ্রেম তৈরি করতে সহায়তা করতে পারে।


নিফটি! : এই লাইব্রেরির একটি পাইথন পোর্ট খুব আছে pypi.python.org/pypi/inflect/0.2.1
amitp

3

আমি যেভাবে হ্যান্ডেল করি তা হ'ল সিস্টেমারিগুলির একটি বিশাল সেটগুলির মধ্যে যা অন্যান্য বিষয়গুলির মধ্যে মেসেজকে স্ট্রিংয়ের পরিবর্তে ডেটা স্ট্রাকচার হিসাবে মডেলিংয়ের সাথে জড়িত। আক্রমণকারী এবং ডিফেন্ডারের মানগুলি তাদের আসল বস্তু; ক্রিয়াকলাপটি (আপনার বার্তায় "inflict") চিহ্নিত করা হয়েছে এবং এটি সম্পাদনাকারী ব্যক্তির জন্য বস্তুটি জানে, যাতে বার্তাটি সরবরাহকারী জানে যে এটি প্রথম ব্যক্তির কাছে অভিনেতা এবং দ্বিতীয় ব্যক্তির কাছে অন্য ব্যক্তির কাছে প্রদর্শিত হওয়া দরকার। অবজেক্টগুলি তাদের নামগুলি যথাযথ কিনা তাও জানে এবং (এবং "" "" বা "এ / অন" তাদের প্রয়োগ করা উচিত কিনা), এমন ডেটা মডেল রয়েছে যা আমাকে "" "" বা "এ / এন" নির্দিষ্ট করার অনুমতি দেয় "সাধারণত সেই অবস্থানে একটি যথাযথ বিশেষ্য প্রয়োগ করা হবে এবং আরও অনেক কিছু প্রত্যাশিত।

মুডকনেক্টরটিতে থাকা এই থ্রেডটি আপনার প্রশ্নের সাথে খুব মিলে যায় এবং আমি সেখানে আমার সিস্টেমের বিবরণে ব্যাপকভাবে চলে। মূলত, আমি যেভাবে এটি করি তা আপনি যদি চান তবে আপনি যদি আপনার বার্তাপ্রেরণের সিস্টেমের অন্তর্নিহিত ক্ষমতাগুলি সম্পূর্ণরূপে নিরবচ্ছিন্ন হতে চান এবং তার জন্য শিক্ষার বক্ররেখার মূল্য দিতে রাজি হন। (অনেকটা ভি বনাম ন্যানোর মতো)


0

আমি আপনাকে কেআইএসএসের পরামর্শ দেব (এটি নির্বোধভাবে সহজ রাখুন), এবং পাঠ্য ইন্টারফেসের সুবিধাগুলি কাজে লাগান।

যতটা সম্ভব সরল করুন, সরল করুন, সরল করুন। এমনকি কোডিং সম্পর্কে চিন্তা শুরু করার আগে জটিলতা সরিয়ে ফেলুন। এক বাক্যটির পরিবর্তে, অনেক গেমের মতো একটি ইভেন্ট বর্ণনা করতে দুটি বাক্য ব্যবহার করুন। বালদুরের গেটের কথা মনে আছে ? এটি কোনও পাঠ্য গেম নয়, তবে ক্ষতির সাথে পাঠ্যের সাহায্যে বর্ণনা করা হয়েছে;)


ইভেন্টের উত্স এবং এর ফলাফলের মধ্যে তথ্য বিভক্ত করুন।

উদাহরণ স্বরূপ :

  • মার্লিন ফায়ারবলের একটি স্পেল ফেলেছিল।
  • ম্যাডম্যাক্স আগুনের 3 টি ক্ষতির সাথে আঘাত হানছে।
  • একটি গাবলিন আগুনের 2 টি ক্ষতিতে আঘাত করা হয়।
  • একটি গাবলিন 10 টি আগুনের ক্ষতি করে।
  • ইত্যাদি ...

আমি সর্বদা তৃতীয় ব্যক্তিকে একক ব্যবহার করার পরামর্শ দিই, তবে তা যথাযথ বা সাধারণ বিশেষ্য হবে।

তদতিরিক্ত, যদিও ইংরেজি একটি গুরুত্বপূর্ণ আন্তর্জাতিক ভাষা, আপনি যদি আরও সংবেদনশীল প্রভাব ফেলতে চান এবং একটি বড় বাজারকে স্পর্শ করতে চান তবে আপনার গেমটি অন্যান্য ভাষায় অনুবাদ করতে হতে পারে।

যদি আপনি এটি করার ইচ্ছা করেন তবে সচেতন হন যে বাক্য কাঠামো অন্যান্য ভাষায় আলাদা হতে পারে। উইকিপিডিয়া অনুসারে , উপলব্ধ ৪৫% ভাষা এসওভির (সাবজেক্ট-অবজেক্ট-ক্রিয়া) ক্রমে বাক্যটি তৈরি করে, যেখানে ৪২% (ইংরাজির মতো) এসভিও ক্রমে বাক্যটি তৈরি করে; ইংলিশের মতো


বাল্ডুর গেটের সাথে আউটপুট দেখানোর জন্য পুরোপুরি গ্রাফিকাল ইঞ্জিন রয়েছে, তবে একটি ইন্টারেক্টিভ কথাসাহিত্যের জন্য, পাঠ্যটি সেখানে সমস্ত ইন্টারফেস এবং প্রতিক্রিয়া জানায়। আইএমএইচও, এই ক্ষেত্রে এটি আরও পালিশ করা উচিত ought
এক্সট্রাকুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.