Fehler bei Programmierung lässt Figur nicht bewegen

ObjecTV

Mitglied
Hallo liebe Community,

das ist mein erster Post und ich bin so aufregend... - ich meine aufgeregt.
Ich habe angefangen mit Java zu programmieren. Ein Stück weit bin ich gekommen, aber irgendwo häng ich jetzt. Folgendes Problem ist entstanden:

Ich hatte anfangs Bildschirmflackern gehabt, habe das behoben und auf einmal funktionieren meine Bewegeungsbefehle nicht mehr. Falls ihr natürlich im Quellcode mehr Fehler findet wäre ich für Hilfe sehr dankbar!

Apropos es geht hier um ein Snake Spiel!


Das hier ist die Java-Datei mit dem Hintergrund!
Java:
 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package snake;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
/**
 *
 * @author Smilodon
 */
public class Snake extends JFrame implements KeyListener, Runnable{
    
    private Dot dot = new Dot(3,this);
    //Menge der "Dots"
    private boolean up, down, left, right;
    private apple apple = new apple(this);
    
   public Snake (String title) {
   super(title);
   this.setFocusable(true);
   this.addKeyListener(this);
   apple.createLocation();
  
    }
    public void paint (Graphics gr){
    super.paint(gr);
    // mit dieser Methode können wir malen
    /**
     * 
     */
       //Image mit Pfad eingegeben plus Ausrichtung des Bildes  
    gr.drawImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\ background.png"), -250, -250, this);
   
    //Dot wird gezeichnet
    dot.paint(gr);
    
    //Frucht wird gezeichnet
    apple.paint(gr);

    }
    public static void main(String[] args) {
      //Größe des Bildes, schließung des Fensters und größe des Fensters, Sichtbarkeit des Fensters
     Snake snake = new Snake ("Snake!");
     snake.setSize(500, 500);
     new Thread(snake).start();
     snake.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     snake.setVisible(true);
     snake.setUndecorated(true);
     snake.setLocation(500, 500);
     //Spielfeld wird eingerichtet, größe, Ort, ob es Sichtbar ist etc pp
    }
    
            @Override
    public void keyTyped(KeyEvent e) {
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
     if (e.getKeyCode()== 37 && !right){
         left=true;
         right=false;
         down=false;
         up=false;
    }else if (e.getKeyCode() == 38 && !down){
         up=true;
         right=false;
         down=false;
         left=false;
    }else if (e.getKeyCode() == 39 && !left){
        right=true;
        up=false;
        down=false;
        left=false;
    }else if (e.getKeyCode() == 40 && !up){
        down=true;             
        right=false;
        left=false;
        up=false;
              //Erklärung welche Befehle "true" oder "false" sind unter anderem die Zuordnung der Tasten (37,38,39,40)
    }
    }
    
    
    @Override
    public void keyReleased(KeyEvent e) {
    }

    
    @Override
    public void run(){
        while(true){
            if (up){
                dot.move("up");
            }else if (down){
                dot.move("down");
            }else if (left){
                dot.move("left");
            }else if (right){
                dot.move("right");
            }
            
            dot.checkapple(apple);
            
                repaint();//damit der Punkt auch beim Bewegen erscheint
                try {
                    Thread.sleep(140);
                }catch (InterruptedException ex){
                    Logger.getLogger(Snake.class.getName()).log(Level.SEVERE, null, ex);
                }//Den Verzögrungseffekt für den Flaire einschalten!
            }
        }
    }



Das hier ist die Dot Datei - also der Körper der Schlange.
Java:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package snake;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Toolkit;

/**
 *
 * @author Smilodon
 */
public class Dot {
    
    private int dots;
    private int[] dotsX = new int[2500];
    private int[] dotsY = new int[2500];
    private Component comp;
    //Hier steht das mehrere "Dots" auf dem Bildschirm sein können, insgesamt 2500 da unser Spielfeld nicht mehr erlaubt!
    
