আমি লিখেছি কিছু টেক্সট অ্যাডভেঞ্চারের জন্য আমি টডাস 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 এর দশকে হিউলেট প্যাকার্ড প্রশিক্ষক ছিলেন তাই আমি কম্পিউটার প্রোগ্রামিংয়ে প্রথমে তার কাছ থেকে একটি টন শিখলাম। আমি এখন ইউএস আর্মি রিজার্ভগুলিতে মূলত এখন সার্ভার প্রশাসক হিসাবে আছি। উম ... হ্যাঁ, সুতরাং হাল ছাড়বেন না। আপনি একবার আপনার প্রোগ্রামটি যা করতে চান তা একেবারে ভেঙে ফেলা খুব কঠিন নয়। কখনও কখনও ট্রায়াল এবং ত্রুটি এই ধরণের জিনিস চলার সেরা উপায়। কেবল এটি পরীক্ষা করুন এবং দেখুন এবং কখনও হাল ছাড়বেন না। ঠিক আছে? কোডিং একটি শিল্প। এটি বিভিন্ন উপায়ে করা যেতে পারে। কোনও এক উপায় বা অন্যটি আপনাকে ডিজাইনের কোণায় আটকে দেবে না। মার্কিন সেনা রিজার্ভগুলিতে মি এখন মূলত সার্ভার প্রশাসক হিসাবে। উম ... হ্যাঁ, সুতরাং হাল ছাড়বেন না। আপনি একবার আপনার প্রোগ্রামটি যা করতে চান তা একেবারে ভেঙে ফেলা খুব কঠিন নয়। কখনও কখনও ট্রায়াল এবং ত্রুটি এই ধরণের জিনিস চলার সেরা উপায়। কেবল এটি পরীক্ষা করুন এবং দেখুন এবং কখনও হাল ছাড়বেন না। ঠিক আছে? কোডিং একটি শিল্প। এটি বিভিন্ন উপায়ে করা যেতে পারে। কোনও এক উপায় বা অন্যটি আপনাকে ডিজাইনের কোণায় আটকে দেবে না। মার্কিন সেনা রিজার্ভগুলিতে মি এখন মূলত সার্ভার প্রশাসক হিসাবে। উম ... হ্যাঁ, সুতরাং হাল ছাড়বেন না। আপনি একবার আপনার প্রোগ্রামটি যা করতে চান তা একেবারে ভেঙে ফেলা খুব কঠিন নয়। কখনও কখনও ট্রায়াল এবং ত্রুটি এই ধরণের জিনিস চালিয়ে যাওয়ার সেরা উপায়। কেবল এটি পরীক্ষা করুন এবং দেখুন এবং কখনও হাল ছাড়বেন না। ঠিক আছে? কোডিং একটি শিল্প। এটি বিভিন্ন উপায়ে করা যেতে পারে। কোনও এক উপায় বা অন্যটি আপনাকে ডিজাইনের কোণায় আটকে দেবে না।