E
Exodus
Gast
Hallo,
Kann mir einer sagen wie ein arraybassiertes spiel eigentlich zu machen ist?
MFG
Exodus
Kann mir einer sagen wie ein arraybassiertes spiel eigentlich zu machen ist?
MFG
Exodus
import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Snake extends JPanel implements Runnable {
static int x_snake = 50;
static int y_snake = 100;
static int x_rect = 7;
static int y_rect = 7;
static int x_rect2 = 779;
static int y_rect2 = 500;
static int auf_snake = 0;
static int mund_snake = 20;
static int Fressen_x = 100;
static int Fressen_y = 100;
static int Fressen_radius = 10;
static int snake_koerper = 0;
int radius = 7;
static boolean up = false;
static boolean down = false;
static boolean left = false;
static boolean right = false;
public static void Fenster()
{
JFrame f = new JFrame("S N A K E V 1.0");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.add(new Snake());
f.setSize(800,600);
KeyListener al1 = new KeyListener()
{
public void keyPressed(KeyEvent event) {
switch (event.getKeyCode()) {
case (KeyEvent.VK_LEFT):
left = true;
right=false;
up=false;
down=false;
break;
case (KeyEvent.VK_RIGHT):
right = true;
up =false;
down=false;
left=false;
break;
case (KeyEvent.VK_UP):
up = true;
right=false;
down=false;
left=false;
break;
case (KeyEvent.VK_DOWN):
down = true;
up=false;
right=false;
left=false;
break;
}
}
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
};
f.addKeyListener(al1);
f.setVisible(true);
}
Snake()
{
new Thread(this).start();
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.fillOval(Fressen_x,Fressen_y,Fressen_radius,Fressen_radius);
g2.fillOval(200,200,10,10);
g2.fillOval(300,300,10,10);
g2.fillOval(400,400,10,10);
if((x_snake) == (Fressen_x))
{
if(y_snake == (Fressen_y + 7))
{
snake_koerper = 1;
}
}
switch(snake_koerper)
{
case 1:
g2.fillRect(x_snake - radius * 3 - 3, y_snake - 5, 14, 10);
}
if(right)
{
if(auf_snake <= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 50, 260); //SnakeKopf offen rechts
auf_snake++;
} if(auf_snake >= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 5, 355); //SnakeKopf offen rechts
auf_snake++;
if(auf_snake == (mund_snake + mund_snake))
{
auf_snake = 0;
}
}
}
if(left)
{
if(auf_snake <= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 230, 260); //SnakeKopf offen links
auf_snake++;
} if(auf_snake >= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 175, 355); //SnakeKopf zu links
auf_snake++;
if(auf_snake == (mund_snake + mund_snake))
{
auf_snake = 0;
}
}
}
if(up)
{
if(auf_snake <= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 140, 260); //SnakeKopf offen auf
auf_snake++;
} if(auf_snake >= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 85, 355); //SnakeKopf zu auf
auf_snake++;
if(auf_snake == (mund_snake + mund_snake))
{
auf_snake = 0;
}
}
}
if(down)
{
if(auf_snake <= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 320, 260); //SnakeKopf offen ab
auf_snake++;
} if(auf_snake >= mund_snake)
{
g2.fillArc(x_snake - radius, y_snake - radius, 2 * radius, 2 * radius, 280, 355); //SnakeKopf zu ab
auf_snake++;
if(auf_snake == (mund_snake + mund_snake))
{
auf_snake = 0;
}
}
}
BasicStroke stroke = new BasicStroke(14); //Rahmen
g2.setStroke(stroke);
g2.draw(new Rectangle2D.Float(x_rect,y_rect,x_rect2,y_rect2));
}
public void run()
{
try {
while(true){
if(x_snake == 23)
{
left = false;
}
if(x_snake == 772)
{
right = false;
}
if(y_snake == 23)
{
up = false;
}
if(y_snake == 492)
{
down = false;
}
if (left) {
x_snake -= 1;
}
if (right) {
x_snake += 1;
}
if (up) {
y_snake -= 1;
}
if (down) {
y_snake += 1;
}
repaint();
Thread.sleep(10);}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main (String[] args)
{
Snake.Fenster();
}
}
hier koords für fressen:
static int Fressen_x = 100;
static int Fressen_y = 100;
int radius = 7;
hier koords für snake:
static int x_snake = 50;
static int y_snake = 100;
int radius = 14;
if(() == ())
{
snake_koerper = 1;
}
wenn du zwei Qudaratzahlen addiert, dann musst du davon nicht abs() nehmen, junge selber
SlaterB hat gesagt.:wenn du zwei Qudaratzahlen addiert, dann musst du davon nicht abs() nehmen,
junge selber![]()
hier koords für fressen:
static int Fressen_x = 100;
static int Fressen_y = 100;
int radius = 7;
hier koords für snake:
static int x_snake = 50;
static int y_snake = 100;
int radius = 14;
//Rectangle(int x, int y, int width, int height)
Rectangle fressen = new Rectangle(100, 100, 7, 7); //stimmt jetzt nicht ganz, da die position jetzt links oben ist
Rectangle snake = new Rectangle(50, 100, 14, 14);
if(fressen.intersects(snake)){
//behandlung des events
}
Exodus hat gesagt.:Ich kapier dass irgendwie nich.
Also hier ma ein ausschnitt.
Code:hier koords für fressen: static int Fressen_x = 100; static int Fressen_y = 100; int radius = 7; hier koords für snake: static int x_snake = 50; static int y_snake = 100; int radius = 14; if(() == ()) { snake_koerper = 1; }
So wie würdet ihr dass jetz machen??
double abstand(int xPos1,int xPos2,int yPos1,int yPos2)
{
return Math.sqrt(Math.pow(xPos1-xPos2,2)+ Math.pow(yPos1-yPos2,2));
}
if(abstand(....)<radius1+radius2)
snakeKoerper++;