我是一个初学者程序员,这是我在这个论坛上的第一个问题。
我正在使用 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;
}
}