কোনও পাঠ্য অ্যাডভেঞ্চার গেমটিতে আমি কীভাবে ব্যবহারকারীর ইনপুট পার্স করব?


16

কোনও পাঠ্য অ্যাডভেঞ্চারে ব্যবহারকারীর কমান্ডগুলি পার্স করা হ'ল এইচএইচটিটিগির কিছু মন-বকবক চালাকদের কাছে অ্যাডভেঞ্চারের সহজ "গো উত্তর দিকে" থেকে বর্ণালী

আমি মনে করি 80 এর দশকে কম্পিউটার ম্যাগাজিনগুলিতে কীভাবে টোস পড়ছিলাম তা এখন মনে আছে, তবে এখন সংক্ষিপ্ত উইকিপিডিয়া রেফ ছাড়া আমি 'নেট' তে প্রায় কিছুই পাই না ।

কীভাবে আপনি এটা করবেন?


আপডেট : আমি আমার লুডুম সাহস এন্ট্রিতে সহজতম পদ্ধতির সাথে গিয়েছিলাম ।


3
আপনি কি সমাধান করার চেষ্টা করছেন এমন কোনও বিশেষ সমস্যা আছে?
ট্রেভর পাওয়েল

@ ট্র্যাভারপওয়েল মজা করার জন্য একটি ছোট্ট পাঠ্য দু: সাহসিক কাজ তৈরির কথা বিবেচনা করছেন এবং কেবলমাত্র ডাইভিং চালিয়ে আমার পথটি সমাধান করার চেয়ে 'শিল্পের অবস্থা' সম্পর্কে নিজেকে পরিচিত করতে চান
উইল

1
অবহিত ব্যবহার করুন ; এটিই আপনি সেরা কৌশল অবলম্বন করতে পারেন। আজকাল কোনও পাঠ্য অ্যাডভেঞ্চারের হ্যান্ড-কোড করার কার্যত কোনও কারণ নেই।
নিকল বোলাস

@ নিকলবোলাস যদি না লুদুম সাহস না এগিয়ে আসে? ;)
উইল

1
বাস্তববাদী হওয়ার মতো পরাজয়বাদী নয় being উন্নত পাঠ্য পার্সিংয়ের সমস্ত কৌশলগুলিতে প্রবেশ করা (স্পষ্ট স্টাফের বাইরে যে কেউ আসতে পারে) সম্ভবত এখানে একটি একক উত্তরের ক্ষেত্রের বাইরে।
টেট্রাড

উত্তর:


10

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

উদাহরণস্বরূপ ব্যবহৃত পন্থাগুলি বর্ণনা করার নিবন্ধগুলির জন্য এই লিঙ্কটি দেখুন:

http://ifwiki.org/index.php/Past_raif_topics:_Development:_part_2#Parsing


4
আহা, "পাঠ্য অ্যাডভেঞ্চার" হয়ে উঠেছে "ইন্টারেক্টিভ ফিকশন" এবং হঠাৎ এটির আরও অনেক গুগল! কে এটি ভেবেছিল যে আমি এটি অভিনয় করার পরে এটি নামটিও বদলাতে চাইবে? :) তবুও, এই সীসাগুলির দিকে তাকানো, এবং আসলে খুব বেশি দুঃখের সাথে ব্যাখ্যা করা যায় না
উইল

9

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

সাধারণত আপনি একটি সাধারণ ব্যাকরণ এবং শব্দভাণ্ডার দিয়ে শুরু করতে পারেন, তারপরে একটি পার্সার লিখুন। ব্যাকরণ এ জাতীয় কিছু সহজ হতে পারে:

sentence = verb [preposition] object
verb = "get" | "go" | "look" | "examine"
preposition = "above" | "below"
object = ["the"] [adjective] noun
adjective = "big" | "green"
noun = "north" | "south" | "east" | "west" | "house" | "dog"

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

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

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


6

পাঠ্য অ্যাডভেঞ্চারগুলি করার জন্য শিল্পের রাজ্যটি আজ ইনফর্ম 7 ব্যবহার করছে । তথ্যসূত্র ভিত্তিক গেমস আপনাকে "ইংরেজি লিখতে দেয়" ঠিক সেইভাবে "ইংরাজির মতো" হিসাবে 7 টি উত্স পঠন করে। উদাহরণস্বরূপ, এমিলি শর্টসের ব্রোঞ্জ থেকে :

