私は初心者のプログラマーで、これがこのフォーラムでの最初の質問です。
BlueJ をコンパイラとして使用して単純なテキスト アドベンチャー ゲームを作成しています。Mac を使用しています。私が遭遇した問題は、コードをより自己自動化したいのですが、文字列でクラスを呼び出すことができないということです。クラスを呼び出して、すべてをif関数に含めたくない理由は、より多くのメソッドを組み込むことができるようにするためです。
現在の実行方法は次のとおりです。
public class textadventure {
public method(String room){
if(room==street){street.enterRoom();}
}
}
public class street{
public enterRoom(){
//do stuff and call other methods
}
}
if ステートメントは、作成したすべてのクラス/部屋をテストします。コードで実行したいのは、文字列の部屋を呼び出し可能なクラス名に自動的にすることです。したがって、次のように動作する可能性があります。
Public method(string room){
Class Room = room;
Room.enterRoom();
}
Class.forName の使用については既に調べましたが、すべての例が一般的すぎて関数の使用方法を理解できませんでした。他に必要な情報 (より多くのサンプル コードなど) があれば、喜んで提供させていただきます。
-セバスチャン
完全なコードは次のとおりです。
import java.awt.*;
import javax.swing.*;
public class Player extends JApplet{
public String textOnScreen;
public void start(){
room("street1");
}
public void room(String room){
if(room=="street1"){
textOnScreen=street1.enterRoom();
repaint();
}
if(room=="street2"){
textOnScreen=street2.enterRoom();
repaint();
}
}
public void paint(Graphics g){
g.drawString(textOnScreen,5,15);
}
}
public abstract class street1
{
private static String textToScreen;
public static String enterRoom(){
textToScreen = "You are on a street running from North to South.";
return textToScreen;
}
}
public abstract class street2
{
private static String textToScreen;
public static String enterRoom(){
textToScreen = "You are on another street.";
return textToScreen;
}
}