2017-04-08 19 views
-3

Dungeon.java的Java:指示

import java.util.Scanner; 

public class Dungeon extends Character{ 
public static void main (String[]args){ 
//Intro 
    // Creating Relevant Objects 
    Scanner Input = new Scanner(System.in); 
    Character User = new Character(); 
    Test TT = new Test(); 
    Dice Rand = new Dice(); 
    Movement Move = new Movement(); 

    // Introduction 
    System.out.println("Yo Yo Welcome To The Java Dungeon!"); 
    System.out.println("Let's Get This Party Started!");  

    // Name Input 
    System.out.println("First Offf.. What Is Your Name?"); 
     User.CharName = Input.nextLine(); 
    System.out.println("Welcome " + User.CharName + "!"); 

    // HP Input 
    System.out.println("Now Lets Get Your Health Points!"); 
     TT.Continue(); 
     User.CharHP = Rand.Di(); 
    System.out.println(User.CharName + " Your HP is: " + User.CharHP); 

    // Attack Input 
    System.out.println("Now Lets Get Your Attack Points!"); 
     TT.Continue(); 
     User.CharAtk = Rand.Di(); 
    System.out.println(User.CharName + " Your Attack Points are: " + 
User.CharAtk); 

// Dungeon Start! 
    while (User.CharPos < 10){ 
     Move.Moving(); 


} 

} 



} 

& Character.java時詮釋不會改變

import java.util.Scanner; 

public class Character { 
    String CharName = "blank"; 
    int CharHP = 0; 
    int CharAtk= 0; 
    int CharPos = 0; 

} 

class Movement{ 
public void Moving(){ 
//Input Object 
     Scanner Input = new Scanner(System.in); 
     Character User = new Character(); 

//Test 
     char test = 'g'; 
     System.out.println("You Are Currently On Level: " + User.CharPos); 
     System.out.println("Enter E To Move Forward"); 
      test = Input.next().charAt(0); 
      if (test != 'e' && test != 'E'){ 
       System.out.println("You've Failed Already... You Fell Into 
    a Spiky AF Pit!"); 
       System.exit(0); 

       } 

      else { 
       User.CharPos++; 
      } 
    } 
} 

無論我做什麼我不能得到詮釋CharPos由1每次增加循環循環。這是我以前編碼的方式,但我看不到它要增加。任何時候?還有另外一門課我沒有加入,但並沒有影響到這兩個。

+1

您正在創建一個新的'Character'每次'Moving'被調用,所以它從初始值開始 – UnholySheep

+0

* FYI:* [Java命名約定](http://stackoverflow.com/documentation/java/2697/oracle-official-code-standard/9031/naming-約定#t = 201704081811142143014)指出局部變量的名稱,字段和方法應該以小寫字母開頭。 ---另外,你的代碼格式不正確(縮進)。 ---不遵循命名和格式標準會降低人的可讀性,並因此增加編碼錯誤的概率。 – Andreas

+1

使用調試器。如果你這樣做了,你不會問這個問題。 – Bohemian

回答

0

@UnholySheep是對的。要解決您的問題,您需要: 1)將Movement類中的Character轉換爲字段,而不是在每個Move方法調用中創建新實例。 2)創建Character對象ourside Movement並將它傳遞給Movement類的實例 3)採用吸氣

class Movement{ 

private Character user; 

public void setCharacter(Character user) 
{ 
    this.user = user; 
} 

public Character getCharacter() 
{ 
    return user; 
} 

public void Moving(){ 
//Input Object 
     Scanner Input = new Scanner(System.in); 
     ..... 
     user.CharPos++; 
     .... 

而在其他類retrive字符型字段:

public class Dungeon extends Character{ 
public static void main (String[]args){ 
//Intro 
    // Creating Relevant Objects 
    Scanner input = new Scanner(System.in); 
    Character user = new Character(); 
    Test tt = new Test(); 
    Dice rand = new Dice(); 
    Movement move = new Movement(); 
    move.setCharacter(User); 
...