একটি জিনিসে কিছু টেক্সট থাকে যা অগন্ধযুক্ত। কোনও জিনিসের ঘ্রাণ সাধারণত "কিছুই না" থাকে।
ব্লক গন্ধ নিয়ম কোনও নিয়ম পুস্তকে তালিকাভুক্ত করা হয় না।
গন্ধযুক্ত কিছু চালিয়ে যান:
    "[বিশেষ্য] থেকে আপনার গন্ধ [বিশেষ্যটির গন্ধ]" বলুন "
কোনও ঘরে ঘ্রাণ
    নেওয়ার পরিবর্তে: যদি কোনও সুগন্ধযুক্ত জিনিস খেলোয়াড়ের দ্বারা স্পর্শ করা যায় তবে বলুন "আপনার গন্ধ [প্লেয়ারের দ্বারা স্পর্শ করা যায় এমন সুগন্ধযুক্ত জিনিসের তালিকা]";
    অন্যথায় বলুন "জায়গাটি সুখী গন্ধহীন" "

ইনফর্ম 7 পার্সার ইনফর্ম 7 আইডিইয়ের সাথে ঘনিষ্ঠভাবে সংহত হয়েছে এবং পুরো উত্স কোডটি এখনও অধ্যয়নের জন্য উপলভ্য নয়:


5

একটি পাঠ্য অ্যাডভেঞ্চার পার্সার তৈরি শেখার জন্য দুটি সেরা বর্তমান উত্স হ'ল (যেমন উল্লেখ করা হয়েছিল) আইএফ সম্প্রদায় এবং কাদা সম্প্রদায়। আপনি যদি সেগুলির জন্য প্রধান ফোরামগুলি অনুসন্ধান করেন (Intfiction.org/forum, নিউজগ্রুপ rec.arts.int-fiction, মাটির সংযোগকারী, মুডবাইটেস, মুদলব, শীর্ষ মাটির সাইট) আপনি কিছু উত্তর খুঁজে পাবেন তবে আপনি যদি কেবল সন্ধান করছেন নিবন্ধগুলির জন্য আমি দ্বিতীয় এমইউডি-তে পার্সার সম্পর্কিত রিচার্ড বার্টলের ব্যাখ্যাটি সুপারিশ করব:

http://www.mud.co.uk/richard/commpars.htm

এবং rec.arts.int-fiction- এ এই ব্যাখ্যা:

http://groups.google.com/group/rec.arts.int-fiction/msg/f545963efb72ec7b?dmode=source

অন্যান্য উত্তরের প্রতি অসম্মান বোঝানো হয়নি, তবে সিএফ ব্যাকরণ তৈরি করা বা বিএনএফ ব্যবহার করা এই সমস্যার সমাধান নয়। এটি কোনও আলাদা সমস্যার সমাধান হতে পারে না তা বলা যায় না, এটি আরও উন্নত প্রাকৃতিক ভাষার পার্সার তৈরি করা, তবে এটি একটি পাঠ্য অ্যাডভেঞ্চারের ক্ষেত্রের আইএমও নয়, যথেষ্ট গবেষণার বিষয়।


4

বিশ্ববিদ্যালয়ে আমার প্রথম বর্ষে আমরা প্রোলগে একটি অ্যাডভেঞ্চার গেম তৈরি করেছিলাম এবং ব্যবহারকারীর ইনপুটটির জন্য আমাদের অবশ্যই নির্দিষ্ট ক্লজ ব্যাকরণ বা ডিসিজি ব্যবহার করতে হয়েছিল । এটিকে কমান্ড ভাষা হিসাবে ব্যবহার করার উদাহরণের জন্য http://www.amzi.com/manuals/amzi/pro/ref_dcg.htm#DCGCommandLanguage দেখুন । দেখে মনে হচ্ছিল এটি একটি মূলত (এটি সর্বোপরি ইউনি ছিল) এবং সেই সময়ে নমনীয় পদ্ধতির মতো।


1

