Snake Punktezähler funktioniert nicht

SkonroX

Aktives Mitglied
Hallo,
ich habe mich mal an Snake versucht und es auch hinbekommen zu programmieren, jedoch hakt es bei mir mit der Punktezählung, habe einen Integer dafür gleich am anfang deklariert, bekomme jedoch wenn ich es ausgeben will nur den wert 0 zusehen (Im Spiel werden die Punkte in "echtzeit" angezeigt, funktioniert auch wunderbar, sogar wenn ich die Punkte am ende mit (JLabel-name in welchem die punkte gezählt werden).getText() anzeigen will geht es nicht, verstehe nicht wieso, bin dankbar für jede Hilfe!
[JAVA=42]
package Snake;
import javax.swing.SwingUtilities;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
//############################################################
public class Snake extends JFrame
{
private static final long serialVersionUID = 1L;
//------------------------------------------------
private JPanel jContentPane = null;
private JLabel JLabel = null;
//------------------------------------------------
public static Dimension dim = new Dimension(640, 480); // @jve:decl-index=0:
//------------------------------------------------
private static boolean up = false;
private static boolean left = false;
private static boolean right = true;
private static boolean down = false;
//------------------------------------------------
private Image snake_head; // @jve:decl-index=0:
private Image snake_body;
private Image apple; // @jve:decl-index=0:
//------------------------------------------------
private int laenge = 3;
//------------------------------------------------
private static Point[] lage = new Point[(int)(dim.getWidth()*dim.getHeight())/100];
private static Point apfel; // @jve:decl-index=0:
public int highscore = 0;
public int score = 0; //dekl des punktestandes
private JLabel jLabel = null;
private JLabel jLabel1 = null;
//############################################################
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Snake thisClass = new Snake();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
//############################################################
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(snake_head, lage[0].x, lage[0].y, this);
Toolkit.getDefaultToolkit().sync();
g.drawImage(apple, apfel.x, apfel.y, this);
jLabel.setText("" + score);
Toolkit.getDefaultToolkit().sync();
for(int k = 1; k < laenge; k++)
{
g.drawImage(snake_body, lage[k].x, lage[k].y, this);
Toolkit.getDefaultToolkit().sync();
}
g.dispose();
try {Thread.sleep(150);}
catch (InterruptedException e) {e.printStackTrace();}
colli();
move();
repaint();
}
//############################################################
public Snake()
{
super();
initialize();
}
//############################################################
private void colli()
{
if(lage[0].x == apfel.x && lage[0].y == apfel.y)
{
laenge++;
score++; //hochzaehlen des Punktestandes
applen();
}
if(lage[0].x > dim.getWidth() || lage[0].y > dim.getHeight() || lage[0].x < 0 || lage[0].y < 0)
{
if(score > highscore)
{
score = highscore;
}
JOptionPane.showMessageDialog(null, "GameOver! \n Score: " + score + "\n Highscore: " + highscore); //Hier soll es eigentlich ausgeben werden, dennoch highscore und score = 0!
}
for(int i = 1; i < laenge; i++)
{
if(lage.x == lage[0].x && lage.y == lage[0].y)
{
if(score > highscore)
{
score = highscore;
}
JOptionPane.showMessageDialog(null, "GameOver! \n Score: " + score + "\n Highscore: " + highscore); //Hier soll es eigentlich ausgeben werden, dennoch highscore und score = 0!
}
}
}
//############################################################
private void applen()
{
Random rndm = new Random();
int zahlx = 17 + rndm.nextInt(36) * 17;
int zahly = 34 + rndm.nextInt(26) * 17;
apfel = new Point(zahlx, zahly);
}
//############################################################
private void initialize()
{
this.setSize(dim);
this.setContentPane(getJContentPane());
this.setTitle("Snake");
for(int i=0; i<lage.length; i++)
{
lage = new Point(0,0);
}
lage[0].move(170,238);
lage[1].move(153,238);
lage[2].move(136,238);
graphics();
applen();
//------------------------------------------------
this.addKeyListener(new java.awt.event.KeyListener()
{
public void keyPressed(java.awt.event.KeyEvent e)
{
//------------------------------------------------
if (e.getKeyChar() == 'a' && right == false && e.getKeyChar() != 'd')
{
up = false;
left = true;
down = false;
}
//------------------------------------------------
if(e.getKeyChar() == 'd' && left == false && e.getKeyChar() != 'a')
{
up = false;
right = true;
down = false;
}
//------------------------------------------------
if(e.getKeyChar() == 'w' && down == false && e.getKeyChar() != 's')
{
up = true;
left = false;
right = false;
}
//------------------------------------------------
if(e.getKeyChar() == 's' && up == false && e.getKeyChar() != 'w')
{
left = false;
right = false;
down = true;
}
//------------------------------------------------
if(e.getKeyChar() == 'r')
{
initialize();
}
//------------------------------------------------
}
public void keyTyped(java.awt.event.KeyEvent e) {}
public void keyReleased(java.awt.event.KeyEvent e) {}
});
repaint();
}
//############################################################
private void move()
{
for(int i = laenge; i > 0; i--)
{
lage.x = lage[i-1].x;
lage.y = lage[i-1].y;
}
if(up) {lage[0].y = lage[0].y - 17;}
if(left) {lage[0].x = lage[0].x - 17;}
if(right) {lage[0].x = lage[0].x + 17;}
if(down) {lage[0].y = lage[0].y + 17;}
}
//############################################################
private void graphics()
{
ImageIcon sh = new ImageIcon("C:\\Users\\Eugen\\Schule\\Programmieren\\workspace\\Anschaungsmaterial\\head.png");
snake_head = sh.getImage();
ImageIcon sb = new ImageIcon("C:\\Users\\Eugen\\Schule\\Programmieren\\workspace\\Anschaungsmaterial\\body.png");
snake_body = sb.getImage();
ImageIcon ap = new ImageIcon("C:\\Users\\Eugen\\Schule\\Programmieren\\workspace\\Anschaungsmaterial\\apple.png");
apple = ap.getImage();
}
//############################################################
private JPanel getJContentPane()
{
if (jContentPane == null)
{
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(524, 8, 47, 21));
jLabel1.setText("Punkte:");
jLabel1.setForeground(Color.red);
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(579, 8, 34, 20));
jLabel.setForeground(Color.RED);
jContentPane = new JPanel();
jContentPane.setBackground(Color.BLACK);
jContentPane.setLayout(null);
jContentPane.add(jLabel, null);
jContentPane.add(jLabel1, null);
}
return jContentPane;
}
}
[/code]
 

