Methoden als Klassen benutzen

korbmeister

Aktives Mitglied
Hey Leute, ich bin dabei mein Jump 'n' Run zu schreiben aber da ich jetzt langsam total den überblick verliere möchte ich, die Methoden die für das Spiel benutze als eigene Klasse definieren, damit es etwas ordentlicher aussieht das Problem ist nur, dass die Methoden die Variabeln aus der Hauptklasse brauchen und ich nicht verstehe, wie ich diese übergebe hier ist mal mein Code vieleicht versteht ihr jetzt was ich meine:
Java:
package mario;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


import javax.swing.*;

public class Board extends JPanel implements ActionListener {
	int x = 0;   //Bilder Koordinaten
	int y = 0;	 //Bilder Koordinaten
		
	public int px = 30; //Spieler Koordinaten in Pixel
	int py = 60; //Spieler Koordinaten in Pixel
	
	int feld_x = 0; //Feld x Achse
	int feld_x1 = 0;
	int feld_y = 0; //Feld y Achse
	
	int dx = 0;
	int dy = 0;
	int z = 0;  //wird in public void paint g gebraucht
	int k = 0;
	int rx = 0;
	int lx = 0;
	int uy = 0;
	
	int ax = 0;
	boolean animation = true;
	int ga = 0;
	int gb = 0;
	int g1 = 0;
	int g2 = 0;
	int g3 = 0;
	int g4 = 0;
	int g5 = 0;
	int g6 = 0;
	int g7 = 0;
	int g8 = 0;
	int g9 = 0;
	int g10 = 0;
	
	double lx2 = 0;
	boolean links = false;
	boolean rechts = false;
	int sprunghöhe = 59;	
	int key = 0;	
	int zähler = 0;
	int score = 0;
	
	int geschwindigkeit_x = 2;
	int geschwindigkeit_y = 3;
	boolean sprung = false;		
	boolean falle_nicht_mehr = true;
	
	boolean oben_frei_berechnet = false;
	boolean rechts_frei = true;
	boolean links_frei = true;
	boolean oben_frei = true;
	boolean unten_frei = true;
	Timer time;
	Image block;
	Image luft;
	Image grass;
	Image pilzblock;
	Image mario;
	Image mario2;
	Image Hintergrund;
	Image münze;
	Image wolken;
	
	int[][] Map = {  			
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 3, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 6, 6, 6, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 6, 6, 6, 6, 6, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 5, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {5, 5, 6, 6, 6, 6, 6, 0, 0, 0, 0, 6, 5, 0, 0, 0, 5, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,}
     };
	
	
	public Board () { 			
		setFocusable(true);
		ImageIcon a = new ImageIcon(getClass().getResource("block.png"));
		block = a.getImage();		
		ImageIcon b = new ImageIcon(getClass().getResource("luft.png"));
		luft = b.getImage();
		ImageIcon c = new ImageIcon(getClass().getResource("grass.png"));
		grass = c.getImage();
		ImageIcon d = new ImageIcon(getClass().getResource("pilzblock.png"));
		pilzblock = d.getImage();
		ImageIcon e = new ImageIcon(getClass().getResource("mario.png"));		
		mario = e.getImage();
		ImageIcon f = new ImageIcon(getClass().getResource("münze.png"));		
		münze = f.getImage();
		ImageIcon g = new ImageIcon(getClass().getResource("Hintergrund.png"));		
		Hintergrund = g.getImage();
		ImageIcon h = new ImageIcon(getClass().getResource("wolken.png"));		
		wolken = h.getImage();
		ImageIcon i = new ImageIcon(getClass().getResource("mario2.png"));		
		mario2 = i.getImage();
		addKeyListener(new Al());		
		time = new Timer(10,this);
		time.start();
	}
	

	public void actionPerformed(ActionEvent e){
		
		berechne_rechts_frei();
		berechne_links_frei();					
		if (rechts == true && rechts_frei == true )	{ 		
			px += geschwindigkeit_x;
			ax +=1;
			
		}		
		if (links == true  && links_frei == true && px>3)	{		
			px -= geschwindigkeit_x;
			ax +=1;
			
		}	
						
		if(sprung ==false){	
			zähler = 0;
			berechne_unten_frei();
			if (unten_frei == true){
				falle();
			}
			else {
				falle_nicht_mehr = true;
			}
		}		
		else {		
			berechne_oben_frei();
			if (oben_frei == true && zähler < sprunghöhe && py>5){
				steige();
				zähler += geschwindigkeit_x;
			}
			else {				
				sprung = false;											
			}
		}		
		 berechne_münze_getroffen();
		repaint();		
		if (px>850){
			z=z+29; 
			px = 30;
		}
	}
	
	private void berechne_münze_getroffen() {
		feld_x=px/30+z;
		feld_y=py/30;
		if(Map[feld_y][feld_x] == 4 ){
			Map[feld_y][feld_x] = 0;
			score += 1;
		}
		if(Map[feld_y+1][feld_x] == 4 ){
			Map[feld_y+1][feld_x] = 0;
			score += 1;
		}
		if(py%30 !=0){
			if(Map[feld_y+2][feld_x]==4){
				Map[feld_y+2][feld_x] = 0;
				score += 1;
			}
		}
	}


