Hi,
ich bin ein Anfänger und versuche das Spiel Snake auf eine ungewöhnliche Weise zu Programmieren. Es besteht aus der Eingabeaufforderung als "Bild-Ausgabe" und einem Frame als Steuerung.
Das Spiel ist fast fertig und funktioniert auch bis zu einem Punkt. Nun ist es so, dass wenn die Schlange einen "Snack" frisst größer wird. Das ist mein Problem... Die Schlange wird als "*" dargestellt. Doch der Schwanz der Schlange wird nicht ordnungsgemäß dargestellt. Ich grüble schon Tage darüber und komme nicht darauf, was ich falsch gemacht habe.
Der Code:
Wenn ich jetzt nicht den übelsten Tunnelblick habe, sollte es an den 2 Stellen liegen:
Ich hoffe jemand kann mir helfen
Danke schon mal im voraus!
Lg bttl
ich bin ein Anfänger und versuche das Spiel Snake auf eine ungewöhnliche Weise zu Programmieren. Es besteht aus der Eingabeaufforderung als "Bild-Ausgabe" und einem Frame als Steuerung.
Das Spiel ist fast fertig und funktioniert auch bis zu einem Punkt. Nun ist es so, dass wenn die Schlange einen "Snack" frisst größer wird. Das ist mein Problem... Die Schlange wird als "*" dargestellt. Doch der Schwanz der Schlange wird nicht ordnungsgemäß dargestellt. Ich grüble schon Tage darüber und komme nicht darauf, was ich falsch gemacht habe.
Der Code:
Code:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
public class Snake extends Thread{
static int stnr=0;
static int a=1;
static int snack=0;
static int xsnack,ysnack;
public static void main(String[]args)throws InterruptedException{
int x=0,y=0,score=0,z=1;
int[] xalt;
int[] yalt;
int[] xzws;
int[] yzws;
Snake t1 = new Snake();
t1.start();
while(a==1){
TimeUnit.SECONDS.sleep(1);
xalt = new int[z+1];
yalt = new int[z+1];
xzws = new int[z+1];
yzws = new int[z+1];
for (int czws=0; czws<=z; czws++) {
if (czws==0) {
xzws[czws]=xalt[czws];
yzws[czws]=yalt[czws];
}else{
xzws[czws]=xalt[czws];
yzws[czws]=yalt[czws];
}
}
for (int c=0; c<=z; c++) {
if (c==0) {
xalt[c]=x;
yalt[c]=y;
}else{
xalt[c]=xzws[c-1];
yalt[c]=yzws[c-1];
}
}
if (snack==0) {
snack=1;
snackGenerieren();
}
if (stnr==1) {
x=x-1;
}
if (stnr==2) {
x=x+1;
}
if (stnr==3) {
y=y-1;
}
if (stnr==4) {
y=y+1;
}
if (y>20) {
y=0;
}
if (x>40) {
x=0;
}
if (y<0) {
y=20;
}
if (x<0) {
x=40;
}
if (x==xsnack && y==ysnack) {
snack=0;
score++;
z++;
}
System.out.println(score);
for (int yachse=0; yachse<=20; yachse++) {
for (int xachse=0; xachse<=40; xachse++) {
for (int v =0; v<z; v++) {
if (xalt[v]==xachse && yalt[v]==yachse ) {
System.out.print("*");
}
}
if ((x==xachse && y==yachse) ) {
System.out.print("*");
} else{
System.out.print(" ");
}
if (xsnack==xachse && ysnack==yachse) {
System.out.print("~");
}
}
System.out.println();
}
}
}
public static void snackGenerieren(){
xsnack=(int)((Math.random() * 40)+1);
ysnack=(int)((Math.random() * 20)+1);
}
public void run(){
int x=0;
JFrame meinJFrame = new JFrame();
meinJFrame.setTitle("Steuerung");
JPanel panel = new JPanel();
JButton links = new JButton("links");
JButton rechts = new JButton("rechts");
JButton oben = new JButton("oben");
JButton unten = new JButton("unten");
ActionListener l = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
stnr=1;
}
};
ActionListener r = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
stnr=2;
}
};
ActionListener o = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
stnr=3;
}
};
ActionListener u = new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
stnr=4;
}
};
links.addActionListener(l);
rechts.addActionListener(r);
oben.addActionListener(o);
unten.addActionListener(u);
panel.add(links);
panel.add(rechts);
panel.add(oben);
panel.add(unten);
meinJFrame.add(panel);
meinJFrame.pack();
meinJFrame.setVisible(true);
try{
TimeUnit.SECONDS.sleep(1);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
Java:
for (int czws=0; czws<=z; czws++) {
if (czws==0) {
xzws[czws]=xalt[czws];
yzws[czws]=yalt[czws];
}else{
xzws[czws]=xalt[czws];
yzws[czws]=yalt[czws];
}
}
for (int c=0; c<=z; c++) {
if (c==0) {
xalt[c]=x;
yalt[c]=y;
}else{
xalt[c]=xzws[c-1];
yalt[c]=yzws[c-1];
}
}
Java:
for (int yachse=0; yachse<=20; yachse++) {
for (int xachse=0; xachse<=40; xachse++) {
for (int v =0; v<z; v++) {
if (xalt[v]==xachse && yalt[v]==yachse ) {
System.out.print("*");
}
}
if ((x==xachse && y==yachse) ) {
System.out.print("*");
} else{
System.out.print(" ");
}
if (xsnack==xachse && ysnack==yachse) {
System.out.print("~");
}
}
System.out.println();
}
Danke schon mal im voraus!
Lg bttl