Landei

Top Contributor
Java:
if(score > highscore) {
    highscore = score;
}

So wird ein Schuh draus. Am Anfang ist highscore gleich 0, und jedesmal wenn score größer ist (also immer), wird er in deiner Version auf highscore (also wieder 0) gesetzt.
 

SkonroX

Aktives Mitglied
Nein gerade nicht, es wird ja erst nach der bedingung gefragt, wenn man gameover ist, und es wird dann nicht gleich 0, sondern für highscore (falls es ein neuer ist) wird der score dann eingesetzt.

mfg
 

Volvagia

Top Contributor
Doch, Landei hat recht:

Java:
if(score > highscore)
{
	System.out.println(score);
	score = highscore;
	System.out.println(score);
}
Code:
1
0

btw. man sollte wenn schon nur den relativen und niemals den absoluten Pfad eines Bildes angeben.

Edit: Das definiert "langsam" neu. :(
 

SkonroX

Aktives Mitglied
Mensch das war nur ein versuch ob ich es wirklich schaffe ein spiel zu programmieren (war mein erstes) und war ja immerhin erfolgreich ;P
Und 241 Zeilen Quelltext finde ich ja jetzt nicht sooo tragisch ;D
 

Volvagia

Top Contributor
Ja, und für einen absoluten Neuling finde ich es garnicht schlecht. Als nächstes könntest du versuchen die Schlange in eine andere Klasse auszulagen und zu einen Thread zu machen. Errinnert mich an mein erste Projekt.
Eventuell auch mehrere Wände, und zufällige Items, nicht nur Äpfel und kurz erscheinende Bonusitems.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z SNAKE Schlange beim Aufheben von Essen verlängern Java Basics - Anfänger-Themen 4
AmsananKING Methoden Moving Snake Forward Java Basics - Anfänger-Themen 0
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
B "Snake"-Game verbuggt Java Basics - Anfänger-Themen 0
T Snake-BlueJ Bewegung Java Basics - Anfänger-Themen 7
T Snake mit Bluej Java Basics - Anfänger-Themen 8
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
J Snake Movement Java Basics - Anfänger-Themen 7
W Snake pausieren Java Basics - Anfänger-Themen 4
C Java Nullpointer Exception in 2D-Spiel Snake Java Basics - Anfänger-Themen 8
N Snake Java Basics - Anfänger-Themen 2
C Minispiel Snake Java Basics - Anfänger-Themen 3
A Snake programmieren? Java Basics - Anfänger-Themen 31
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
S Erstes Programm: Hallo Welt funktioniert nicht. Java Basics - Anfänger-Themen 3
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben