Hallo Leute,
ich hätte mal eine Frage zu meinem Code:
Sollte in Richtung Snake gehen und sehr simpel ausfallen:
[CODE lang="java" title="MeinPanel"]package nh;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JPanel;
public class Panel extends JPanel implements ActionListener {
static final int screenWidth = 600;
static final int screenHeight = 600;
static final int snakesize = 25;
static final int gameUnits = (screenWidth * screenHeight) / snakesize;
static final int delay = 55;
public boolean running = false;
protected Snake snake;
//protected Apple apple;
protected Random random;
public Panel()
{
random = new Random();
snake = new Snake();
this.setPreferredSize(new Dimension(screenWidth, screenHeight));
this.setBackground(Color.BLACK);
this.setFocusable(true);
this.addKeyListener(new Adapter(snake));
}
public void actionPerformed(ActionEvent e) {
System.out.println("Test");
if (running) {
// move();
//checkCollisions();
}
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
draw(g);
}
public void draw(Graphics g) {
// drawGrid(g);
drawSnake(g);
// drawApple(g);
}
private void drawSnake(Graphics g) {
g.setColor(Color.GREEN);
//set Color for Head
g.fillRect(snake.getHead().getPosX(), snake.getHead().getPosY(), snakesize, snakesize);
//wenn die schlange Komponenten hat
if(snake.getTail().size()>0)
for(int i=0; i<snake.getTail().size();i++)
{
Component c = (Component) snake.getTail().get(i);
g.fillRect(c.posX, c.posY, snakesize, snakesize);
}
}
/*
private void drawSnake(Graphics g) {
g.setColor(Color.GREEN);
for (int i = 0; i < snake.length; i++) {
g.fillRect(snake.XPositions, snake.YPositions, unitSize, unitSize);
}
}
*/
}
[/CODE]
[CODE lang="java" title="AdapterCode"]package nh;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Adapter extends KeyAdapter {
static final int screenWidth = 600;
static final int screenHeight = 600;
static final int snakesize = 25;
static final int rasterfeld = (screenWidth * screenHeight) / snakesize;
static final int delay = 75;
private final int startXPosition = (int) (rasterfeld / 2);
private final int startYPosition = (int) (rasterfeld / 2);
private Snake snake;
private Direction dir;
public Adapter(Snake snake)
{
this.snake=snake;
}
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_RIGHT:
System.out.println("nachRechts");
snake.dir = dir.Right;
snake.getHead().setPosX(snake.getHead().getPosX()+snakesize);
break;
case KeyEvent.VK_LEFT:
System.out.println("nachLinks");
snake.dir= dir.Left;
snake.getHead().setPosY(snake.getHead().getPosX()-snakesize);
break;
case KeyEvent.VK_UP:
System.out.println("nachOben");
snake.dir = dir.Up;
snake.getHead().setPosX(snake.getHead().getPosY()+snakesize);
break;
case KeyEvent.VK_DOWN:
System.out.println("nachUnten");
snake.dir = dir.Down;
snake.getHead().setPosX(snake.getHead().getPosY()-snakesize);
break;
}
}
}
/*
case KeyEvent.VK_RIGHT:
if (snake.direction != Panel.Direction.Left) {
snake.direction = Panel.Direction.Right;
}
break;
case KeyEvent.VK_LEFT:
if (snake.direction != GamePanel.Direction.Right) {
snake.direction = GamePanel.Direction.Left;
}
break;
case KeyEvent.VK_UP:
if (snake.direction != GamePanel.Direction.Down) {
snake.direction = GamePanel.Direction.Up;
}
break;
case KeyEvent.VK_DOWN:
if (snake.direction != GamePanel.Direction.Up) {
snake.direction = GamePanel.Direction.Down;
}
break;
*/[/CODE]
er geht in die ActionPerformed nicht rein....
und somit kann ich leider auch den Schlangekopf nicht bewegen!
Die Key-Eingaben bekomme ich.
Was mache ich falsch?
Kann mir jemand vielleicht einen Tipp geben?
LG J
ich hätte mal eine Frage zu meinem Code:
Sollte in Richtung Snake gehen und sehr simpel ausfallen:
[CODE lang="java" title="MeinPanel"]package nh;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JPanel;
public class Panel extends JPanel implements ActionListener {
static final int screenWidth = 600;
static final int screenHeight = 600;
static final int snakesize = 25;
static final int gameUnits = (screenWidth * screenHeight) / snakesize;
static final int delay = 55;
public boolean running = false;
protected Snake snake;
//protected Apple apple;
protected Random random;
public Panel()
{
random = new Random();
snake = new Snake();
this.setPreferredSize(new Dimension(screenWidth, screenHeight));
this.setBackground(Color.BLACK);
this.setFocusable(true);
this.addKeyListener(new Adapter(snake));
}
public void actionPerformed(ActionEvent e) {
System.out.println("Test");
if (running) {
// move();
//checkCollisions();
}
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
draw(g);
}
public void draw(Graphics g) {
// drawGrid(g);
drawSnake(g);
// drawApple(g);
}
private void drawSnake(Graphics g) {
g.setColor(Color.GREEN);
//set Color for Head
g.fillRect(snake.getHead().getPosX(), snake.getHead().getPosY(), snakesize, snakesize);
//wenn die schlange Komponenten hat
if(snake.getTail().size()>0)
for(int i=0; i<snake.getTail().size();i++)
{
Component c = (Component) snake.getTail().get(i);
g.fillRect(c.posX, c.posY, snakesize, snakesize);
}
}
/*
private void drawSnake(Graphics g) {
g.setColor(Color.GREEN);
for (int i = 0; i < snake.length; i++) {
g.fillRect(snake.XPositions, snake.YPositions, unitSize, unitSize);
}
}
*/
}
[/CODE]
[CODE lang="java" title="AdapterCode"]package nh;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Adapter extends KeyAdapter {
static final int screenWidth = 600;
static final int screenHeight = 600;
static final int snakesize = 25;
static final int rasterfeld = (screenWidth * screenHeight) / snakesize;
static final int delay = 75;
private final int startXPosition = (int) (rasterfeld / 2);
private final int startYPosition = (int) (rasterfeld / 2);
private Snake snake;
private Direction dir;
public Adapter(Snake snake)
{
this.snake=snake;
}
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_RIGHT:
System.out.println("nachRechts");
snake.dir = dir.Right;
snake.getHead().setPosX(snake.getHead().getPosX()+snakesize);
break;
case KeyEvent.VK_LEFT:
System.out.println("nachLinks");
snake.dir= dir.Left;
snake.getHead().setPosY(snake.getHead().getPosX()-snakesize);
break;
case KeyEvent.VK_UP:
System.out.println("nachOben");
snake.dir = dir.Up;
snake.getHead().setPosX(snake.getHead().getPosY()+snakesize);
break;
case KeyEvent.VK_DOWN:
System.out.println("nachUnten");
snake.dir = dir.Down;
snake.getHead().setPosX(snake.getHead().getPosY()-snakesize);
break;
}
}
}
/*
case KeyEvent.VK_RIGHT:
if (snake.direction != Panel.Direction.Left) {
snake.direction = Panel.Direction.Right;
}
break;
case KeyEvent.VK_LEFT:
if (snake.direction != GamePanel.Direction.Right) {
snake.direction = GamePanel.Direction.Left;
}
break;
case KeyEvent.VK_UP:
if (snake.direction != GamePanel.Direction.Down) {
snake.direction = GamePanel.Direction.Up;
}
break;
case KeyEvent.VK_DOWN:
if (snake.direction != GamePanel.Direction.Up) {
snake.direction = GamePanel.Direction.Down;
}
break;
*/[/CODE]
er geht in die ActionPerformed nicht rein....
und somit kann ich leider auch den Schlangekopf nicht bewegen!
Die Key-Eingaben bekomme ich.
Was mache ich falsch?
Kann mir jemand vielleicht einen Tipp geben?
LG J