2016-12-08 4 views
0

ゲームオブジェクトの各タイプが特定のrgb値に割り当てられるプラットフォームゲームを作成しましたので、ペイントと読み込みで描画することでレベルを作成できます画像。今は最初の2つのレベルが既にロードされており、3番目のレベルのパスをテキストフィールド入力で取得し、カスタム3番目のレベルをロードできます。各レベルには、レベルのpng画像へのパスと、次のレベルに進むために必要なコインの数が必要です。私は各レベルが1つのテキストファイルからすべてのレベルをロードしたいと思っています。各行には、レベル番号、イメージパス、およびコインの数が含まれている可能性があります。私はそれをカスタマイズできるようにして、ユーザが私のカスタマイズメニューの3つのテキストフィールドを介してこれらのパラメータを追加するだけで、レベルを追加または変更できるようにしています。この方法でもデザイナーがレベルを作成するのを助け、テキストファイルから読み込むことで、20以上のレベルがあるときに長期的にコードが少なくなると思います。このファイルからどのようにロードして追加することができますか?ここで私が今作業しているものは次のとおりです:テキストファイルから画像とデータを読み込んでそれに追加する(Java)

public static BufferedImageLoader loader = new BufferedImageLoader(); 
public Handler(Camera cam){ 
this.cam = cam; 

level1 = loader.loadImage("/level1.png"); 
level2 = loader.loadImage("/level2.png"); 
} 

public void changeLevel(){ 
clearLevel(); 
cam.setX(0); 
Player.coinCount = 0; 
if(Game.LEVEL == 1){ 
    Player.maxCoins = 4; 
    LoadImageLevel(level1); 
} 
if(Game.LEVEL == 2){ 
    LoadImageLevel(level2); 
    Player.maxCoins = 11; 
} 
if(Game.LEVEL == 3){ 
    System.out.println(Data.levelPath); 
    try{ 
    level3 = loader.loadImage(Data.levelPath); 
    LoadImageLevel(level3); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    System.out.println("error loading custom level"); 
    } 
} 
} 

public Menu(Game game, Handler handler){ 
this.handler = handler; 

pathField = new JTextField(10); 
levelField = new JTextField(10); 
coinField = new JTextField(10); 

if(Game.gameState == STATE.Menu){ 
    int selection = JOptionPane.showConfirmDialog(
     null, getPanel(), "Input Form : " 
     , JOptionPane.OK_CANCEL_OPTION 
     , JOptionPane.PLAIN_MESSAGE); 
    if(selection == JOptionPane.OK_OPTION) { 
    Data.levelPath = pathField.getText(); 
    Data.level = levelField.getText(); 
    Data.coinAmount = Double.valueOf(coinField.getText()); 
    System.out.println(Data.levelPath + Data.level + Data.coinAmount); 
} 
} 

private JPanel getPanel(){ 
    JPanel basePanel = new JPanel(); 
    basePanel.setOpaque(true); 

    JPanel centerPanel = new JPanel(); 
    centerPanel.setLayout(new GridLayout(3, 2, 5, 5)); 
    centerPanel.setBorder(
     BorderFactory.createEmptyBorder(5, 5, 5, 5)); 
    centerPanel.setOpaque(true); 

    JLabel mLabel1 = new JLabel("Enter path: (e.g., /level1.png) "); 
    JLabel mLabel2 = new JLabel("Enter which level to load the image in: "); 
    JLabel mLabel3 = new JLabel("Enter the amount of coins you must collect"); 

    centerPanel.add(mLabel1); 
    centerPanel.add(pathField); 
    centerPanel.add(mLabel2); 
    centerPanel.add(levelField); 
    centerPanel.add(mLabel3); 
    centerPanel.add(coinField); 

    basePanel.add(centerPanel); 

    return basePanel; 
} 

アイデアや提案はありがとうございます! 1#path#20として

+0

を取得LoadImageLevel(level [i])、独自のファイルと配列のコインについても同じことをしますか? –

答えて

0
それは実際には....

input.getText(の値が与えられています

、それは、レベル番号、画像パス、および#トークンによって分離されたコインの数を有します。

public static String [] separateFields(String input, String separator){ 

    String[] separatedValues = input.split("#"); 

    return separatedValues; 
    } 

引数を定義して関数を呼び出します。

// input is textfield.getText() , and the value of input is 1#path#20 
String [] result= separateFields(input, "#"); 

その後、私は、==たぶん私は、テキストファイルにすべての画像のパスを記述したテキストファイルから読み込み、配列にそれらを入れて、レベルあれば言ってforループを行うことができます

int level = Integer.parseInt(result[0]); // level 
    String aPath = result[1]; // path 
    int numCoins = Integer.parseInt(result[2]); // number of coins 
+0

えええええええええええええええええええてのこれは私が1つのテキストフィールドで1つのレベルを読み込むことができますが、私はまだ複数のレベルを読み込んでテキストファイルに保存する方法を把握する必要があるので、 –

関連する問題