在 java 中传输静态 class 变量
Transferring static class variables in java
我的问题是,当我尝试使用 monster 方法时,该方法并没有真正起作用,因为我希望它起作用,似乎最错误的是 items 变量。在怪物方法中掷骰子也有一个问题,因为当你掷出一个应该杀死你的 1 时,什么都没有发生。整个代码很大,所以我只包括涉及的部分。可以在此处找到整个代码的 link:http://justpaste.it/marcs
这是用 2 个项目触发 monster 方法时发生的情况:
//Du behöver hitta 2 objekt för att slåss mot bossen
这条线不应该出现。
//Du möter en stor fet boss! Det är Slavechan!
//Om du slår en 1:a så trampar han på dig.
//Du slog 1
我早该死在这里
//Du gör dig redo att slåss mot Slavechan.
//Slavechan dör från en överdos av ris.
//Du tar allt ris han hade och springer iväg mot solnedgången.
//Du Springer in i en osynlig synlig dörr och dör.
public class Spel
{
static Rum rum5;
static Rum current;
static Rum rum12 = new Rum("Du hittar ingenting. " , "En väg. ");
static boolean items = false;
public static void main(String[] args) {
Rum rum13 = new Rum("Du Springer in i en osynlig synlig dörr och dör. ", "Ett slott. ");
rum13.boss = new monster();
}
rum2
if (current.item1 != null){
current.visited = true;
}
rum5
if (current.item2 != null){
current.visited = true;
}
rum9
if (current.item3 != null){
current.visited = true;
}
boolean items = ((rum9.visited==true) || (rum2.visited==true) && (rum5.visited==true));
整个怪物代码
public class monster {
public void rulla1(){
if (Spel.items == false){
System.out.println("Du behöver hitta 2 objekt för att slåss mot bossen");
Spel.current = Spel.rum12;
}else
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Du möter en stor fet boss! Det är Slavechan!");
System.out.println(" ");
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Om du slår en 1:a så trampar han på dig.");
int rull1 = (int)(Math.random() * ((12 - 1) + 1));
System.out.println("Du slog " +rull1);
if (rull1 == 1){
Spel.current=null;
}else
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Du gör dig redo att slåss mot Slavechan.");
System.out.println(" ");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Slavechan dör från en överdos av ris.");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Du tar allt ris han hade och springer iväg mot solnedgången.");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
Spel.current = null;
}
}
抱歉瑞典语评论
我不会讨论你的代码质量,但这是一个快速修复,实际上
让玩家有机会玩游戏直到结束。
1) 在 Spel class 中初始化静态 rum5 因为你在 trap:
中引用了它
static Rum rum5 = new Rum("Du hittade en flaska med en vätska i. ", "En grotta. ");
2) 移除main方法中的局部变量:
Rum rum5 = new Rum("Du hittade en flaska med en vätska i. ", "En grotta. ");
3) 从您的项目中删除布尔部分
boolean items = ...
应该是 items = ...
3) 我是怎么玩的:
尝试去 9 号房间(因为一旦你到达 6 号房间,这将设置 items = true),
现在去8号房,然后去7号房,
希望你落入陷阱,这看起来是去 5 号房间的唯一途径,
从 5 号房间到 6 号房间(这样 items = true 将被设置,因为你访问了 9 号房间),
向右玩6号房间,你会去5号房间,
前往 13 号房间
4) 备注:
我不知道如何设置 rum2.visited = true 因为它没有项目,这就是为什么
我访问了 9 号房间以获取 items = true 而不是 2 号和 5 号房间
我的问题是,当我尝试使用 monster 方法时,该方法并没有真正起作用,因为我希望它起作用,似乎最错误的是 items 变量。在怪物方法中掷骰子也有一个问题,因为当你掷出一个应该杀死你的 1 时,什么都没有发生。整个代码很大,所以我只包括涉及的部分。可以在此处找到整个代码的 link:http://justpaste.it/marcs 这是用 2 个项目触发 monster 方法时发生的情况:
//Du behöver hitta 2 objekt för att slåss mot bossen
这条线不应该出现。
//Du möter en stor fet boss! Det är Slavechan!
//Om du slår en 1:a så trampar han på dig.
//Du slog 1
我早该死在这里
//Du gör dig redo att slåss mot Slavechan.
//Slavechan dör från en överdos av ris.
//Du tar allt ris han hade och springer iväg mot solnedgången.
//Du Springer in i en osynlig synlig dörr och dör.
public class Spel
{
static Rum rum5;
static Rum current;
static Rum rum12 = new Rum("Du hittar ingenting. " , "En väg. ");
static boolean items = false;
public static void main(String[] args) {
Rum rum13 = new Rum("Du Springer in i en osynlig synlig dörr och dör. ", "Ett slott. ");
rum13.boss = new monster();
}
rum2
if (current.item1 != null){
current.visited = true;
}
rum5
if (current.item2 != null){
current.visited = true;
}
rum9
if (current.item3 != null){
current.visited = true;
}
boolean items = ((rum9.visited==true) || (rum2.visited==true) && (rum5.visited==true));
整个怪物代码
public class monster {
public void rulla1(){
if (Spel.items == false){
System.out.println("Du behöver hitta 2 objekt för att slåss mot bossen");
Spel.current = Spel.rum12;
}else
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Du möter en stor fet boss! Det är Slavechan!");
System.out.println(" ");
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Om du slår en 1:a så trampar han på dig.");
int rull1 = (int)(Math.random() * ((12 - 1) + 1));
System.out.println("Du slog " +rull1);
if (rull1 == 1){
Spel.current=null;
}else
try {
Thread.sleep(2000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Du gör dig redo att slåss mot Slavechan.");
System.out.println(" ");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Slavechan dör från en överdos av ris.");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println("Du tar allt ris han hade och springer iväg mot solnedgången.");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
Spel.current = null;
}
}
抱歉瑞典语评论
我不会讨论你的代码质量,但这是一个快速修复,实际上 让玩家有机会玩游戏直到结束。
1) 在 Spel class 中初始化静态 rum5 因为你在 trap:
中引用了它static Rum rum5 = new Rum("Du hittade en flaska med en vätska i. ", "En grotta. ");
2) 移除main方法中的局部变量:
Rum rum5 = new Rum("Du hittade en flaska med en vätska i. ", "En grotta. ");
3) 从您的项目中删除布尔部分
boolean items = ...
应该是 items = ...
3) 我是怎么玩的:
尝试去 9 号房间(因为一旦你到达 6 号房间,这将设置 items = true), 现在去8号房,然后去7号房, 希望你落入陷阱,这看起来是去 5 号房间的唯一途径, 从 5 号房间到 6 号房间(这样 items = true 将被设置,因为你访问了 9 号房间), 向右玩6号房间,你会去5号房间, 前往 13 号房间
4) 备注:
我不知道如何设置 rum2.visited = true 因为它没有项目,这就是为什么 我访问了 9 号房间以获取 items = true 而不是 2 号和 5 号房间