    public Dot(int dots, Component comp) {
        this.dots = dots;
        this.comp = comp;
        for (int i = 0; i < dots; i++) {
            dotsX[i] = 100-i*10;
            dotsY[i] = 100;     
            //Zeigen wie sich der Dot bewegt
    }}
   
    
public void move(String position) {
    
    for (int i = dots; i>0; i--) {
        dotsX[i] = dotsX [ (i - 1)];
        dotsY[i] = dotsY [ (i - 1)];
        //Hiermit wird klargemacht, dass alle dem ersten Punkt folgen !Wichtig! Man muss sagen dass Punkt 2 auf den Platz von Punkt 1 geht und Punkt 3 auf Punkt 2 etc.
    }
    
    if (position.equals("left")){
        dotsX[0] -= 10;
    } else if (position.equals("right")){
        dotsX[0] += 10;  
    } else if (position.equals("down")){
        dotsY[0] += 10;
    } else if (position.equals("up")){
        dotsY[0] -=10;
        }
}
    
public void checkfrucht(frucht frucht) {
    if (dotsX[0] == frucht.getX() && dotsY[0] == Frucht.getY()) {
        Frucht.createLocation();
    }
}
    
    public void paint (Graphics gr) {
        for (int i = 0; i < dots; i++) {
            //Zeigen das der Dot mehr werden muss wenn Apfel gegessen
            gr.drawImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Smilodon\\Desktop\\Snake Schatz\\Snake Paint\\dot.png"), dotsX[i], dotsY[i], comp);
            //Bild des Dots und Bewegungseingabe in X und Y Werten
               }
        }

    void checkapple(apple apple) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    }


Das hier ist der Apfel!
Java:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package snake;

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Toolkit;

/**
 *
 * @author Smilodon
 */
public class apple {
    
    
    private Component comp;
    private int x, y;
    
    public apple(Component comp) {
        this.comp = comp;
        
    }
    
    public void createLocation() {
        x = 10* (int) (Math.random()*50);
        y = 10* (int) (Math.random()*50);
    }
    
    public int getX(){
        return x;
    }
    
    public int getY() {
        return y;
    }
    
    public void paint(Graphics gr) {
    gr.drawImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Smilodon\\Desktop\\Snake Schatz\\Snake Paint\\apple.png"), x, y, comp);
}}

Danke schon einmal für die Hilfe!!!

LG
ObjecTV
 

Gucky

Top Contributor
Hast du schon mal debugged? Lass dir die einzelnen Schritte mal ausgeben. Oder benutz den Debugger und führe den Code zeilenweise aus. So kannst du das Problem meistens relativ leicht finden. Denn ich denke, keiner hier hat Lust sich deinen Code vollständig anzusehen und nach Fehlern zu suchen. ;) Nicht persöhnlich gemeint. ;)
 

ObjecTV

Mitglied
Hi!

von Debuggen hab ich zurzeit keine Ahnung muss ich zugeben! :oops:
Kann man mir das vielleicht einmal erklären, bitte????:L

Bearbeitung:
Also - Problem mit dem Bewegen gelöst. Jetzt flackert der Bildschirm wieder... jemand ne Idee? Ich krieg die Krise!
Bearbeitung 2:
Jetzt fängts wieder umgekehrt an, Bewegung geht nicht aber flackern weg. Hat das was mit dem Befehl "repaint" zu tun?
 
Zuletzt bearbeitet:

Gucky

Top Contributor
repaint ruft die paintComponent Methode auf und löscht alles, was schon gemalt war.

In Swing ist Grapics schon doppelt gepuffert. Eigentlich dürfte da nichts flackern.


Debuggen: Alles, was hilft den Fehler zu finden. Sysouts mit Variablen und Bestätigungen von Schritten, Benutzung des Debuggers, etc. Der Debugger lässt dich Code zeilenweise oder Blockweise ausführen. Außerdem kannst du dir die Belegungen der Variablen anzeigen lassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Zeiterfassungsprogramm Fehler Spiele- und Multimedia-Programmierung 7
L Fehler bei "Nochmal Spielen" (Java) Spiele- und Multimedia-Programmierung 1
M Fehler bei MinecraftPlugin Spiele- und Multimedia-Programmierung 3
D Minecraft [Minecraft] Java Start Fehler (Core-Dump) Spiele- und Multimedia-Programmierung 1
coolian glsl shader syntax fehler bei if? Spiele- und Multimedia-Programmierung 8
KeexZDeveoper Fehler von OpenGL Spiele- und Multimedia-Programmierung 1
Kim_Dotcom libGDX - opengl Fehler Spiele- und Multimedia-Programmierung 5
D Fehler bei GUI-Aktualisierung Spiele- und Multimedia-Programmierung 9
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
2 jMonkey fehler Spiele- und Multimedia-Programmierung 0
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
A Minecraft Plugin Teleport Fehler Spiele- und Multimedia-Programmierung 1
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
G Sound-Sampling: Sinuston; kein Fehler, aber auch kein Ton :-( Spiele- und Multimedia-Programmierung 3
I Minecraft Java programmierungs fehler "MineCraft" Spiele- und Multimedia-Programmierung 6
V Komischer Fehler in LWJGL Spiele- und Multimedia-Programmierung 18
CookieSoft LWJGL Ubuntu 12.04 Fehler Spiele- und Multimedia-Programmierung 7
CookieSoft Slick Texture laden Fehler Spiele- und Multimedia-Programmierung 6
A Netbeans / Gamegrid Fehler/Maze Spiele- und Multimedia-Programmierung 2
1 Fehler bei Krümel&Monster Spiele- und Multimedia-Programmierung 16
0 Finde den Fehler nicht Spiele- und Multimedia-Programmierung 2
C Java Fehler (If?) Spiele- und Multimedia-Programmierung 14
F fehler Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
N bei abspielen der wav datei fehler Spiele- und Multimedia-Programmierung 6
D Java 2d translation() fehler Spiele- und Multimedia-Programmierung 4
D Fehler beim Stein Scher papier Spiel Spiele- und Multimedia-Programmierung 3
G Schüsse zeichnen, Fehler? Spiele- und Multimedia-Programmierung 3
R BufferStragety Fehler: Component must have a valid peer Spiele- und Multimedia-Programmierung 5
S drawImage Fehler ! Spiele- und Multimedia-Programmierung 3
V Minesweeperprogrammierung Fehler J0098 Spiele- und Multimedia-Programmierung 8
I Fehler bei Änderung der Bildschirmauflösung Spiele- und Multimedia-Programmierung 3
P Objektorientierte Programmierung umwandeln! Spiele- und Multimedia-Programmierung 22
filtastisch Discord JDA Programmierung Spiele- und Multimedia-Programmierung 2
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
Splayfer Discord JDA Programmierung Spiele- und Multimedia-Programmierung 3
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
T Android-App-Programmierung? Spiele- und Multimedia-Programmierung 3
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
J Wie kann ich die Programmierung von Konfiguratoren erlernen? Spiele- und Multimedia-Programmierung 2
E Programmierung eines 2.5D Point&Click Adventures ohne Spieleengine machbar? Spiele- und Multimedia-Programmierung 14
M Programmierung eines "Fantasy Rollenspiels" Spiele- und Multimedia-Programmierung 5
K Minecraft-Forge Mod Programmierung Spiele- und Multimedia-Programmierung 1
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
F Programmierung eines Bots Spiele- und Multimedia-Programmierung 23
M Minecraft Bukkit Programmierung Spiele- und Multimedia-Programmierung 3
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
c_sidi90 Einstieg in die 3D Programmierung Spiele- und Multimedia-Programmierung 6
J Snake Programmierung Spiele- und Multimedia-Programmierung 18
A 3D Programmierung Spiele- und Multimedia-Programmierung 8
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
G API für 3d-Programmierung? OpenGL? Spiele- und Multimedia-Programmierung 12
L Probleme Bei Pong Programmierung Spiele- und Multimedia-Programmierung 2
D 2D Programmierung Spiele- und Multimedia-Programmierung 4
C Wii Java Programmierung Spiele- und Multimedia-Programmierung 7
X JPCT 3d-Spiele Programmierung Tutorial Spiele- und Multimedia-Programmierung 40
S Optimale Grafikkarte für Java 3D programmierung? Spiele- und Multimedia-Programmierung 13
J 3d Programmierung, Fragen: Spiele- und Multimedia-Programmierung 14
A Hilfe bei Programmierung von Abalone Spiele- und Multimedia-Programmierung 6
M Puzzle-Programmierung ->Hilfestellung gesucht!!! Spiele- und Multimedia-Programmierung 5
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben