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.
 

Master1991

Mitglied
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:

korbmeister

Aktives Mitglied
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.
 
M

Marcinek

Gast
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:
 

korbmeister

Aktives Mitglied
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.
 
T

TryToHelp

Gast
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.
Das wirft natürlich die berechtigte Frage auf: Was willst du überhaupt mit Programmieren? Widme deine Zeit doch lieber Dingen, die dir auch liegen.
 

korbmeister

Aktives Mitglied
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..
 

Master1991

Mitglied
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
 
B

bnm

Gast
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.
 
R

Rolf455

Gast
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.
 

Phash

Top Contributor
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
 
M

Marcinek

Gast
[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]
 
G

gst

Gast
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.
 

korbmeister

Aktives Mitglied
Kaum ist man mal paar Stunden weg dann sowas... :D 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...
 

DrZoidberg

Top Contributor
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:

korbmeister

Aktives Mitglied
Hey erst einmal vielen Dank für das Beispiel, zunächst alles verstehe ich nicht :D 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.
 

korbmeister

Aktives Mitglied
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;
			}
		}
												
	}
}
 

ARadauer

Top Contributor
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
 

korbmeister

Aktives Mitglied
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.
 

ARadauer

Top Contributor
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
 

korbmeister

Aktives Mitglied
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:
M

Marcinek

Gast
Mit einem Array geht das.

Benutzt du schon vorher.

Du machst eine Klasse "Gegner" und dann ein Gegner[] meineGegener;
 

ARadauer

Top Contributor
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?
 

korbmeister

Aktives Mitglied
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!
 

korbmeister

Aktives Mitglied
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:
M

Marcinek

Gast
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:

korbmeister

Aktives Mitglied
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:

Landei

Top Contributor
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]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
frau-u Problem mit Klassen und Vererbung - benutzen von Methoden Java Basics - Anfänger-Themen 2
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
C Methoden/Klassen Übergabewerte Java Basics - Anfänger-Themen 8
C Java Klassen/Methoden/Übergabeparameter Java Basics - Anfänger-Themen 4
C Methoden Auf Methoden anderer Klassen zugreifen Java Basics - Anfänger-Themen 10
J Teile der Funktionalität von Klassen in Methoden platzieren. Java Basics - Anfänger-Themen 3
M Methoden (in Klassen) Java Basics - Anfänger-Themen 4
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
arjoopy Methoden Methoden anderer Klassen Java Basics - Anfänger-Themen 6
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
T Wie finde ich passende Java Klassen & Methoden? Java Basics - Anfänger-Themen 4
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
R Anfängerfrage zu Methoden in Vererbte Klassen Java Basics - Anfänger-Themen 2
C Methoden aus Klassen anzeigen lassen Java Basics - Anfänger-Themen 14
B Übungsaufgabe zu Klassen, Methoden ... Java Basics - Anfänger-Themen 2
K Vererbung Methoden in klassen auslagern und in mehreren Klassen verfügbar machen Java Basics - Anfänger-Themen 8
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
B Klassen Java Taschenrechner mit Klassen und Methoden Java Basics - Anfänger-Themen 12
staxx6 ArrayList Methoden aufrufen bestimmter Klassen Java Basics - Anfänger-Themen 4
J Problem mit Klassen und Methoden Java Basics - Anfänger-Themen 7
W Kontenverwaltungssystem (Klassen, Methoden) Java Basics - Anfänger-Themen 3
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
H Klassen und Methoden Java Basics - Anfänger-Themen 12
D Kapselung Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 7
A Klassen Methoden... Java Basics - Anfänger-Themen 15
I Objekte an andere Klassen/Methoden übergeben? Java Basics - Anfänger-Themen 5
T Vererbung und Zugriff auf Methoden von abgeleiteten Klassen Java Basics - Anfänger-Themen 2
T Kapselung: public-Methoden in protected-Klassen Java Basics - Anfänger-Themen 3
T OOP abstrakte klassen - methoden Java Basics - Anfänger-Themen 8
T Klassen, Objekte, Methoden Java Basics - Anfänger-Themen 9
U 2 Klassen mit get und set Methoden Java Basics - Anfänger-Themen 11
F Stilfrage: Klassen & Methoden Java Basics - Anfänger-Themen 15
V OOP Klassen Methoden Rückgabewert Java Basics - Anfänger-Themen 15
V OOP Klassen Methoden Java Basics - Anfänger-Themen 2
J Verständniss Frage zu Klassen, Objekte und Methoden Java Basics - Anfänger-Themen 8
L Methoden von anderen Klassen Aufrufen Java Basics - Anfänger-Themen 5
J Methoden/Klassen Problem Java Basics - Anfänger-Themen 9
E 2 Klassen - Problem bei Methoden Java Basics - Anfänger-Themen 22
F Auf Methoden anderer Klassen zugreifen? Java Basics - Anfänger-Themen 8
G Abstrakte Klassen und Methoden Java Basics - Anfänger-Themen 3
D In Gui auf Methoden anderer Klassen zugreifen Java Basics - Anfänger-Themen 2
U Methoden aus Programmfremden Klassen nutzen Java Basics - Anfänger-Themen 2
M Klassen/Methoden API Java Basics - Anfänger-Themen 6
G ArraylList aus Klassen --> Methoden der Klassen aufrufen Java Basics - Anfänger-Themen 3
T Funktionen Plotter - Klassen/Methoden/Funktionen Java Basics - Anfänger-Themen 13
H Wie kann ich auf Methoden von anderen Klassen zugreifen? Java Basics - Anfänger-Themen 1
M Methoden von Klassen aufrufen Java Basics - Anfänger-Themen 4
A Methoden von externen Klassen aufrufen Java Basics - Anfänger-Themen 3
G Übertragen von Variablen auf andere klassen oder Methoden Java Basics - Anfänger-Themen 2
J Methoden aus fremden Klassen verwenden Java Basics - Anfänger-Themen 6
T Mehrere paint Methoden in unterschiedlichen Klassen Java Basics - Anfänger-Themen 7
K Methoden Klassen Bsp. Bankkonto Java Basics - Anfänger-Themen 4
M Klassen/Methoden Java Basics - Anfänger-Themen 10
L Zusammenhang Methoden, Klassen, Objekte, static - sun doku Java Basics - Anfänger-Themen 4
C Methoden von verschieden Klassen in eine Klasse reinpacken? Java Basics - Anfänger-Themen 4
T Methoden / Klassen Problem Java Basics - Anfänger-Themen 11
G Methoden/Klassen elementare Probleme Java Basics - Anfänger-Themen 3
E Synchronized - Methoden in verschied. Klassen Java Basics - Anfänger-Themen 3
G dringende frage zu klassen und methoden ( klassendiagramm) Java Basics - Anfänger-Themen 19
L Klassen/Methoden/Objekt/Vererbung Java Basics - Anfänger-Themen 6
L Klassen und Methoden für Dateivergleiche. Java Basics - Anfänger-Themen 4
G Was sind Klassen, Objekte und Methoden? Java Basics - Anfänger-Themen 3
H Methoden aus anderen Klassen aufrufen Java Basics - Anfänger-Themen 3
K klassen/methoden Java Basics - Anfänger-Themen 4
M Zugriff auf Klassen/Methoden im Hauptverzeichnis Java Basics - Anfänger-Themen 2
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Kotelettklopfer Methoden nicht aufrufbar Java Basics - Anfänger-Themen 34
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben