Pacman

sherru

Mitglied
Tag Mädels und Jungs,

hat jemand Vorschläge, wie man an einen Pacman Clone, bei dem die Maps variabel eingelesen werden, rangehen kann? Ich dachte an: Map einlesen, in einen Array packen und dann die Map erstellen.

Aber bewegende Geister und verschwindende Coins zu realisieren fällt mir schwer zu realisieren.

Jemand eine Idee?

Grüße
 

Runtime

Top Contributor
Nimm Tiles für die Animationen, für die Kollision kannst du einfach die nächste Position im Array überprüfen, falls es eine Mauer ist, haltet/en Pacman/die Geister an, falls es eine Münze ist, geht er auf das Feld und sie verschwindet.
 

sherru

Mitglied
Ich bin gerade beim Zeichnen der Map, die ich schon im Array habe.
Aber wenn ich nun mit paintComponent was zeichnen möchte, ist der Array natürlich nicht deklariert. Wie deklariere ich ihn, ohne die Werte zu reseten (ansonsten kommt map[][] cannot be resolved).

Vielen Dank!
 

sherru

Mitglied
Ich habe einen Array (10x10) in der Main und würde nun gerne mit einer for Schleife

Java:
for(int i=0; i<=11; i++) {
			for(int j=0; j<11; j++)
			if (map[i][j].equals("0")) {
				g.setColor(Color.BLACK);
				g.fillRect(i, j, 20, 20);
			}

die Teile Zeichnen (0 = Wand / an der Position i j, ist aber erst noch unwichtig). Die Schleife muss sich ja in paintComponent befinden, damit ich überhaupt zeichnen kann, oder?

Aber da der Array nicht deklariert ist, gibts einen Fehler.
 

sherru

Mitglied
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class pac extends JPanel {
	
	public pac() {
		fenster();
	}
	
	public void fenster() {
		 JFrame frame = new JFrame("sdfd");
	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        frame.setAlwaysOnTop(true);
	        frame.setLocationByPlatform(true);
	        frame.setSize(500, 500);
	        frame.getContentPane().add(this);
	        frame.setVisible(true);
	}
	
	
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		new pac();
		
		
		Scanner scn = null;
		try {
			scn = new Scanner(new File("map.txt"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		ArrayList<String> fileCon = new ArrayList<String>();
		while (scn.hasNext()) 
		    fileCon.add(scn.nextLine());
		 
		String[][] content = new String[fileCon.size()][];
		for (int i=0; i<content.length; i++) {
		    content[i] = fileCon.get(i).split(",");
		}
		 
		for (int i=0; i<content.length; i++) {
		    for (int j=0; j<content[i].length; j++)
		        System.out.print(content[i][j] + " | ");
		    System.out.println();
		}
		
		
		String[][] map = new String[10][10];
		
		for (int i=0; i<11; i++) {
			for (int j=0; j<11; j++)
			map[i][j] = "K ";
		}
		
		for (int i=0; i<11; i++) {
			for (int j=0; j<11; j++)
			map[i][j] = content[i][j];
		}
		
		
		for (int i=0;i<11;i++ ){
			for (int j=0;j<11;j++)
				System.out.print(map[i][j]);
			System.out.println();
		}
		
		
		
		
	
		
		
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		for(int i=0; i<11; i++) {
			for(int j=0; j<11; j++)
			if (map[i][j].equals("0")) {
				g.setColor(Color.BLACK);
				g.fillRect(i, j, 20, 20);
			}
		}
		
				
	}
	

}
 

XHelp

Top Contributor
Ja, das habe ich mir fast gedacht... So wird die ganze Sache nicht funktionieren. Das was in der main steht muss da weg. Und außerdem hast du ein Panel, der ein Frame erzeugt. :autsch:
Vllt solltest du dir erstmal paar Grundlagen zur OOP durchlesen und ein paar "Hallo Welt"-Programme machen, bevor du dich an sowas rantraust.
 

sherru

Mitglied
Leider stehe ich unter Zeitdruck...

Ok ich werde mal wieder von vorne Anfangen... also für das Spielfeld mache ich eine neue Klasse und initialisiere die dann in der Main?
 

XHelp

Top Contributor
Nein. Bestenfalls sieht deine main so aus:
Java:
public static void main(String[] args) {
  new PacManGui();
}

Auch wenn du unter Zeitdruck stehst: ohne Grundlagen kommst du nicht weiter, also nimm dir ruhig die Zeit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Pacman-Grafik AWT, Swing, JavaFX & SWT 23

Ähnliche Java Themen

Neue Themen


Oben