Hallo zusammen,
für meine Seminararbeit wollte ich Pacman programmieren. Natürlich wollte ich mich erst um das Oberflächliche kümmern. Ich habe meine eigene Art und Weise gefunden und es auch so umgesetzt:
Ich habe erst in der Klasse Gridsettings eine ArrayList mit String Elementen angelegt bestehend aus "x" und "o". "x" symbolisiert die ausgebaute, nicht begehbare Fläche und "o" die Spielfläche. In der Klasse Pacman Grid wird der String ausgewertet und je nachdem die Oberfläche gezeichnet.
Oberfläche wird korrekt angezeigt jedoch habe ich keine Ahnung, wie ich in dieser Implementation nun Pacman bewegen soll. Pacman muss ja prüfen, dass er noch im Gitter ist, aber wie soll ich ihn drawen? Ich kann ja nicht das erstellte Array als Location angeben. Kann ich die Implementation in die Tonne treten oder kann man daraus noch was machen?
GridSettings
PacmanGrid
für meine Seminararbeit wollte ich Pacman programmieren. Natürlich wollte ich mich erst um das Oberflächliche kümmern. Ich habe meine eigene Art und Weise gefunden und es auch so umgesetzt:
Ich habe erst in der Klasse Gridsettings eine ArrayList mit String Elementen angelegt bestehend aus "x" und "o". "x" symbolisiert die ausgebaute, nicht begehbare Fläche und "o" die Spielfläche. In der Klasse Pacman Grid wird der String ausgewertet und je nachdem die Oberfläche gezeichnet.
Oberfläche wird korrekt angezeigt jedoch habe ich keine Ahnung, wie ich in dieser Implementation nun Pacman bewegen soll. Pacman muss ja prüfen, dass er noch im Gitter ist, aber wie soll ich ihn drawen? Ich kann ja nicht das erstellte Array als Location angeben. Kann ich die Implementation in die Tonne treten oder kann man daraus noch was machen?
GridSettings
Java:
package ui;
public class GridSettings {
private static String [] grid = {"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","xxooooooooooooxxooooooooooooxx",
"xxoxxxxoxxxxxoxxoxxxxxoxxxxoxx","xxoxxxxoxxxxxoxxoxxxxxoxxxxoxx","xxoxxxxoxxxxxoxxoxxxxxoxxxxoxx","xxooooooooooooooooooooooooooxx",
"xxoxxxxoxxoxxxxxxxxoxxoxxxxoxx","xxoxxxxoxxoxxxxxxxxoxxoxxxxoxx","xxooooooxxooooxxooooxxooooooxx","xxxxxxxoxxxxxoxxoxxxxxoxxxxxxx",
"xxxxxxxoxxxxxoxxoxxxxxoxxxxxxx","xxxxxxxoxxooooooooooxxoxxxxxxx","xxxxxxxoxxooooooooooxxoxxxxxxx","xxoooooooooxxxxxxxxoooooooooxx",
"xxxxxxxoxxoxxxxxxxxoxxoxxxxxxx","xxxxxxxoxxoxxxxxxxxoxxoxxxxxxx","xxxxxxxoxxooooooooooxxoxxxxxxx", "xxxxxxxoxxoxxxxxxxxoxxoxxxxxxx",
"xxxxxxxoxxoxxxxxxxxoxxoxxxxxxx","xxooooooooooooxxooooooooooooxx","xxoxxxxoxxxxxoxxoxxxxxoxxxxoxx","xxoxxxxoxxxxxoxxoxxxxxoxxxxoxx",
"xxoooxxooooooooooooooooxxoooxx","xxxxoxxoxxoxxxxxxxxoxxoxxoxxxx","xxxxoxxoxxoxxxxxxxxoxxoxxoxxxx","xxooooooxxooooxxooooxxooooooxx",
"xxoxxxxxxxxxxoxxoxxxxxxxxxxoxx","xxoxxxxxxxxxxoxxoxxxxxxxxxxoxx","xxooooooooooooxxooooooooooooxx","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"};
private static int pixelSize = 25;
private static int width = 800;
private static int height = 800;
public static String[] getGrid() {
return grid;
}
public static int getWidth() {
return width;
}
public static int getHeight() {
return height;
}
public static int getSize() {
return pixelSize;
}
}
PacmanGrid
Code:
package ui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import game.GameInstance;
import objects.PacmanActor;
public class PacmanGrid extends JPanel{
private String[] gameGrid = GridSettings.getGrid();
//walkableLines
private static int[][] coords;
private GameInstance gs;
public PacmanGrid() {
setPreferredSize(new Dimension(800,800));
setOpaque(true);
setBackground(Color.DARK_GRAY);
gs = new GameInstance();
}
public static int[][] getCoords(){
return coords;
}
public void createArray(ArrayList<Integer> x, ArrayList<Integer> y) { //Compromisses the ArrayLists of x and y to one Array. Used for Movement
coords = new int[x.size()][2]; //x.size gibt Anzahl der eben befüllten Arrayist zurück und somit Anzahl der Koordinaten.
for(int i=0;i<coords.length;i++) {
coords[i][0] = x.get(i);
coords[i][1] = y.get(i);
}
}
public void paint(Graphics g) { //Student
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
int temp2 = 0;
ArrayList<Integer> xCoords = new ArrayList<Integer>();
ArrayList<Integer> yCoords = new ArrayList<Integer>();
if(gameGrid != null&&gameGrid.length>0) {
for(int i=0;i<gameGrid.length;i++) {//y veränderung 1 zeile nach unten
String help = gameGrid[i];
int temp=0;
for(int j=0;j<help.length();j++) {
//x veränderung innerhalb der Zeile
if(help.charAt(j)=='x') {
if(j==0) {
g2.setColor(Color.DARK_GRAY);
g2.fillRect(j, temp2, GridSettings.getSize(), GridSettings.getSize());
temp=temp+GridSettings.getSize();
}
else {
g2.setColor(Color.DARK_GRAY);
g2.fillRect(temp, temp2, GridSettings.getSize(), GridSettings.getSize());
temp=temp+GridSettings.getSize();
}
}
if(help.charAt(j)=='o') {
if(j==0) {
g2.setColor(Color.blue);
g2.fillRect(j, temp2, GridSettings.getSize(), GridSettings.getSize());
xCoords.add(j);
yCoords.add(temp2);
temp=temp+GridSettings.getSize();
}
else {
g2.setColor(Color.BLUE);
g2.fillRect(temp, temp2, GridSettings.getSize(), GridSettings.getSize());
xCoords.add(temp);
yCoords.add(temp2);
temp=temp+GridSettings.getSize();
}
}
}
temp2+=GridSettings.getSize();
}
}
createArray(xCoords,yCoords); //Befüllt Coords
PacmanActor help = this.gs.getActor();
if(help!=null) {
gs.start();
help.paint(g2);
}
}
}