আপনার গেমটিতে সঠিক এমন সমস্ত বাক্য আপনার একটি ডোমেন নির্দিষ্ট ভাষা নির্দিষ্ট করতে হবে। এই লক্ষ্যে আপনাকে আপনার ভাষার (শব্দভাণ্ডার এবং বাক্য গঠন) জন্য ব্যাকরণ নির্ধারণ করতে হবে। আপনার যে ধরণের ব্যাকরণের প্রয়োজন তা হ'ল একটি কনটেক্সট ফ্রি ব্যাকরণ এবং এমন সরঞ্জাম রয়েছে যা এএনটিএলআর (www.antlr.org) এর মতো ব্যাকরণের একটি সিন্থেটিক বর্ণনা থেকে স্বয়ংক্রিয়ভাবে পার্সার তৈরি করে। পার্সার কেবলমাত্র বাক্যটি সঠিক কিনা না তা যাচাই করে এবং বাক্যটির একটি বিমূর্ত সিনট্যাক্স ট্রি (এএসটি) তৈরি করে যা বাক্যটির নাব্যযোগ্য উপস্থাপনা যেখানে প্রতিটি শব্দের আপনার ব্যাকরণে নির্দিষ্ট করা ভূমিকা রয়েছে। এএসটি নেভিগেট করে আপনাকে এমন কোডটি যুক্ত করতে হবে যা বাক্যটির অন্য শব্দের সাথে সম্মতি রেখে সেই ভূমিকাটি ادا করার সময় প্রতিটি শব্দটি শব্দার্থক কী তা নির্ধারণ করে এবং শব্দার্থবিজ্ঞানটি সঠিক কিনা তা যাচাই করে।

উদাহরণস্বরূপ, 'পাথর মানুষটিকে খায়' বাক্যটি বাক্যবৈজ্ঞানিকভাবে সঠিক তবে শব্দার্থগতভাবে সঠিক নয় (যদি আপনার পৃথিবীতে পাথর, সম্ভবত যাদু পাথর না থাকে তবে পুরুষরা খেতে পারেন)।

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


1

আমি লিখেছি কিছু টেক্সট অ্যাডভেঞ্চারের জন্য আমি টডাস 3 (www.tads3.org) ইঞ্জিন ব্যবহার করেছি। এটি কম্পিউটার প্রোগ্রামারদের পক্ষে অনেক বেশি তবে খুব শক্তিশালী ভাষা। আপনি যদি একজন প্রোগ্রামার হন তবে ইনফর্ম 7 এর চেয়ে দ্রুত কোডগুলি কোড করতে টডস 3 অনেক সহজ হবে যা আমি আগেও ব্যবহার করেছি। প্রোগ্রামারদের জন্য ইনফর্ম with এর সমস্যাটি ঠিক তেমনি বিখ্যাত "ক্রিয়াটি অনুমান করুন" টেক্সট অ্যাডভেঞ্চারের খেলোয়াড়দের মধ্যে এটি যে আপনি যদি আপনার বাক্যগুলি খুব সাবধানে না লিখে থাকেন তবে আপনি খেলাটি ভাঙ্গতে চলেছেন। এটি করার ধৈর্য থাকলে আপনি সহজেই টোকেনাইজার শ্রেণীর সাহায্যে জাভাতে পার্সার লিখতে পারেন। উদাহরণ আমি একটি বিশ্বব্যাপী JTextArea এবং একটি বিশ্বব্যাপী স্ট্রিং [] অ্যারে ব্যবহার করে লিখেছি। এটি পাতা এজেড এবং 0-9 পাশাপাশি প্রশ্ন চিহ্ন (একটি "সহায়তা" কমান্ড শর্টকাটের জন্য) ব্যতীত অযাচিত অক্ষরগুলি সরিয়ে দেয়:

// put these as global variables just after your main class definition
public static String[] parsed = new String[100];
// outputArea should be a non-editable JTextArea to display our results
JTextArea outputArea = new JTextArea();
/*
 * parserArea is the JTextBox used to grab input
 * and be sure to MAKE sure somewhere to add a 
 * java.awt.event.KeyListener on it somewhere where
 * you initialize all your variables and setup the
 * constraints settings for your JTextBox's.
 * The KeyListener method should listen for the ENTER key 
 * being pressed and then call our parseText() method below.
 */
JTextArea parserArea = new JTextArea();

