在java中传递静态类变量

时间:2015-05-20 09:17:54

标签: java variables methods static-classes

我的问题是,当我尝试使用怪物方法时,该方法并没有真正起作用,因为我希望它工作似乎最错误的是items变量。在怪物方法中滚动骰子也存在一个问题,因为当你扮演一个应该杀死你的1时,没有任何事情发生。整个代码非常大,所以只包括所涉及的部分。可以在此处找到指向整个代码的链接:http://justpaste.it/marcs 以下是使用2个项目触发怪物方法时发生的情况:

//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();

    }
朗姆酒

if (current.item1 != null){
        current.visited = true;
        }
朗姆酒

  if (current.item2 != null){
        current.visited = true;
        }
朗姆语

   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 个答案:

答案 0 :(得分:1)

我没有考虑到代码的质量,但实际上这是一个快速修复 让玩家有机会玩游戏直到结束。

1)在Spel类中初始化静态 rum5 ,因为你在陷阱中引用它:

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号房间(这样,因为你去过9号房间,所以会设置items = true),  在右边的房间玩6,你会去5号房间,  到达13号房间

4)备注:

我没有看到如何设置rum2.visited = true,因为它没有项目,这就是原因  我访问了9号房间,获得了物品=真而不是2号和5号房间