Hallo liebes Forum ich habe mal wieder ein Problem mit meinem Script!
1. Undzwar erstelle ich hiermit eine Klasse:
Ich hatte mir erhofft das ein auf diese weise erstellter "enemy" nachdem er "geschlagen" wurde entweder GANZ verschwindet oder so wie ich es gelöst habe auf eine Position gesetzt wird die nicht sichtbar und nicht erreichbar ist (-10,-10)
Funktionier theoretisch auch, nur das er etwa 0,2 Sekunden nach dem schlag wieder zurück auf seine uhrsprünglich Position kommt.
2. Ich hab ebenfalls versucht das der "enemy" durch eine regelmäßige veränderung durch eine zufälligezahl sein x und y wert verändert (so das der enemy sich zufällig alle paar sekunden bewegt).
Jedoch auch hier das Problem, er wechselt seine Position, taucht dann aber schnell wieder an seiner uhrsprungs Position auf.
Hier das komplette Script (Die version mit dem random hab ich wieder gelöscht weil es nicht funktioniert hatte)
1. Undzwar erstelle ich hiermit eine Klasse:
Java:
public void enemy(int enemyx, int enemyy, Graphics2D g2d){
if (enemyx==x-1 && enemyy==y && schlagl==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x+1 && enemyy==y && schlagr==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x && enemyy==y-1 && schlagu==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x && enemyy==y+1 && schlagd==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x && enemyy==y && gemoved==1){
leben=leben-1;
gemoved=0;
}
if (enemyx==portx && enemyy==porty){
newport=0;
}
g2d.setColor(new Color(Integer.parseInt("FF0000", 16)));
g2d.fillOval(enemyx*schrit, enemyy*schrit, schrit, schrit);
}
Ich hatte mir erhofft das ein auf diese weise erstellter "enemy" nachdem er "geschlagen" wurde entweder GANZ verschwindet oder so wie ich es gelöst habe auf eine Position gesetzt wird die nicht sichtbar und nicht erreichbar ist (-10,-10)
Funktionier theoretisch auch, nur das er etwa 0,2 Sekunden nach dem schlag wieder zurück auf seine uhrsprünglich Position kommt.
2. Ich hab ebenfalls versucht das der "enemy" durch eine regelmäßige veränderung durch eine zufälligezahl sein x und y wert verändert (so das der enemy sich zufällig alle paar sekunden bewegt).
Jedoch auch hier das Problem, er wechselt seine Position, taucht dann aber schnell wieder an seiner uhrsprungs Position auf.
Hier das komplette Script (Die version mit dem random hab ich wieder gelöscht weil es nicht funktioniert hatte)
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Game {
private JFrame frame;
int time;
int x;
int y;
int schrit=50;
int raumx=schrit*10;
int raumy=schrit*10;
int portx;
int maxX=raumx/schrit-1;
int maxY=raumy/schrit-1;
int porty;
int newport=0;
int score=0;
int move=0;
int speed=0;
int stopl=0;
int stopr=0;
int stopu=0;
int stopd=0;
Graphics2D g2d;
int welt=1;
int startx=0;
int starty=0;
int verzögerer=0;
int scores=0;
int leben=3;
int gemoved=0;
int masterstop=0;
static int again=1;
int visionu=0;
int visiond=1;
int visionl=0;
int visionr=0;
int sword=0;
int stime=0;
int schlagl=0;
int schlagr=0;
int schlagu=0;
int schlagd=0;
public Game() {
frame = new JFrame("Catch the ball!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);
MovePanel panel = new MovePanel();
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
if(move==0&&stopu==0&&masterstop==0){
y-=1;
move=1;
}
stopd=0;
stopl=0;
stopr=0;
gemoved=1;
visiond=1;
visionu=0;
visionr=0;
visionl=0;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
if(move==0&&stopd==0&&masterstop==0){
y+=1;
move=1;
}
stopu=0;
stopl=0;
stopr=0;
gemoved=1;
visiond=0;
visionu=1;
visionr=0;
visionl=0;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if(move==0&&stopl==0&&masterstop==0){
x-=1;
move=1;
}
stopd=0;
stopu=0;
stopr=0;
gemoved=1;
visiond=0;
visionu=0;
visionr=0;
visionl=1;
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
if(move==0&&stopr==0&&masterstop==0){
x+=1;
move=1;
}
stopd=0;
stopl=0;
stopu=0;
gemoved=1;
visiond=0;
visionu=0;
visionr=1;
visionl=0;
} else if (e.getKeyCode() == KeyEvent.VK_W) {
if(move==0&&stopu==0&&masterstop==0){
y-=1;
move=1;
}
stopd=0;
stopl=0;
stopr=0;
gemoved=1;
visiond=1;
visionu=0;
visionr=0;
visionl=0;
} else if (e.getKeyCode() == KeyEvent.VK_S) {
if(move==0&&stopd==0&&masterstop==0){
y+=1;
move=1;
}
stopu=0;
stopl=0;
stopr=0;
gemoved=1;
visiond=0;
visionu=1;
visionr=0;
visionl=0;
} else if (e.getKeyCode() == KeyEvent.VK_A) {
if(move==0&&stopl==0&&masterstop==0){
x-=1;
move=1;
}
stopd=0;
stopu=0;
stopr=0;
gemoved=1;
visiond=0;
visionu=0;
visionr=1;
visionl=0;
} else if (e.getKeyCode() == KeyEvent.VK_D) {
if(move==0&&stopr==0&&masterstop==0){
x+=1;
move=1;
}
stopd=0;
stopl=0;
stopu=0;
gemoved=1;
visiond=0;
visionu=0;
visionr=0;
visionl=1;
}
else if (e.getKeyCode() == KeyEvent.VK_X) {
if(speed==0){
speed=1;
} else if(speed==1){
speed=0;
}
}
else if (e.getKeyCode() == KeyEvent.VK_Q) {
if (sword==0){
sword=1;
}
if (visionl==1&&sword==1){
schlagl=1;
schlagr=0;
schlagu=0;
schlagd=0;
} else if (visionr==1&&sword==1){
schlagl=0;
schlagr=1;
schlagu=0;
schlagd=0;
} else if (visiond==1&&sword==1){
schlagl=0;
schlagr=0;
schlagu=0;
schlagd=1;
} else if (visionu==1&&sword==1){
schlagl=0;
schlagr=0;
schlagu=1;
schlagd=0;
}
}
if (x==raumx/schrit){
x=raumx/schrit-1;
}
if (y==raumy/schrit){
y=raumy/schrit-1;
}
if (x==-1){
x=0;
}
if (y==-1){
y=0;
}
if (masterstop==0){
frame.repaint();
}
}
});
frame.add(panel);
Timer look = new Timer(100, panel);
look.setRepeats(true);
look.start();
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
if (again==1){
new Game();
again=0;
}
}
class MovePanel extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private int counter;
public MovePanel() {
super();
counter = 0;
}
public Dimension getPreferredSize() {
return new Dimension(raumx, raumy);
}
public void wand(int wallx, int wally, Graphics2D g2d){
if (wallx==x-1 && wally==y){
stopl=1;
}
if (wallx==x+1 && wally==y){
stopr=1;
}
if (wallx==x && wally==y-1){
stopu=1;
}
if (wallx==x && wally==y+1){
stopd=1;
}
if (wallx==portx && wally==porty){
newport=0;
}
g2d.setColor(new Color(Integer.parseInt("000000", 16)));
g2d.fillRect(wallx*schrit, wally*schrit, schrit, schrit);
}
public void feuer(int feuerx, int feuery, Graphics2D g2d){
if (feuerx==x && feuery==y && gemoved==1){
leben=leben-1;
gemoved=0;
}
if (feuerx==portx && feuery==porty){
newport=0;
}
g2d.setColor(new Color(Integer.parseInt("FF0000", 16)));
g2d.fillRect(feuerx*schrit, feuery*schrit, schrit, schrit);
}
public void enemy(int enemyx, int enemyy, Graphics2D g2d){
if (enemyx==x-1 && enemyy==y && schlagl==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x+1 && enemyy==y && schlagr==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x && enemyy==y-1 && schlagu==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x && enemyy==y+1 && schlagd==1){
enemyx=-10;
enemyy=-10;
}
if (enemyx==x && enemyy==y && gemoved==1){
leben=leben-1;
gemoved=0;
}
if (enemyx==portx && enemyy==porty){
newport=0;
}
g2d.setColor(new Color(Integer.parseInt("FF0000", 16)));
g2d.fillOval(enemyx*schrit, enemyy*schrit, schrit, schrit);
}
public void paintComponent(Graphics g) {
g2d = (Graphics2D) g;
int boxX=schrit*x;
int boxY=schrit*y;
int boxU=schrit;
if (score==3){
score=0;
welt+=1;
verzögerer=0;
}
if (welt>4){
System.out.println("Sieg!");
welt=1;
}
if (welt==1){
stopu=0;
stopd=0;
stopl=0;
stopr=0;
startx=2;
starty=0;
g2d.setColor(new Color(Integer.parseInt("7CFC00", 16)));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
if (newport==0){
portx=(int)(Math.random()*maxX);
porty=(int)(Math.random()*maxY);
newport=1;
} else if (portx==x && porty==y){
newport=0;
score+=1;
scores+=1;
System.out.println(score);
repaint();
}
//enemy(5, 5, emove, g2d);
feuer(1, 1, g2d);
enemy(8, 8, g2d);
wand(3,4,g2d);
wand(3,3,g2d);
wand(2,3,g2d);
g2d.setColor(new Color(Integer.parseInt("082984", 16)));
g2d.fillOval(portx*schrit, porty*schrit, schrit, schrit);
}
if (welt==2){
stopu=0;
stopd=0;
stopl=0;
stopr=0;
startx=7;
starty=5;
g2d.setColor(new Color(Integer.parseInt("66FFFF", 16)));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
if (newport==0){
portx=(int)(Math.random()*maxX);
porty=(int)(Math.random()*maxY);
newport=1;
} else if (portx==x && porty==y){
newport=0;
score+=1;
scores+=1;
System.out.println(score);
repaint();
}
feuer(6, 7, g2d);
wand(8,6,g2d);
wand(8,5,g2d);
wand(8,4,g2d);
wand(7,4,g2d);
wand(6,4,g2d);
wand(6,5,g2d);
wand(6,6,g2d);
g2d.setColor(new Color(Integer.parseInt("082984", 16)));
g2d.fillOval(portx*schrit, porty*schrit, schrit, schrit);
}
if (welt==3){
stopu=0;
stopd=0;
stopl=0;
stopr=0;
startx=1;
starty=1;
g2d.setColor(new Color(Integer.parseInt("6600FF", 16)));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
if (newport==0){
portx=(int)(Math.random()*maxX);
porty=(int)(Math.random()*maxY);
newport=1;
} else if (portx==x && porty==y){
newport=0;
score+=1;
scores+=1;
System.out.println(score);
repaint();
}
wand(0,5,g2d);
wand(1,5,g2d);
wand(2,5,g2d);
wand(3,5,g2d);
wand(4,5,g2d);
wand(6,5,g2d);
wand(7,5,g2d);
wand(8,5,g2d);
wand(9,5,g2d);
feuer(4, 4, g2d);
feuer(6, 4, g2d);
feuer(5, 2, g2d);
g2d.setColor(new Color(Integer.parseInt("082984", 16)));
g2d.fillOval(portx*schrit, porty*schrit, schrit, schrit);
}
if (welt==4){
stopu=0;
stopd=0;
stopl=0;
stopr=0;
startx=1;
starty=1;
g2d.setColor(new Color(Integer.parseInt("FFFFFF", 16)));
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
feuer(0, 1, g2d);
feuer(0, 2, g2d);
feuer(0, 3, g2d);
feuer(0, 4, g2d);
feuer(0, 5, g2d);
feuer(2, 1, g2d);
feuer(2, 2, g2d);
feuer(2, 3, g2d);
feuer(2, 4, g2d);
feuer(2, 5, g2d);
if (newport==0){
portx=5;
porty=5;
newport=1;
} else if (portx==x && porty==y){
newport=0;
score+=3;
scores+=1;
System.out.println(score);
repaint();
}
g2d.setColor(new Color(Integer.parseInt("082984", 16)));
g2d.fillOval(portx*schrit, porty*schrit, schrit, schrit);
}
if (score==0&&verzögerer==0){
System.out.println("Go!");
x=startx;
y=starty;
verzögerer=1;
}
if (leben==0){
g2d.setColor(new Color(Integer.parseInt("FF0000", 16)));
g.setFont(new Font("TimesRoman", Font.PLAIN, (int)schrit));
g.drawString("Verloren!",raumx/4+((int)schrit/2),raumy/2);
g.setFont(new Font("TimesRoman", Font.PLAIN, (int)schrit/2));
g.drawString("Du hast "+scores+" Punkte erreicht!",raumx/4,raumy/2+(int)schrit*3);
masterstop=1;
}
//charakter
if(move==0){
g2d.setColor(new Color(Integer.parseInt("FFB90F", 16)));
} else if (move==1){
g2d.setColor(new Color(Integer.parseInt("D60000", 16)));
}
g2d.fillRect(boxX, boxY, boxU, boxU);
/*
* schlagl=1;
schlagr=0;
schlagu=0;
schlagd=0;
*/
//SchwertRechts
if (schlagr==1){
g2d.setColor(new Color(Integer.parseInt("707070", 16)));
g2d.fillRect(boxX+schrit, boxY+schrit-schrit/5, schrit, schrit/5);
}
//SchwertLinks
if (schlagl==1){
g2d.setColor(new Color(Integer.parseInt("707070", 16)));
g2d.fillRect(boxX-schrit, boxY, schrit, schrit/5);
}
//SchwertUnten
if (schlagd==1){
g2d.setColor(new Color(Integer.parseInt("707070", 16)));
g2d.fillRect(boxX+schrit-schrit/5, boxY-schrit, schrit/5, schrit);
}
//SchwertOben
if (schlagu==1){
g2d.setColor(new Color(Integer.parseInt("707070", 16)));
g2d.fillRect(boxX, boxY+schrit, schrit/5, schrit);
}
g2d.setColor(new Color(Integer.parseInt("000000", 16)));
g.setFont(new Font("TimesRoman", Font.PLAIN, (int)schrit/2));
g.drawString("Score: "+scores,5,(int)schrit/2);
g.drawString("Leben: "+leben,raumx-100,(int)schrit/2);
}
public void actionPerformed(ActionEvent e) {
setState(counter);
counter = (counter % 10) + 1;
}
private void setState(int i) {
if(move==1){
if(i %2 == 1) {
time+=1;
}
else {
time+=1;
}
if(speed==1){
move=0;
}
if(time == 5&& speed==0){
time=0;
move=0;
}
repaint();
}
if(sword==1){
if(i %2 == 1) {
stime+=1;
}
else {
stime+=1;
}
if (stime==5){
stime=0;
sword=0;
schlagl=0;
schlagr=0;
schlagu=0;
schlagd=0;
repaint();
}
}
}
}
}