public void parseText(){
    String s0 = parserArea.getText();// parserArea is our global JTextBox
    s0 = s0.replace(',',' ');
    s0 = s0.replaceAll("[^a-zA-Z0-9? ]","");
    // reset parserArea back to a clean starting state
    parserArea.setCaretPosition(0);
    parserArea.setText("");
    // erase what had been parsed before and also make sure no nulls found
    for(int i=0;i < parsed.length; i++){
      parsed[i] = "";
    }
    // split the string s0 to array words by breaking them up between spaces
    StringTokenizer tok = new StringTokenizer(s0, " ");
    // use tokenizer tok and dump the tokens into array: parsed[]
    int iCount = 0;
    if(tok.countTokens() > 0){
      while(tok.hasMoreElements()){
        try{
          parsed[iCount] = tok.nextElement().toString();
          if(parsed[iCount] != null && parsed[iCount].length()>1){
            // if a word ENDS in ? then strip it off
            parsed[iCount] = parsed[iCount].replaceAll("[^a-zA-Z0-9 ]","");
           }
        }catch(Exception e){
          e.printStackTrace();
        }
          iCount++;
        }


      /*
       * handle simple help or ? command.
       * parsed[0] is our first word... parsed[1] the second, etc.
       * we can use iCount from above as needed to see how many...
       * ...words got found.
       */
      if(parsed[0].equalsIgnoreCase("?") || 
        parsed[0].equalsIgnoreCase("help")){
          outputArea.setText("");// erase the output "screen"
          outputArea.append("\nPut help code in here...\n");
        }
      }

      // handle other noun and verb checks of parsed[] array in here...

    }// end of if(tok.countTokens() > 0)... 

}// end of public void parseText() method

... আমি মূল শ্রেণীর সংজ্ঞা এবং পরিবর্তনশীল সূচনা () পদ্ধতি ইত্যাদি ছেড়ে দিয়েছি কারণ এটি ধরে নেওয়া হয়েছে যে আপনি যদি জাভা জানেন তবে কীভাবে এটি সেট আপ করতে হবে তা আপনি ইতিমধ্যে জানেন। এর জন্য প্রধান শ্রেণীর সম্ভবত জেফ্রেম প্রসারিত হওয়া উচিত এবং আপনার সর্বজনীন স্ট্যাটিক শূন্য মূল () পদ্ধতিতে এটির একটি উদাহরণ তৈরি করুন। আশা করি এই কোডটির কিছু সাহায্য করবে।

