我的IRC Bot运行了一些游戏。我试图将所有代码分成不同的类。
其中一个是我下面的轮盘游戏:
if (message.equalsIgnoreCase("!spin")) {
if(Games.randomNumber(5) == 1){
rroulette = sender;
Games.russianroulettefail(channel);
}else{
rroulette = sender;
Games.russianroulettewin(channel);
}
}
我的Game类扩展了MyBot
,因此我可以访问我需要的所有字符串。
//////////////////////////////////////////////////////////
/// Russisch Roulette Generator (fail)
//////////////////////////////////////////////////////////
public static void russianroulettefail(String channel){
rngroulette = randomNumber(1);
switch(rngroulette){
case 0:
if(englishmode == true){
sendMessage(channel, rroulette+" Aims towards his Head and pulls the Trigger... PENG. "+rroulette+" Shot himself. RIP");
}else{
sendMessage(channel,""+rroulette+" richtet den Revolver auf seinen Kopf und drückt ab.... PENG!!! Der Schuss löst sich und die Menge ist geschockt! R.I.P "+rroulette+"");
}//sendMessage(channel,"/timeout "+rroulette+"");
if(englishmode == true){
sendMessage(channel, rroulette+" Lost 100 "+coinname+"");
}else{
sendMessage(channel, rroulette+" Verliert 100 "+coinname+"");
}
int coinanzahl = 0;
try {
coinanzahl = MySQLAccess.getcoins(rroulette);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int newtotalcoins;
newtotalcoins = coinanzahl-100;
try {
MySQLAccess.setcoins(rroulette, newtotalcoins);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rroulette = null;
break;
}
}
我收到此错误:
无法从类型游戏
中对非静态方法进行静态引用russianroulettewin(String)
但是一旦我将方法设置为静态,我就会在游戏类中得到错误:
无法从类型PircBot
中对非静态方法sendMessage(String,String)进行静态引用
这有什么变通方法吗?
答案 0 :(得分:1)
您有两种选择:
russianroulettefail
的类。 注意:russianroulettefail
应该像russianRouletteFail
一样大写。 后一种选择可能是传统的选择,但前者更容易。我建议暂时将static
放在所有方法和变量声明之前。为了准备未来,你应该阅读一个关于类和OOP(面向对象编程)的优秀教程,如下所示:http://docs.oracle.com/javase/tutorial/java/javaOO/objects.html。