	private void berechne_rechts_frei() {
		rechts_frei= true;
		rx = px+30;		
		feld_x = rx/30+z;
		feld_y = py/30;
		
		if(Map[feld_y][feld_x]>4){
			rechts_frei = false;
		}		
		
		 if(Map[feld_y+1][feld_x]>4){
			 rechts_frei = false;
		}
		 
		if(py%30 !=0){
			if(Map[feld_y+2][feld_x]>4){
		 		rechts_frei = false;
			}
		}
		
	}
    public void bewege_gegner() {
    	
    }
                                            
	private void berechne_links_frei() {
		links_frei = true;
		lx = px-1;	
		feld_x = lx/30+z;
		feld_y = py/30;	
		
		if(Map[feld_y][feld_x]>4){
			links_frei = false;
		}		
		
		 if(Map[feld_y+1][feld_x]>4){
			 links_frei = false;
		}
		 
		if(py%30 !=0){
			if(Map[feld_y+2][feld_x]>4){
			 	links_frei = false;
			}
    	}
	}


	public void berechne_unten_frei() {
		unten_frei = true;
		uy = py;
		feld_x = px/30+z;
		feld_y = uy/30+2;
				
		if(Map[feld_y][feld_x]>4 ){
			unten_frei = false;
		}			
					
		if(px-(feld_x*30)>0){
			feld_x = (px /30)+1+z;					
			if(Map[feld_y][feld_x]>4 ){
				unten_frei =false;					
			}			
		}									
	}
	
	public void berechne_oben_frei() {
		oben_frei = true;
		uy = py-geschwindigkeit_y;
		feld_x = px/30+z;
		feld_y = uy/30;
				
		if(Map[feld_y][feld_x]>4 ){
			oben_frei = false;
		}			
					
		if(px-(feld_x*30)>0){
			feld_x = (px /30)+1+z;					
			if(Map[feld_y][feld_x]>4 ){
				oben_frei =false;					
			}			
		}									
	}
	
	public void falle() {
		py += geschwindigkeit_y;	
		falle_nicht_mehr = false;		
	}
	
	
	public void steige(){
		py -= geschwindigkeit_y;
	}
	


	public void paint (Graphics g){		
		super.paint(g);
		Graphics2D g2d = (Graphics2D) g;		
		g2d.drawImage(Hintergrund,0,0,null);
		for (int i =0; i<=14;i++){
			for (int o =0; o<=29;o++){
				k = z+o;
				if(Map[i][k]==7){
					g2d.drawImage(pilzblock,x,y,null);
				}
				if(Map[i][k]==5){
					g2d.drawImage(grass,x,y,null);
				}
				if(Map[i][k]==6){
					g2d.drawImage(block,x,y,null);
				}
				if(Map[i][k]==4){
					g2d.drawImage(münze,x,y,null);
				}
				if(Map[i][k]==3){
					
					g2d.drawImage(block,g1,y,null);
				}
				x = x+30;
			}
			x=0;
			y= y+30;
		}	
		x=0;
		y=0;	
		if (ax == 0){
			g2d.drawImage(mario,px,py,null);
		}
		else if(ax % 2 == 0){
			g2d.drawImage(mario2,px,py,null);
		}
		else if(ax % 2 != 0){
			g2d.drawImage(mario,px,py,null);
		}
		dy= dy+1;
		g2d.drawImage(wolken,dy,0,null);
	    dx= dy-900;
	    g2d.drawImage(wolken,dx,0,null);
		if (dy==900){
			dy = 0;
		}
		g1 += 1;
		if (g1 == 200){
			g1 = 10;
		}
		
	}	
		
	private class Al extends KeyAdapter{
		public Al(){}			
		public void keyPressed(KeyEvent e){
			key = e.getKeyCode();					
			if(key == KeyEvent.VK_LEFT){				
					links=true;																			
			}					
			if(key == KeyEvent.VK_RIGHT){
				rechts=true;									
			}	
			
			if(key == KeyEvent.VK_SPACE){
				if (sprung == false && falle_nicht_mehr == true){
					sprung =true;
				}
			}
		}
	
		public void keyReleased(KeyEvent e){
			key = e.getKeyCode();			
			if (key == KeyEvent.VK_LEFT ){
				links = false;				
				ax = 0;
			}
			if (key == KeyEvent.VK_RIGHT ){
				rechts = false;				
				ax = 0;
			}
		}
												
	}
}
PS: Ich hab wirklich bei Google gesucht aber nichts davon verstanden (globale Variabeln etc)
wäre nett wenn ihr mir ein kleines Beispiel machen könntet.
 
Ich denke ich versteh was du meinst und ja der Code ist wirklich nicht sehr übersichtlich.

Die main methode sollte nicht so viele Codezeilen enthalten. Hier mal ein beispiel.



Java:
public class Beispiel{
   public static void main(String[] args){
      private boolean rechtsFrei;

      rechtsFrei = pruefeObRechtsFrei(//HIER KOMMEN DIE VARIABELN REIN DIE DIE METHODE BRAUCHT);
   }

}

Java:
public class Methoden{
   pruefeObRechtsFrei(//HIER WERDEN DIE VARIABELN AUS MAIN WIEDER AUFGEFANGEN){
   //hier tut die methode irgendwas;
   return boolean Wert.
   }
}

Ich weiß nicht ob du das nun so verstehst also generell rufst du die methode auf und übergibst ihr im aufruf die variabeln die die Methode zum rechnen braucht einfaches Beispiel wäre zb.

Java:
int ergebnis = addiereZweiZahlen(zahlA, zahlB)

Java:
addiereZweiZahlen(int a, int b){
   int ergebnis = a + b;
   return ergebnis;
}

Das return landet dann wieder in dem "ergebnis" des Funktionsaufrufes.
 
Zuletzt bearbeitet:
mhh das buch welches du mir hier verlinkt hast, kenne ich allerdings kann ich mit sowas nichts anfangen die Sachen gehen bei mir auf einem Ohr rein und auf dem anderen raus ich brauch einfach Beispiele, hab Java (das was ich bisher kann) nur durch ausprobieren und google gelernt und auch nur dann verstehe ich die Sachen, indem ich es selber ausprobiere.
 
Wie unterscheidet sich das, ob man was im Forum liest, dass aus der Insel ggf. kopiert ist, und ob man es direkt dort nachliest?

Der Satz "Ich kann mit Büchern nix anfangen" ist wohl der dämlichste Spruch, den ich je gehört habe.

Schau dir den Artikel in der Insel an und stelle dazu konkrete Fragen.:toll:
 
Zu viele Infos auf einmal... da steht so viel was überhaupt nicht wichtig für mich ist, ich schaffe es nicht einmal die richtigen Sachen dort zu finden.
 
Naja hab mir die Grundzüge auf nem Taschenrechner beigebracht und möchte jetzt just 4 fun ein Jump 'n' Run programmieren und bin dabei wie ich finde gar nicht einmal so schlecht..
 
Es ist ja auch vollkommen in Ordnung wenn man sich versucht etwas selber beizubringen, man sollte jedoch
auch Tipps annehmen.

Du sagst du willst java lernen, dann Versuch nicht gleich ein ganzes Spiel zu schreiben sondern steiger dich langsam.
Du benutzt in deinem code zB das Schluesselwort "extends" wenn du noch nicht weißt wozu soetwas gut ist orientier dich zunaechst an einfachen Aufgaben an denen man das Prinzip schnell lernt.

Java ist eine Objektorientierte Programmiersprache daher sollte man mE auch frueh mit der Objektorientierung Anfangen.

Und am schnellsten lernt man sowas wenn man sich spezifisch dazu etwas durchliest und Beispielaufgaben erarbeitet.

Zumindest packages solltest du fuer dein weiteres vorgehen zu deinem Programm dir angucken sonst verlierst du den Ueberblick
 
Naja hab mir die Grundzüge auf nem Taschenrechner beigebracht und möchte jetzt just 4 fun ein Jump 'n' Run programmieren und bin dabei wie ich finde gar nicht einmal so schlecht..
Dann lebe weiter in deiner Traumwelt. Dein geposteter Quelltext ist echt unterirdisch und ohne Lese- und Lernbereitschaft deinerseits wird es mit Spieleprogrammierung erst recht nichts werden.
 
und noch ein Tipp: ignorier am besten alles was in diesem Forum von Gästen gepostet wird. Leider sind die Admins hier zu unfähig um Gastpostings zu deaktivieren, deswegen gibt es hier immer mehr Trolle und idioten.
 
korbmeister, auch wenn du keine Buecher magst, empfehle ich dir "CleanCode" von Robert Harris

nud lies dir das mal durch:

Roter Grad - Clean Code Developer

viele Tipps, wie man seinen Code einfacher und uebersichtlicher gestaltet, und schnell aus komplexen Verirrungen einfache Logiken baut
 
[OT]
Leider sind die Admins hier zu unfähig um Gastpostings zu deaktivieren, deswegen gibt es hier immer mehr Trolle und idioten.

Tja,

du hättest hier die Chance als Gast akzente zu legen. Statdesssen demosntrierst du uns hier dein völliges unwissen und reihst dich zudem in die Gruppe der Gäste, die Trolle und Idioten sind, ein ^^.

Sauba.:applaus::toll: [/OT]
 
korbmeister, auch wenn du keine Buecher magst, empfehle ich dir "CleanCode" von Robert Harris
Robert Harris hat sich ganz bestimmt nicht mit Clean Code beschäftigt. Du meinst einen ganz anderen Robert.
nud lies dir das mal durch:

Roter Grad - Clean Code Developer

viele Tipps, wie man seinen Code einfacher und uebersichtlicher gestaltet, und schnell aus komplexen Verirrungen einfache Logiken baut
Wirklich tolle Empfehlung für jemanden, der kein Java beherrscht und laut eigenen Aussagen schon mit dem Lesen eines Buchabschnitts geistig überfordert ist. Wo also kurz gesagt wirklich jeder Tipp nichts als Zeitverschwendung wäre.
 
Kaum ist man mal paar Stunden weg dann sowas... 😀 Wer ernsthaft denkt, dass ich mit dem lesen eines "Buches" überfordert bin, der liegt falsch. Ich sehe es nur nicht ein, da ich noch Hobbys Freizeit etc. habe mit 16 Jahren perfekt in Java programmieren zu können, ich will gar nicht alles verstehen ich möchte einfach nur mein Spiel programmieren und solange es funktioniert bin ich zufrieden. Den Code kann man hinterher immernoch verbessern, wobei ich dazu sagen muss, dass ich Master1991 Beispiel jetzt übernommen habe und es auch jetzt gut funktioniert. Und solange ich mir denken kann wie mein Spiel funktioniert werde ich auch in der Lage sein es immer weiter zu bringen. Wer jetzt noch was konstruktives sagen möchte kann dies gerne tun und nur weil jetzt irgendwelche "Profis" sagen das Programmieren nichts für mich ist, euer Problem ich mach weiter...
 
Natürlich musst du kein Profi sein um ein einfaches Spiel zu schreiben. Da hast du völlig recht. Solange das nur ein Hobby ist und du nicht beruflich programmieren willst, brauchst du die ganze Theorie nicht zu kennen. Aber ich geb dir trotzdem mal ein Beispiel wie man sowas in Klassen aufteilen kann. Mein Code ist allerdings nicht wirklich sauber programmiert aber für den Einstieg reichts.
Man kann übrigens problemlos etwas "ausserhalb" des Fensters malen. Das wird dann halt einfach nicht angezeigt, Das heisst du kannst immer die gesamte Map malen, musst halt nur mit translate das Graphics2D object entsprechend anpassen.

Java:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.IOException;

class TileMap {
    int tileGroesseX, tileGroesseY;
    Block[][] map;
    
    TileMap(String[] mapStrings, int gX, int gY) {
        tileGroesseX = gX;
        tileGroesseY = gY;
        map = new Block[mapStrings.length][mapStrings[0].length()];
        for(int y = 0; y < map.length; y++) {
            for(int x = 0; x < map[y].length; x++) {
                char c = mapStrings[y].charAt(x);
                Block b = null;
                switch(c) {
                    case 'b': b = new Block("block.png"); break;
                    case 'm': b = new Block("münze.png"); break;
                    case 'g': b = new Block("grass.png"); break;
                }
                map[y][x] = b;
            }
        }
    }
    void paint(Graphics2D g) {
        for(int y = 0; y < map.length; y++) {
            for(int x = 0; x < map[y].length; x++) {
                if(map[y][x] != null) {
                    g.translate(x*tileGroesseX, y*tileGroesseY);
                    map[y][x].paint(g);
                    g.translate(-x*tileGroesseX, -y*tileGroesseY);
                }
            }
        }
    }
}

class Block {
    private Image image;

    Block(String imageName) {
        try {
            image = ImageIO.read(Game.class.getResource(imageName));
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
    void paint(Graphics2D g) {
        g.drawImage(image, 0, 0, null);
    }
}

class Mario {
    double posX = 0, posY = 0;
    double speedX = 0, speedY = 0;
    Image mario1, mario2;
    Image marioImage;
    double zeit = 0;
    
    Mario() {
       try {
           mario1 = ImageIO.read(Game.class.getResource("mario.png"));
           mario2 = ImageIO.read(Game.class.getResource("mario2.png"));
           marioImage = mario1;
       } catch(IOException e) {
           e.printStackTrace();
       }
    }
    void update(double zeit) {
        posX += speedX*zeit;
        posY += speedY*zeit;
        this.zeit += zeit;
        if(this.zeit > 500) {
            if(marioImage == mario1) marioImage = mario2;
            else marioImage = mario1;
            this.zeit -= 500;
        }
    }
    void paint(Graphics2D g) {
        g.drawImage(marioImage, (int)posX, (int)posY, null);
    }
}

public class Game extends JPanel implements ActionListener {
    static String[] mapStrings = {
        "                                                                                                                                                                            ",
        "                                                                                                                                                                            ",
        "                                                                                                                                                                            ",
        "           b                                                                                                                                                                ",
        "                                                                                                                                                                            ",
        "         b b                                                                                                                                                                ",
        "    b   mm                                                                                                                                                                  ",
        "                                                                                                                                                                            ",
        "                        m  m                                                                                                                                                ",
        "      b    bbbb         b  b                                                                                                                                                ",
        "     bb    bm                                                                                                                                                               ",
        "    bbb    bm      gg                                                                                                                                                       ",
        "   bbbb    bm     gbb                                                                                                                                                       ",
        "  bbbbb    bm    gbbb                                                                                                                                                       ",
        "ggbbbbb    bg   gbbbbggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
    };
    Timer timer = new Timer(10,this);
    TileMap map = new TileMap(mapStrings, 30, 30);
    Mario mario = new Mario();
    double letzteZeit = System.nanoTime()/1e6;
    double marioSpeed = 0.2; //geschwindigkeit in pixel pro ms
    
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Game game = new Game();
        game.setPreferredSize(new Dimension(900,450));
        frame.add(game);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        game.start();
    }
    
    Game() {
        mario.speedX = marioSpeed; 
        mario.posY = 300;
    }
    
    public void start() {
        timer.start();
    }
    public void stop() {
        timer.stop();
    }
    public void actionPerformed(ActionEvent e){
        if(mario.posX >= 1000) mario.speedX = -marioSpeed;
        if(mario.posX <= 0) mario.speedX = marioSpeed;
        double zeit = System.nanoTime()/1e6;
        mario.update(zeit-letzteZeit);
        letzteZeit = zeit;
        repaint();
    }
    public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0,0,getWidth(),getHeight());
        if(mario.posX > getWidth()/2) {
            g2d.translate(-(mario.posX - getWidth()/2), 0);
        }
        map.paint(g2d);
        mario.paint(g2d);
    }
}
 
Zuletzt bearbeitet:
Hey erst einmal vielen Dank für das Beispiel, zunächst alles verstehe ich nicht 😀 aber viele Sachen sind für mich nützlich, sodass ich jetzt wirklich versuche den Code Ordentlicher zu gestalten, aber ich werde diesen nur soweit verändern, bis ich immernoch weiß wie es funktioniert, weil sonst sehe ich keinen Sinn darin ein Spiel zu schreiben wenn man nicht weiß was man eigentlich gerade tut.
 