সম্পাদনা করা হয়েছে - ঠিক আছে, সুতরাং এখন আপনি এখন যা করবেন তা হ'ল অ্যাকশন ক্লাস তৈরি করা এবং একটি ক্রিয়াকলাপের জন্য স্ক্যান করা (অর্থাত "প্রদীপ পান" বা "তরোয়াল ছেড়ে দিন")। এটিকে আরও সহজ করে তুলতে আপনার স্কোপগুলিতে দৃশ্যমান সমস্ত কিছু স্ক্যান করার জন্য একটি রুমস্ক্যান অবজেক্ট বা পদ্ধতি থাকতে হবে এবং সেই ক্রিয়ায় কেবলমাত্র সেই বস্তুর জন্য স্ক্যান করতে হবে। অবজেক্টটি নিজেই অ্যাকশন হ্যান্ডলিং পরিচালনা করে এবং ডিফল্টরূপে আপনার আইটেম ক্লাসটি সমস্ত পরিচিত ক্রিয়াকলাপ ডিফল্ট উপায়ে হ্যান্ডেল করা উচিত, যা ওভার-রাইড হওয়া যায়। এখন, উদাহরণস্বরূপ, যদি কোনও আইটেম আপনি "পেতে" চান তা কোনও খেলোয়াড়বিহীন চরিত্র দ্বারা ধারণ করা হয়, তবে আইটেমটির মালিকের কাছে এটি পাওয়ার জন্য ডিফল্ট প্রতিক্রিয়া হওয়া উচিত "এটি আপনাকে তা হতে দেয় না" like এখন আপনাকে আইটেম বা থিং ক্লাসে এটির জন্য এক টন ডিফল্ট ক্রিয়া প্রতিক্রিয়া তৈরি করতে হবে। এটি মূলত সমস্ত ডিজাইনের উপরে একটি টডাস 3 দৃষ্টিভঙ্গি থেকে আসছে। কারণ ট্যাডএস 3 এ প্রতিটি আইটেমের নিজস্ব ডিফল্ট অ্যাকশন হ্যান্ডলিং রুটিন রয়েছে যা পার্সার কল করে যদি এটির কোনও ক্রিয়াকলাপ শুরু হয়। সুতরাং ... আমি কেবল আপনাকে বলছি, ট্যাডস 3 এর মধ্যে ইতিমধ্যে এই সমস্ত কিছু রয়েছে, তাই সেই ভাষায় কোনও পাঠ্য অ্যাডভেঞ্চারে কোড করা খুব সহজ। তবে আপনি যদি জাভা (উপরে) এর মতো স্ক্র্যাচ থেকে এটি করতে চান, তবে আমি ব্যক্তিগতভাবে এটি ট্যাড 3 এর নকশা করা একইভাবে পরিচালনা করব would এইভাবে, আপনি নিজেরাই বিভিন্ন বস্তুগুলিতে রুটিনগুলি পরিচালনা করতে ডিফল্ট ক্রিয়াকে ওভাররাইড করতে পারেন, উদাহরণস্বরূপ আপনি যদি "প্রদীপ পেতে" চান এবং বাটারটি এটি ধারণ করে থাকে তবে এটি আইটেমের জন্য ডিফল্টর "get" ক্রিয়া পদ্ধতিতে প্রতিক্রিয়া সৃষ্টি করতে পারে বা অবজেক্ট এবং আপনাকে বলে যে "বাটলার ব্রাস ল্যাম্প হস্তান্তর করতে অস্বীকার করে।" মানে ... একবার আপনি যখন আমার মতো প্রোগ্রামার হয়ে উঠলেন, তখন এটি খুব সহজ স্টাফ। আমার বয়স 50 বছরেরও বেশি এবং আমি 7 বছর বয়স থেকেই এটি করছি। আমার পিতা 70 এর দশকে হিউলেট প্যাকার্ড প্রশিক্ষক ছিলেন তাই আমি কম্পিউটার প্রোগ্রামিংয়ে প্রথমে তার কাছ থেকে একটি টন শিখলাম। আমি এখন ইউএস আর্মি রিজার্ভগুলিতে মূলত এখন সার্ভার প্রশাসক হিসাবে আছি। উম ... হ্যাঁ, সুতরাং হাল ছাড়বেন না। আপনি একবার আপনার প্রোগ্রামটি যা করতে চান তা একেবারে ভেঙে ফেলা খুব কঠিন নয়। কখনও কখনও ট্রায়াল এবং ত্রুটি এই ধরণের জিনিস চলার সেরা উপায়। কেবল এটি পরীক্ষা করুন এবং দেখুন এবং কখনও হাল ছাড়বেন না। ঠিক আছে? কোডিং একটি শিল্প। এটি বিভিন্ন উপায়ে করা যেতে পারে। কোনও এক উপায় বা অন্যটি আপনাকে ডিজাইনের কোণায় আটকে দেবে না। মার্কিন সেনা রিজার্ভগুলিতে মি এখন মূলত সার্ভার প্রশাসক হিসাবে। উম ... হ্যাঁ, সুতরাং হাল ছাড়বেন না। আপনি একবার আপনার প্রোগ্রামটি যা করতে চান তা একেবারে ভেঙে ফেলা খুব কঠিন নয়। কখনও কখনও ট্রায়াল এবং ত্রুটি এই ধরণের জিনিস চলার সেরা উপায়। কেবল এটি পরীক্ষা করুন এবং দেখুন এবং কখনও হাল ছাড়বেন না। ঠিক আছে? কোডিং একটি শিল্প। এটি বিভিন্ন উপায়ে করা যেতে পারে। কোনও এক উপায় বা অন্যটি আপনাকে ডিজাইনের কোণায় আটকে দেবে না। মার্কিন সেনা রিজার্ভগুলিতে মি এখন মূলত সার্ভার প্রশাসক হিসাবে। উম ... হ্যাঁ, সুতরাং হাল ছাড়বেন না। আপনি একবার আপনার প্রোগ্রামটি যা করতে চান তা একেবারে ভেঙে ফেলা খুব কঠিন নয়। কখনও কখনও ট্রায়াল এবং ত্রুটি এই ধরণের জিনিস চালিয়ে যাওয়ার সেরা উপায়। কেবল এটি পরীক্ষা করুন এবং দেখুন এবং কখনও হাল ছাড়বেন না। ঠিক আছে? কোডিং একটি শিল্প। এটি বিভিন্ন উপায়ে করা যেতে পারে। কোনও এক উপায় বা অন্যটি আপনাকে ডিজাইনের কোণায় আটকে দেবে না।


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

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