Java: Zeichnung-Grafik-aus einem array

Arbeite ich an meinem ersten java-Spiel für ein Schulprojekt, und ich habe einige Probleme mit dem zeichnen der Grafiken basiert auf Informationen, in einem array.

Was ich im Grunde versucht zu tun ist erstellen Sie ein 2D array (matrix) gespeichert wird, alle Informationen über die Welt, in der sich der Spieler bewegen kann. So werden einige Elemente in das array enthält eine Wand, andere öffnen den Raum für die Spieler zu bewegen, und so weiter...

Habe ich diesen Beispielcode, arbeite ich von:

/**
*
* @author Rasztemberg
*/
package simpleGame;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;


/**
 * GameBoard is a part of JPanel. 
 * It has a Graphical Object {@link Graphics}
 * that can be used to render shapes etc. Pass it's reference to any object you 
 * want to display in the gameBoard panel.
 */


public class GameBoard extends JPanel implements KeyListener{



Player player; 
Player enemy;

public GameBoard(){

    //SETUP PLAYER ON THE BOARD;
    int xPos = 0; 
    int yPos = 0; 
    int width = 20; 
    int height = 20; 
    Color playerC = Color.BLUE;

    player = new Player(xPos, yPos, width, height, playerC);

    //SETUP ENEMY ON THE BOARD;
    enemy = new Player(100, 100, width, height, Color.RED);

    addKeyListener(this);
}


/*
 * 
 * JPanel function to display all gameBoard object graphics.
 */

@Override
public void paint(Graphics g){
    super.paint(g); //Call it's parent for proper rendering.

    player.display(g);
    enemy.display(g);
}


@Override
public void keyTyped(KeyEvent e) {}

@Override
public void keyPressed(KeyEvent e) {

    int keyCode = e.getKeyCode();
    if (keyCode == KeyEvent.VK_LEFT) {
         player.moveLeft();
     }

     if (keyCode == KeyEvent.VK_RIGHT) {
         player.moveRight();
     }

     if (keyCode == KeyEvent.VK_DOWN) {
         player.moveDown();
     }

     if (keyCode == KeyEvent.VK_UP) {
         player.moveUp();
     }
}

@Override
public void keyReleased(KeyEvent e) {}


/**
 * Set's focus on the panel so key events are catch. 
 */

public boolean isFocusTraversable() {
    return true;
}

}

Und

/**
* @author Rasztemberg
*/
package simpleGame;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import javax.swing.JPanel;


/** 
 *  This is main player Class. 
 *  
 */


public class World  {

 //Snake parameters

 private int x; 
 private int y; 
 private int width; 
 private int height; 
 private Color color;

 /** 
 *  Class constructor. Called when instantiated.
 *  Assigns x and y coordinates to position the player. 
 *  Sets width, height and color to the rendered object.
 * 
 */


public World(int x, int y, int w, int h, Color c){

    this.x = x; 
    this.y = y; 
    this.width = w; 
    this.height = h;
    this.color = c;
}

/**
 * Accepts Graphics object to render 
 * player 1 shape
 */

public void display(Graphics g) {

    //This is player rendered graphics.
    Graphics2D walls = (Graphics2D) g;    //Graphical library to render shapes.
    walls.setColor(color);
    walls.drawRect(x, y, width, height);
    walls.fillRect(x, y, width, height);
} 
}

Jetzt habe ich diese for-Schleife zum füllen einer test-Array:

int[][] wallArray = new int[800][600];

        for (int x = 0; x < wallArray.length; x++) {
            for (int y = 0; y < wallArray.length; y++) {
                wallArray[x][y] = 1;
            }
        }

        wallArray[100][100] = 0;
        greatWall = new World(wallArray);

Weißt du, wie ich zeichnen könnte dieses array? Ich entschuldige mich für die Länge des Codes...

InformationsquelleAutor Pætur Magnussen | 2013-04-29

Schreibe einen Kommentar