So, hab versucht den Code etwas sauberer zu gestalten, hab das mit dem Switch Case eingebaut, die Methoden prüfe_rechts etc. in eine eigene Klasse verlegt und ungebrauchte integer Variablen etc rausgeschmissen.
Die Zahlen beim Array wollte ich so lassen, da ich es so einfacher finde (auch um zu prüfen ob es ein fester block ist oder nicht) und ich so besser Level erstellen kann. Natürlich ist der Code noch unübersichtlich aber im Moment komme ich damit zurecht, dafür hat er ja Kollision, Schwerkraft, münzen etc.
Mein nächstes großen Problem sind die Gegner ich hätte eine Idee wie ich diese umsetzen könnte, allerdings würden dann etwa 30 Boolean und Int Werte rauskommen was dann mehr als bullshit wäre, hätte jemand eine Idee wie ich das mit den Gegner angehen kann? Die Gegner sollen einfach solange platz ist nach links/rechts laufen Richtung wechseln und bei Kollision von der Seite soll der Spieler sterben bei Kollision von oben die Pilze (Gegner).

Mein Code der Hauptklasse:
Java:
package mario;
import java.awt.*;
import java.awt.event.*;



import javax.swing.*;


public class Board extends JPanel implements ActionListener {
	int x = 0;   
	int y = 0;	 
	int block = 0;
    int px = 30; 
	int py = 60; 
	int feld_x = 0; 
	int feld_y = 0;
	int dx = 0;
	int dy = 0;
	int z = 0;  
	int k = 0;	
	int ax = 0;	
	int sprunghöhe = 90;	
	int key = 0;	
	int zähler = 0;
	int score = 0;	
	int geschwindigkeit_x = 2;
	int geschwindigkeit_y = 3;
	
	boolean links = false;
	boolean rechts = false;
	boolean sprung = false;		
	boolean falle_nicht_mehr = true;	
	boolean rechts_frei = true;
	boolean links_frei = true;
	boolean oben_frei = true;
	boolean unten_frei = true;
	
	Methoden S1 = new Methoden();
	Timer time;
	Image steinblock;
	Image grass;
	Image pilzblock;
	Image mario;
	Image mario2;
	Image Hintergrund;
	Image münze;
	Image wolken;	
	SoundLib soundlib;
	
