2015-05-20 3 views
-1

Моя проблема заключается в том, что когда я пытаюсь использовать метод монстра, метод действительно не работает, так как я хочу, чтобы он работал над тем, что кажется самым неправильным, - это переменная items. Также есть проблема с переводом кости в метод монстра, потому что, когда вы играете роль 1, которая должна убить вас, ничего не происходит. Весь код достаточно велик, поэтому он включает только части, которые задействованы. Ссылка на весь код можно найти здесь: http://justpaste.it/marcs Вот что происходит, когда метод монстра запускается с 2-х предметов:Передача переменных статического класса в java

//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; 
} 
} 

К сожалению для шведских комментариев

+0

Я не уверен, но вы, кажется, объявляете локальные переменные булевыми элементами, вы не используете статическую переменную, которую вы указали в своем классе Spel. .. – thijsraets

+0

@thijsraets Вы хотите сказать, что я пытаюсь использовать его неправильно? – Marc

+0

хорошо написав: «boolean items = ...», вы не устанавливаете статическую переменную, а только новую переменную, которая видима только локально, так как у вас на самом деле нет кода после этого объявления, эта переменная не используется. Но я думаю, что у меня что-то не хватает;) (FIX: просто напишите «items = ...») – thijsraets

ответ

1

Я не вдаваясь в качество вашего кода, но это быстро исправить, что на самом деле дает игроку возможность играть в игру до ее конца.

1) инициализировать статический rum5 в классе Spel, потому что вы обратитесь к нему в ловушку:

static Rum rum5 = new Rum("Du hittade en flaska med en vätska i. ", "En grotta. "); 

2) удалить локальную переменную в основной метод:

Rum rum5 = new Rum("Du hittade en flaska med en vätska i. ", "En grotta. "); 

3) удалить логическую часть из ваших позиций boolean items = ... должно быть items = ...

3) Как я играл:

пытаются идти в комнату 9 (так как это будет установить элементы = True, как только вы нажмете номер 6), теперь идите в комнату 8 и после этого номер 7, надеюсь, вы попадаете в ловушка, это выглядит как единственный способ попасть в комнату 5, из комнаты 5 перейдите в комнату 6 (таким образом пункты = true будут установлены, потому что вы посетили комнату 9), сыграйте в комнату 6 справа, и вы отправитесь в комнату 5, добраться до комнаты 13

4) Примечания:

Я не вижу, как можно установить rum2.visited = верно, так как она не имеет элементов, поэтому Я посетил комнату 9, чтобы получить пункты = true, а не номер 2 и 5

Смежные вопросы