Computerhilfen.de Logo
Forum
Tipps
News

Programm Snake funktioniert nicht

Hey Leute,
ich brauche Eure Hilfe. Wir müssen für die Schule das Programm Snake programmieren. Leider bewegt sich die Schlange hierbei nicht. Ich programmiere mit eclipse.

import java.awt.*;
import java.awt.event.*;

public class Schlange {
   //Attribute
   private int d,r;
   private Color farbe;
   Zeichenblatt blatt;
   int teile = 6;
   public int[]x = new int[2500];
   public int[]y = new int[2500];
   
      
   //Konstruktor
   Schlange(Zeichenblatt b) {
      blatt = b;
      
      //Startposition Schlange
      d = 25;
      r = 25;
      
      //zufällige Farbe
      farbe = new Color((int) (Math.random()*255),
            (int) (Math.random() *255),
            (int) (Math.random() *255));   }
   
   
   public void move(String richtung) {
      while (true){
      if (richtung.equals("left")) {
      x[0] = x[0] - 25;
   }else if (richtung.equals("right")) {
      x[0] = x

  • +25;

   }else if (richtung.equals("up")) {
      y[1] = y[1] -25;
   }else if (richtung.equals("down")) {
      y[1] = y[1] +25;
   }
   System.out.print(x[0]);
   
   } }
    
   public void print(Graphics g) {
   
   g.setColor(farbe);
      for (int i = 0; i < teile; i++) {
         x = 100-i*25;
         y= 100;
         g.fillRect(x, y, d, r);
      }
   
   
   }/*public void move() {
      x
  • = x[0]-25;

      
   }*/
   
   
      
} Der Fehler müsste irgendwo in diesem Teil des Programms stecken
Wäre mega nett, wenn Ihr Euch das einmal anschauen und mir vielleicht eine Lösung nennen könntet

Antworten zu Programm Snake funktioniert nicht:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

aus diesem Coding ist schwer zu erkennen warum es nicht funktioniert. Wäre gut das komplette Coding zu sehen.

Was mir hier aber fehlt ist das repaint. Wenn sich deine Schlange bewegen soll und die sich auch von den "Daten" her bewegt, musst Du natürlich die Grafiken neu laden.

Im Prinzip müsstest Du es so aufbauen:

Zitat

package com.edu4java.samplegame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Game extends JPanel {
    int x = 0;
    int y = 0;
    private void moveBall() {
        x = x + 1;
        y = y + 1;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.fillOval(x, y, 30, 30);
    }

    public static void main(String[] args) throws InterruptedException {
        JFrame frame = new JFrame("Sample Frame");
        Game game = new Game();
        frame.add(game);
        frame.setSize(300, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        while (true) {
            game.moveBall();
            game.repaint();
            Thread.sleep(10);
        }
    }
}

Quelle: abeautifulsite.net

Hier passiert im Prinzip das was Du benötigst. Du hast eine while-true-Schleife (eine Endlosschleife) die theoretisch die ganze Zeit läuft. In dieser Schleife kannst Du deine Bewegungen abbilden (moveBall) und musst natürlich die neue Position über das repaint neu zeichnen.
Das Prinzip ist eigentlich immer das gleiche und verhält sich bei Bibliotheken wie LWJGL ähnlich.

Ich hoffe ich konnte helfen, ansonsten gerne nochmal nachfragen und am besten das komplette Coding mitliefen.

LG

« C# Dateien finden die seit einiger Zeit nicht verwendet wurdeProgrammierer gesucht dringend! »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!