	int[][] Map = {  			
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
			{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 5, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
            {5, 5, 6, 6, 6, 6, 6, 0, 0, 0, 0, 6, 5, 0, 0, 0, 5, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,}
     };
	
	
	public Board () { 	
		setFocusable(true);
		ImageIcon a = new ImageIcon(getClass().getResource("block.png"));
		steinblock = a.getImage();				
		ImageIcon b = new ImageIcon(getClass().getResource("grass.png"));
		grass = b.getImage();
		ImageIcon c = new ImageIcon(getClass().getResource("münze.png"));
		münze = c.getImage();
		ImageIcon d = new ImageIcon(getClass().getResource("mario.png"));		
		mario = d.getImage();
		ImageIcon e = new ImageIcon(getClass().getResource("mario2.png"));		
		mario2 = e.getImage();
		ImageIcon f = new ImageIcon(getClass().getResource("Hintergrund.png"));	
		Hintergrund = f.getImage();
		ImageIcon g = new ImageIcon(getClass().getResource("wolken.png"));	
		wolken = g.getImage();			
		addKeyListener(new Al());		
		time = new Timer(10,this); //hier geschwindigkeit einstellen
		time.start();
		soundlib = new SoundLib();
		soundlib.loadSound("bumm", "sound/bumm.wav");
		soundlib.loadSound("jump", "sound/jump.wav");
		soundlib.playSound("bumm");
	
		
	}
	

	public void actionPerformed(ActionEvent e){		
		rechts_frei = S1.prüfe_rechts_frei(px, py, z, Map);
		links_frei = S1.prüfe_links_frei(px, py, z, Map);
		
		if (rechts == true && rechts_frei == true )	{ 		
			px += geschwindigkeit_x;
			ax += 1;
			
		}		
		if (links == true  && links_frei == true && px>3)	{		
			px -= geschwindigkeit_x;
			ax += 1;
			
		}	
						
		if(sprung ==false){	
			zähler = 0;
			unten_frei = S1.prüfe_unten_frei(px, py, z, Map);
			if (unten_frei == true){
				falle();
			}
			else {
				falle_nicht_mehr = true;			
			}
		}		
		else {		
			
			oben_frei =S1.prüfe_oben_frei(px, py, z, Map, geschwindigkeit_y );
			if (oben_frei == true && zähler < sprunghöhe && py>5){
				steige();
				zähler += geschwindigkeit_y;
			}
			else {				
				sprung = false;											
			}
		}		
		berechne_münze_getroffen();
		repaint();		
		if (px>850){
			z=z+29; 
			px = 30;
		}
	}
	
	private void berechne_münze_getroffen() {
		feld_x=px/30+z;
		feld_y=py/30;
		if(Map[feld_y][feld_x] == 4 ){
			Map[feld_y][feld_x] = 0;
			score += 1;
		}
		if(Map[feld_y+1][feld_x] == 4 ){
			Map[feld_y+1][feld_x] = 0;
			score += 1;
		}
		if(py%30 !=0){
			if(Map[feld_y+2][feld_x]==4){
				Map[feld_y+2][feld_x] = 0;
				score += 1;
			}
		}
	}	            
	public void falle() {
		py += geschwindigkeit_y;	
		falle_nicht_mehr = false;		
	}	
	public void steige(){
		py -= geschwindigkeit_y;
	}


	public void paint (Graphics g){		
		super.paint(g);
		Graphics2D g2d = (Graphics2D) g;		
		g2d.drawImage(Hintergrund,0,0,null);
		for (int i =0; i<=14;i++){
			for (int o =0; o<=29;o++){
				k = z+o;
				block = Map[i][k];
				switch(block){
					
					case 3:
						g2d.drawImage(münze,x,y,null);
						break;
					case 5:
						g2d.drawImage(grass,x,y,null);	
						break;
					case 7:
						g2d.drawImage(pilzblock,x,y,null);
						break;
					case 6:
						g2d.drawImage(steinblock,x,y,null);
						break;					
				}
				x = x+30;
			}
			x=0;
			y= y+30;
		}	
		x=0;
		y=0;	
		if (ax == 0){
			g2d.drawImage(mario,px,py,null);
		}
		else if(ax % 2 == 0){
			g2d.drawImage(mario2,px,py,null);
		}
		else if(ax % 2 != 0){
			g2d.drawImage(mario,px,py,null);
		}
		dy= dy+1;
		g2d.drawImage(wolken,dy,0,null);
	    dx= dy-900;
	    g2d.drawImage(wolken,dx,0,null);
		if (dy==900){
			dy = 0;
		}
		
	}	
		
	private class Al extends KeyAdapter{
		public Al(){}			
		public void keyPressed(KeyEvent e){
			key = e.getKeyCode();					
			if(key == KeyEvent.VK_LEFT){				
					links=true;																			
			}					
			if(key == KeyEvent.VK_RIGHT){
				rechts=true;									
			}	
			
			
			if(key == KeyEvent.VK_SPACE || key == KeyEvent.VK_UP  ){
				if (sprung == false && falle_nicht_mehr == true){
					sprung =true;
					soundlib.playSound("jump");
				}
			}
		}
	
		public void keyReleased(KeyEvent e){
			key = e.getKeyCode();			
			if (key == KeyEvent.VK_LEFT ){
				links = false;				
				ax = 0;
			}
			if (key == KeyEvent.VK_RIGHT ){
				rechts = false;				
				ax = 0;
			}
		}
												
	}
}
 
Wieso 30 boolean werte? Das würd mich interessieren...

Mach doch einfach ein gegner objekt das von aussen bewegt wird...

Deine hauptklasse is wirklich nicht der hit... z k ax x y oop ist was anderes
 
Ich könnte es mir nur so vorstellen gegner_1_rechts_frei gegner_1_x gegner_1_y ......... das wäre ja Schwachsinn weiß ich selber, Hauptklasse hab ich versucht so gut es geht für meinen Wissensstand zu machen, nur was mich da sehr stört, dass das Spiel je nachdem wie schnell der PC langsamer/schneller wird. Und ich weiß nicht wie ich außerhalb der paint methode etwas auf mein JFrame kriege.


Danke das ihr euch die Mühe macht mir zu helfen.
 
Was hat du grundsätzlich vor? Bzw warum willst du das machen?
Ich würde mich mal einwenig mit den Grundlagen beschäftigen.

gegner_1_x ist natürlich Schwachsinn..
Du hast ein klasse Gengner das hat eine eigenschaft X. Dann hast du eine Liste von Gegnern.
Stell dir vor du hast eine Software zu Verwaltung von Kunden. Da hast du auch nicht eine Klasse mit 10 Millionen Eigenschaften
kunde_1_vorname, kunde_1_nachname, kunde_2_vorname.. sondern du hat eine Liste von Kunden die die jeweiligen Eigenschaften haben...

Zum Thema Geschwindigkeit... du brauchst einen Game Loop, das nach jedem durchang, eine gewisse Zeit wartet... aber sowas wird doch in jedem Spiele tutorial erklärt...

Also ich würd mir mal ein Buch ansehen... zb Java von Kopf bis Fuss und dann eventuell mal quaxlis tutorial ansehen.. http://www.ralf-bauer.org/java/tutorial/Tutorial.zip
 
Ich verstehe nicht ganz was du mit liste meinst ich kann mir nicht vorstellen wie eine variable x für mehrere Gegner genutzt werden kann das ist mein Problem kannst du mir ein ganz kleines Beispiel geben?

PS: Quaxils Tutorial habe ich mir schon etwas angeguckt wobei das ja ein ganz anders Spiel ist, als das meines werden soll.
 
Zuletzt bearbeitet:
Mit einem Array geht das.

Benutzt du schon vorher.

Du machst eine Klasse "Gegner" und dann ein Gegner[] meineGegener;
 
Ich würde mich mal mit den Grundlagen beschäftigen... sonst wird das echt mühsam...

also ich meine sowas...

Java:
import java.util.ArrayList;
import java.util.List;

public class Spiel {

	public static void main(String[] args) {
		List<Gegner> gegnerList = new ArrayList<Gegner>();
		gegnerList.add(new Gegner("A", 0));
		gegnerList.add(new Gegner("B", 0));
		gegnerList.add(new Gegner("C", 0));

		for (Gegner gegner : gegnerList) {
			System.out.println("Gegner " + gegner.getId() + " ist an Pos " + gegner.getPosX());
		}

		System.out.println("Gegner an Stelle 2 zwei Schritt vor");
		gegnerList.get(2).forward();
		gegnerList.get(2).forward();

		for (Gegner gegner : gegnerList) {
			System.out.println("Gegner " + gegner.getId() + " ist an Pos " + gegner.getPosX());
		}

	}
}
Java:
public class Gegner {

	private String id;

	private int posX;
	private int poxY;

	public Gegner(String id, int posX) {
		this.id = id;
		this.posX = posX;
	}

	public void forward() {
		posX++;
	}

	public void backward() {
		posX--;
	}

	public int getPosX() {
		return posX;
	}

	public int getPoxY() {
		return poxY;
	}

	public String getId() {
		return id;
	}

}

Darf ich fragen, wie alt du bist?
 
Ich bin gerade 16 geworden und hab Programmieren oder so nie richtig gelernt fangen in der Schule gerade mit Java an aber nur so kleine Rechen Programme und so. Das mit dem Array ist eine gute Idee bin ich wirklich nicht drauf gekommen, ich probiere es jetzt erstmal selber, wenn es nichts wird probiere ich dein Beispiel aus danke Leute!
 
Bn noch nicht weit im Buch gekommen, habe es aber mit den Gegner trotzdem erstmal mit einem normalen Array hinbekommen, das mit der Arraylist war mir doch noch etwas zu kompliziert. Hab es jetzt so gelöst kann, oder ist das totaler murks?
Teil der Hauptklasse:

Java:
public void actionPerformed(ActionEvent e){		
		pilz.kriege_Map(Map,z);
		pilz.bewege_gegner();
		pilz.berechne_kollision(px,py);
		gegner_karte = pilz.gegner_karte;	
		
		rechts_frei = S1.prüfe_rechts_frei(px, py, z, Map);
		links_frei = S1.prüfe_links_frei(px, py, z, Map);
		
		if (rechts == true && rechts_frei == true )	{ 		
			px += geschwindigkeit_x;
			ax += 1;			
		}		
		if (links == true  && links_frei == true && px>3)	{		
			px -= geschwindigkeit_x;
			ax += 1;			
		}	
						
		if(sprung ==false){	
			zähler = 0;
			unten_frei = S1.prüfe_unten_frei(px, py, z, Map);
			if (unten_frei == true){
				falle();
			}
			else {
				falle_nicht_mehr = true;			
			}
		}		
		else {		
			
			oben_frei =S1.prüfe_oben_frei(px, py, z, Map, geschwindigkeit_y );
			if (oben_frei == true && zähler < sprunghöhe && py>5){
				steige();
				zähler += geschwindigkeit_y;
			}
			else {		
				zähler += geschwindigkeit_y;
				if (zähler >= sprunghöhe)
					sprung = false;		
			}		
		}		
		berechne_münze_getroffen();
		repaint();		
		if (px>850){
			z=z+30; 
			px = 30;	
			pilz.leere_karte();
		}
	}
	
	
	public void berechne_münze_getroffen() {
		feld_x=px/30+z;
		feld_y=py/30;
		if(Map[feld_y][feld_x] == 3 ){
			Map[feld_y][feld_x] = 0;
			score += 1;
			soundlib.playSound("münze");
		}
		if(Map[feld_y+1][feld_x] == 3 ){
			Map[feld_y+1][feld_x] = 0;
			score += 1;
			soundlib.playSound("münze");
		}
		if(py%30 !=0){
			if(Map[feld_y+2][feld_x]==3){
				Map[feld_y+2][feld_x] = 0;
				score += 1;
				soundlib.playSound("münze");
			}
		}
		if(px%30 != 0){
			feld_x=px/30+z+1;
			feld_y=py/30;
			if(Map[feld_y][feld_x] == 3 ){
				Map[feld_y][feld_x] = 0;
				score += 1;
				soundlib.playSound("münze");
			}
			if(Map[feld_y+1][feld_x] == 3 ){
				Map[feld_y+1][feld_x] = 0;
				score += 1;
				soundlib.playSound("münze");
			}
			if(py%30 !=0){
				if(Map[feld_y+2][feld_x]==3){
					Map[feld_y+2][feld_x] = 0;
					score += 1;
					soundlib.playSound("münze");
				}
			}
		}
	}	            
	public void falle() {
		py += geschwindigkeit_y;	
		falle_nicht_mehr = false;		
	}	
	public void steige(){
		py -= geschwindigkeit_y;
	}
	

	public void paint (Graphics g){		
		super.paint(g);
		Graphics2D g2d = (Graphics2D) g;		
		g2d.drawImage(Hintergrund,0,0,null);
		
		wy= wy+1;
		g2d.drawImage(wolken,wy,0,null);
	    wx= wy-900;
	    g2d.drawImage(wolken,wx,0,null);
		if (wy==900){
			wy = 0;
		}
		for (int i =0; i<=14;i++){
			for (int o =0; o<=29;o++){
				k = z+o;
				block = Map[i][k];
				switch(block){
					case 1:
						Map[i][k] = 0;
						pilz.erstelle_gegner(i,o);
						break;					
					case 3:
						g2d.drawImage(münze,x,y,null);
						break;
					case 5:
						g2d.drawImage(grass,x,y,null);	
						break;
					case 7:
						g2d.drawImage(pilzblock,x,y,null);
						break;
					case 6:
						g2d.drawImage(steinblock,x,y,null);
						break;	
					case 11:
						g2d.drawImage(pflanze,x,y,null);
						break;	
					
				}
				x = x+30;
			}
			x=0;
			y= y+30;
		}	
		x=0;
		y=0;	
		if (ax == 0){
			g2d.drawImage(mario,px,py,null);
		}
		else if(ax % 2 == 0){
			g2d.drawImage(mario2,px,py,null);
		}
		else if(ax % 2 != 0){
			g2d.drawImage(mario,px,py,null);
		}
	for (int i=0; i <= 4; i++){
			if(gegner_karte[0][i] == 1){				
				bx = gegner_karte[3][i];
				if ( bx == 2){
					if (gegner_karte[1][i] % 2 == 0){
						g2d.drawImage(pilzgegner,gegner_karte[1][i],gegner_karte[2][i],null);
					}
					else {
						g2d.drawImage(pilzgegner1,gegner_karte[1][i],gegner_karte[2][i],null);
					}
				}
				else {
					if (gegner_karte[1][i] % 2 == 0){
						g2d.drawImage(pilzgegnerrechts,gegner_karte[1][i],gegner_karte[2][i],null);
					}
					else {
						g2d.drawImage(pilzgegnerrechts1,gegner_karte[1][i],gegner_karte[2][i],null);
					}
				}
			}
		}
	}

Java:
package mario;

import java.util.Arrays;

Gegner Klasse:

public class Gegner {
	int gegner_nummer = 0;
	int gx = 0;
	int gy = 0;
	int[][] leere_gegner_karte = {  
			{0,0,0,0,0}, 
			{0,0,0,0,0},  
			{0,0,0,0,0},  
			{0,0,0,0,0}   
	};
	int[][] gegner_karte = {  
			{0,0,0,0,0},  //gegner nummer
			{0,0,0,0,0},  //gegner x
			{0,0,0,0,0},  //gegner y
			{0,0,0,0,0}   // rechts = 1 links = 2
	};
	
	int z;
	Methoden S2 = new Methoden();
	frame S1 = new frame(null);
	boolean rechts_frei = true;
	boolean links_frei = true;
	boolean links = true;
	boolean rechts = true;
	int[][] Map ;
	public Gegner(){
		
		
	}
	public void erstelle_gegner(int feldy, int feldx){
		gx = feldx*30;
		gy = feldy*30;
		gegner_karte[0][gegner_nummer] = 1;
		gegner_karte[1][gegner_nummer] = gx;
		gegner_karte[2][gegner_nummer] = gy;
		gegner_karte[3][gegner_nummer] = 2;
		gegner_nummer ++;
	}
	
	public void bewege_gegner(){
		for (int i=0; i <= 4; i++){
			if(gegner_karte[0][i] == 1){
				gx = gegner_karte[1][i];
				gy = gegner_karte[2][i];
					
				if( gegner_karte[3][i] == 2){			//wenn links
					links_frei = prüfe_links_frei();				
					if(links_frei == true){
						gegner_karte[1][i] --;
					}
					else {
						gegner_karte[3][i] = 1;
					}
				}
															//wenn rechts
				else {
					rechts_frei = prüfe_rechts_frei();
					
					if(rechts_frei == true){
						gegner_karte[1][i] ++;
					}
					else {
						gegner_karte[3][i] = 2;
					}					
				}
			}			
		}				
	}	
	
	public boolean prüfe_rechts_frei(){
		rechts = true;
		int lx = gx+31;	
		int feld_x = lx/30+z;
		int feld_y = gy/30;	
		
		if(Map[feld_y][feld_x]>4 || gx >868){
			rechts = false;
		}
		if(Map[feld_y+1][feld_x]==0){
			rechts = false;
		}
		
		if (rechts == true){
			return true;
		}
		else {
			return false;
		}
	}
	
	public boolean prüfe_links_frei(){
		links = true;
		int lx = gx-1;	
		int feld_x = lx/30+z;
		int feld_y = gy/30;	
	
		if(Map[feld_y][feld_x]>4 || gx <2){
			links = false;
		}
		if(Map[feld_y+1][feld_x]==0 ){
			links = false;
		}
		
		if (links == true){
			return true;
		}
		else {
			return false;
		}
	}
	
	
	
	public void berechne_kollision(int px, int py){
		for (int i=0; i <= 4; i++){
			if(gegner_karte[0][i] == 1){
				gx = gegner_karte[1][i];
				gy = gegner_karte[2][i];
				if((gx-px < 29 && gx-px > -29) && (gy-py == 30 && gy-py < 59)){
					
					//S1.tot();
				}
			}
		}
	}
	
	
	public void kriege_Map(int [][] karte, int g){
		Map = karte;
		z = g;
	}	
	public void leere_karte(){
		gegner_karte = leere_gegner_karte;
	}
	
}
 
Zuletzt bearbeitet:
Funktioniert es wie es soll?

Das Gegner–Karte Array sieht ein bisschen komisch aus.

Ansonsten ist das alles sehr unstrukturiert. Kaum Kommentare. Variablen sind groß geschrieben.
 
Zuletzt bearbeitet von einem Moderator:
Funktionieren tuts super hab jetzt noch was verändert (Spielerkollision) aber klappt auch alles der Gegner Array ist halt einfach auf 5 Gegner pro Level begrenzt und wird nach jedem Level reseted ich kann das Spiel ja mal hochladen dann könnt ihr euch selber ein Bild machen, wäre jedenfalls sehr nett.

Link kommt noch, ich werde es morgen auch nochmal was aufräumen und Kommentare reinsetzen damit es einfacher für euch ist, aber jetzt keine Zeit mehr dafür.


EDIT: Hier ist es File-Upload.net - Spiel.rar
 
Zuletzt bearbeitet:
Kleiner Tipp:

[c]if (rechts == true && rechts_frei == true )[/c] --> [c]if (rechts && rechts_frei)[/c]

[c]if(sprung ==false)[/c] --> [c]if(! sprung)[/c]
 

Neue Themen


Zurück
Oben