Saya menggunakan mesin Tads3 (www.tads3.org) untuk beberapa petualangan teks yang saya tulis. Ini lebih untuk programmer komputer tetapi bahasa yang sangat kuat. Jika Anda seorang programmer, Tads3 akan lebih mudah untuk membuat kode lebih cepat daripada Inform7, yang telah saya gunakan sebelumnya juga. Masalah dengan Inform7 untuk programmer sama terkenalnya dengan "tebak kata kerjanya" adalah untuk para pemain petualangan teks karena jika Anda tidak menulis kalimat Anda SANGAT hati-hati Anda akan merusak permainan. Jika Anda memiliki kesabaran untuk melakukannya, Anda dapat dengan mudah menulis parser di Jawa menggunakan kelas Tokenizer. Contoh saya menulis menggunakan global JTextArea dan global String [] array. Ini menghapus karakter yang tidak diinginkan kecuali daun AZ dan 0-9 serta tanda tanya (untuk pintasan perintah "bantuan"):
// 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
... Saya meninggalkan definisi kelas utama dan variabel initialize () method, dll. Karena diasumsikan jika Anda tahu Java Anda sudah tahu cara mengaturnya. Kelas utama untuk ini mungkin harus memperluas JFrame dan dalam metode public void main () statis Anda, buat saja instance darinya. Semoga beberapa kode ini membantu.
DIedit - Oke, jadi sekarang apa yang akan Anda lakukan selanjutnya adalah membuat kelas Tindakan dan memindai tindakan (yaitu "mendapatkan lampu" atau "jatuhkan pedang"). Untuk membuatnya lebih sederhana, Anda harus memiliki objek atau metode RoomScan untuk memindai semua yang terlihat dalam lingkup dan memindai hanya objek-objek yang ada di tindakan itu. Objek itu sendiri menangani penanganan tindakan dan secara default Anda harus memiliki kelas Item menangani semua tindakan yang diketahui secara default, yang bisa dikuasai secara berlebihan. Sekarang, jika misalnya, item yang Anda ingin "dapatkan" dipegang oleh karakter non-pemain, respons default untuk mendapatkan item yang dipegang oleh pemiliknya haruslah seperti "Tidak akan membiarkan Anda memilikinya." Sekarang Anda harus membuat satu ton respons tindakan default untuk ini di kelas Item atau Thing. Ini pada dasarnya berasal dari perspektif Tads3 di atas semua desain. Karena di Tads3 setiap item memiliki tindakan standar penanganan rutin di atasnya yang dipanggil parser jika tindakan di atasnya diinisialisasi. Jadi ... Saya baru saja memberitahu Anda, Tads3 sudah memiliki semua ini, jadi SANGAT mudah untuk kode dalam petualangan teks dalam bahasa itu. Tetapi jika Anda ingin melakukannya dari awal, seperti di Jawa (di atas), maka saya pribadi akan menanganinya dengan cara yang sama seperti Tads3 dirancang. Dengan cara itu, Anda dapat mengesampingkan tindakan standar yang menangani rutin pada objek yang berbeda itu sendiri, jadi misalnya jika Anda ingin "mendapatkan lampu" dan kepala pelayan memegangnya, itu dapat memicu respons dalam metode tindakan "get" default untuk Item. atau Obyek dan memberi tahu Anda bahwa "Kepala pelayan menolak untuk menyerahkan lampu kuningan." Maksud saya ... setelah Anda menjadi seorang programmer cukup lama seperti yang saya miliki, maka ini semua SANGAT mudah. Saya berusia lebih dari 50 tahun dan telah melakukan ini sejak saya berusia 7. Ayah saya adalah seorang instruktur Hewlett Packard di tahun 70-an jadi saya belajar satu TON darinya awalnya pada pemrograman komputer. Saya juga di Cadangan Angkatan Darat AS karena pada dasarnya administrator server sekarang. Um ... ya, jadi jangan menyerah. Ini tidak sulit setelah Anda benar-benar memecahnya menjadi apa yang Anda ingin program Anda lakukan. Terkadang coba-coba adalah cara terbaik untuk mengerjakan hal-hal semacam ini. Coba saja dan lihat dan jangan pernah menyerah. Baik? Pengkodean adalah seni. Itu dapat dilakukan dengan berbagai cara. Jangan biarkan satu cara atau yang lain tampaknya menghalangi Anda ke sudut pada desain. m juga di Cadangan Angkatan Darat AS karena pada dasarnya administrator server sekarang. Um ... ya, jadi jangan menyerah. Ini tidak sulit setelah Anda benar-benar memecahnya menjadi apa yang Anda ingin program Anda lakukan. Terkadang coba-coba adalah cara terbaik untuk mengerjakan hal-hal semacam ini. Coba saja dan lihat dan jangan pernah menyerah. Baik? Pengkodean adalah seni. Itu dapat dilakukan dengan berbagai cara. Jangan biarkan satu cara atau yang lain tampaknya menghalangi Anda ke sudut pada desain. m juga di Cadangan Angkatan Darat AS karena pada dasarnya administrator server sekarang. Um ... ya, jadi jangan menyerah. Ini tidak sulit setelah Anda benar-benar memecahnya menjadi apa yang Anda ingin program Anda lakukan. Terkadang coba-coba adalah cara terbaik untuk mengerjakan hal-hal semacam ini. Coba saja dan lihat dan jangan pernah menyerah. Baik? Pengkodean adalah seni. Itu dapat dilakukan dengan berbagai cara. Jangan biarkan satu cara atau yang lain tampaknya menghalangi Anda ke sudut pada desain.