Java Applet in html. Pong - old school Spiel

Coold0wn

Mitglied
hi Leute,
bin ein ziemlicher nap in sachen html und websites.
Hab jetz aber schon ein paar Java Programme geschrieben und
gehört man kann die in websites einbinden indem man sie zu Applets macht.
Mit extends Applet irgendwie...

1. Muss ich da jetz meinen code komplett umwerfen oder geht das ganz leicht so ein programm hochzuladen,
dass sich in nem JFrame abspielt und noch kein Applet extended hat?
2. weiß jemand ein leicht verständliches Tutorial mit dem sogar ein 0-html-checker wie ich sowas machen kann?

(Das programm dass ich hochladen will is ein Spiel: Pong - 2 balken links und rechts, ein ball wird hin under hergeschossen. hab nur 2 Klassen : Main und TimerTask).

Code:
<!DOCTYPE html>
<html>
<body>
<CENTER>
<h1>Let's play HyperPong!</h1>

<p>Here's the game:</p>
<applet code=Main.class width="600" height="600"></CENTER>
</body>
</html>
(mein JFrame MainFrame war 600x600)

Error: java.lang.reflect.invocationTargetException....

Website: http://hyperpong.bplaced.net/

Main:
Java:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.applet.Applet;
import java.awt.Graphics;

public class Main extends JFrame implements KeyListener
{
    private JFrame MainFrame;
    private TimerTask balkenTask, ballTask, spinTask;
    private ArrayList<String> pressedKeys;
    private int BalkenSpeed, balken1y, balken2y, ballx, bally, ballSpeedx, ballSpeedy, hitCounter, p1points, p2points;
    private BufferedImage Balken1, Balken2, Ball;
    private ImageIcon BalkenIcon1, BalkenIcon2, BallIcon;
    private JLabel BalkenLabel1, BalkenLabel2, BallLabel;
    private JLabel textarea1, textarea2, pointWinner;
    private boolean spinActive = true;
    
    public static void main( String [] args ) {
        new Main(true);
    }
    
    
    public Main(boolean spin)
    {
        spinActive = spin;
        MainFrame = new JFrame("Spiel");
        MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MainFrame.getContentPane().setLayout(null); 
        MainFrame.getContentPane().setBackground(Color.BLACK);
        MainFrame.setSize(600, 600);
        MainFrame.setResizable(false);
                
        pressedKeys = new ArrayList<String>();
        
        BalkenSpeed = 3;
        balken1y = 250;
        balken2y = 250;
        Balken1 = ImageToBufferedImage("images/Balken");
        Balken2 = ImageToBufferedImage("images/Balken");
        BalkenIcon1 = new ImageIcon(Balken1);
        BalkenIcon2 = new ImageIcon(Balken2);
        BalkenLabel1 = new JLabel(BalkenIcon1);
        BalkenLabel2 = new JLabel(BalkenIcon2);
        BalkenLabel1.setBounds(10,balken1y,10,100);
        BalkenLabel2.setBounds(580,balken2y,10,100);
        MainFrame.getContentPane().add(BalkenLabel1);
        MainFrame.getContentPane().add(BalkenLabel2);
        
        hitCounter = 0;
              
        textarea1 = new JLabel("0");
        textarea2 = new JLabel("0");
        textarea1.setBounds(10,500,100,100);
        textarea2.setBounds(490,500,100,100);
        textarea1.setForeground(Color.WHITE);
        textarea2.setForeground(Color.WHITE);
        textarea1.setHorizontalAlignment( SwingConstants.CENTER);
        textarea2.setHorizontalAlignment( SwingConstants.CENTER);
        MainFrame.getContentPane().add(textarea1);
        MainFrame.getContentPane().add(textarea2);
        
        pointWinner = new JLabel("Start mit SPACE.");
        pointWinner.setBounds(100,250,400,200);
        pointWinner.setForeground(Color.GREEN);
        pointWinner.setHorizontalAlignment(SwingConstants.CENTER);
        MainFrame.getContentPane().add(pointWinner);
        
        ballSpeedx = 5;
        ballSpeedy = 0;
        bally = 300;
        ballx = 300;
        Ball = ImageToBufferedImage("images/Ball");
        BallIcon = new ImageIcon(Ball);
        BallLabel = new JLabel(BallIcon);
        BallLabel.setBounds(ballx,bally,10,10);
        MainFrame.getContentPane().add(BallLabel);
        
        balkenTask = new TimerTask(this, 1);
        ballTask = new TimerTask(this, 2);
        spinTask = new TimerTask(this, 3);
        
        MainFrame.addKeyListener(this);
        MainFrame.setVisible(true);
        MainFrame.requestFocus();
     }
    
    public void keyTyped(KeyEvent e)
     {
     }
     
    public void keyPressed(KeyEvent e)
     { 
         
        int code = e.getKeyCode();
         if(code == KeyEvent.VK_SPACE)
         {
         balkenTask.start();
         ballTask.start();
         if(spinActive == true)
         spinTask.start();
         MainFrame.getContentPane().remove(pointWinner);
         MainFrame.repaint();
         }
        if(code == KeyEvent.VK_W)
        {
            addKey("W");
        }
        if(code == KeyEvent.VK_S)
        {
            addKey("S");
        }
        if(code == KeyEvent.VK_UP)
        {
            addKey("UP");
        }
        if(code == KeyEvent.VK_DOWN)
        {
            addKey("DOWN");
        }
     }
     
    public void keyReleased(KeyEvent e)
     {
        int code = e.getKeyCode();
        if(code == KeyEvent.VK_W)
        {
            removeKey("W");
        }
        if(code == KeyEvent.VK_S)
        {
            removeKey("S");
        }
        if(code == KeyEvent.VK_UP)
        {
            removeKey("UP");
        }
        if(code == KeyEvent.VK_DOWN)
        {
            removeKey("DOWN");
        }
     }
     
    public void addKey(String key)
    {
        if(!pressedKeys.contains(key))
        pressedKeys.add(key);
    }
    
    public void removeKey(String key)
    {
        pressedKeys.remove(pressedKeys.indexOf(key));
    }  
     
     public void moveBalken()
     {
         if(pressedKeys.contains("W"))
         {
             if(balken1y > 5)
             balken1y -= 10;
         }
         if(pressedKeys.contains("S"))
         {
             if(balken1y < 470)
             balken1y += 10;
         }
         if(pressedKeys.contains("UP"))
         {
             if(balken2y > 5)
             balken2y -= 10;
         }
         if(pressedKeys.contains("DOWN"))
         {
             if(balken2y < 470)
             balken2y += 10;
         }
         BalkenLabel1.setBounds(10,balken1y,10,100);
         BalkenLabel2.setBounds(580,balken2y,10,100);
     }
     
    public void moveBall()
    {
         ballx += ballSpeedx;
         bally += ballSpeedy;
         if((ballx >= 575) && (BallTrifftBalken(2)))
         {
            ballSpeedx = -ballSpeedx;
            hitCounter++;
            if(hitCounter%5 == 0)
            increaseSpeed();
         } 
         if((ballx <= 15) && (BallTrifftBalken(1)))
         {
            ballSpeedx = -ballSpeedx;
            hitCounter++;
            if(hitCounter%5 == 0)
            increaseSpeed();
         }
         if(bally >= 560)
         {
            ballSpeedy = -ballSpeedy;
         }
         if(bally <= 0)
         {
            ballSpeedy = -ballSpeedy;
         }
         BallLabel.setBounds(ballx,bally,10,10);
    }
     
    public BufferedImage ImageToBufferedImage(String imagepath)
    {
        BufferedImage img = toBufferedImage(new ImageIcon(imagepath + ".png").getImage());
        return img;
    }
    
    public BufferedImage toBufferedImage(Image image) 
    {
    image = new ImageIcon(image).getImage();

    BufferedImage bimage = new BufferedImage(image.getWidth(null), image
        .getHeight(null), BufferedImage.TYPE_INT_ARGB);

    Graphics g = bimage.createGraphics();

    g.drawImage(image, 0, 0, null);
    g.dispose();
    return bimage;
    }
    
    public boolean BallTrifftBalken(int BalkenNummer)
    {
        boolean trifft = false;
        if(BalkenNummer == 1)
        {
            if((bally+10 > balken1y) && (bally < balken1y+100))
            {
                trifft = true;
                if((bally+5 > balken1y) && (bally+5 <= balken1y+20))
                    ballSpeedy -= 4;
                if((bally+5 > balken1y+20) && (bally+5 <= balken1y+40))
                    ballSpeedy-=2;
                if((bally+5 > balken1y+60) && (bally+5 <= balken1y+80))
                    ballSpeedy+=2;
                if((bally+5 > balken1y+80) && (bally+5 <= balken1y+100))
                    ballSpeedy += 4;
                if(pressedKeys.contains("W"))
                spinTask.setDirection("UP");
                if(pressedKeys.contains("S"))
                spinTask.setDirection("DOWN");
                if((!pressedKeys.contains("W")) && (!pressedKeys.contains("S")))
                spinTask.setDirection("Zero");
            }
            if(trifft == false)
            givePoints(2);
        }
        else if(BalkenNummer == 2)
        {
            if((bally+10 > balken2y) && (bally < balken2y+100))
            {
                trifft = true;
                if((bally+5 > balken2y) && (bally+5 <= balken2y+20))
                    ballSpeedy -= 4;
                if((bally+5 > balken2y+20) && (bally+5 <= balken2y+40))
                    ballSpeedy-=2;
                if((bally+5 > balken2y+60) && (bally+5 <= balken2y+80))
                    ballSpeedy+=2;
                if((bally+5 > balken2y+80) && (bally+5 <= balken2y+100))
                    ballSpeedy += 4;
                if(pressedKeys.contains("UP"))
                spinTask.setDirection("UP");
                if(pressedKeys.contains("DOWN"))
                spinTask.setDirection("DOWN");
                if((!pressedKeys.contains("UP")) && (!pressedKeys.contains("DOWN")))
                spinTask.setDirection("Zero");
            }
            if(trifft == false)
            givePoints(1);
        }
        return trifft;
    }
    
    public void increaseSpeed()
    {
        if((ballSpeedx < 20) && (ballSpeedx > 0))
        ballSpeedx+=2;
        
        if((ballSpeedx > -20) && (ballSpeedx < 0))
        ballSpeedx-=2;
    }
    
    public void givePoints(int player)
    {
        if(player == 1)
        p1points++;
        else
        p2points++;
        
        balkenTask.stop();
        ballTask.stop();
        spinTask.stop();
        
        spinTask.setDirection("Zero");
        
        textarea1.setText("" + p1points);
        textarea2.setText("" + p2points);
        if(player == 1)
        ballSpeedx = 5;
        else
        ballSpeedx = -5;
        ballSpeedy = 0;
        bally = 300;
        ballx = 300;
        BallLabel.setBounds(ballx,bally,10,10);
        
        balken1y = 250;
        balken2y = 250;
        BalkenLabel1.setBounds(10,balken1y,10,100);
        BalkenLabel2.setBounds(580,balken2y,10,100);
        
        pointWinner.setText("Punkt fuer Spieler " + player + ". Weiter mit SPACE.");
        MainFrame.getContentPane().add(pointWinner);
        
    }
    
    public void doSpin(String dir)
    {
        if(dir.equals("UP"))
            if(ballSpeedy > -10)
            ballSpeedy--;
        if(dir.equals("DOWN"))
            if(ballSpeedy < 15)
            ballSpeedy++;
    }
}

TimerTask:
Java:
import java.awt.event.*;
import javax.swing.*;
public class TimerTask implements ActionListener
{
    private Timer t;
    private Main main;
    private int ID, speed, spinStaerke;
    private String direction = "Zero";
    public TimerTask(Main main, int id)
    {
        this.main = main;
        ID = id;
        speed = 20;
        
        if(ID == 1)
        t = new Timer(20, this);
        
        if(ID == 2)
        t = new Timer(20, this);
        
        if(ID == 3)
        t = new Timer(200, this);
        
    }
    
    public void actionPerformed(ActionEvent e)
    {
        if(ID == 1)
        main.moveBalken();
        if(ID == 2)
        main.moveBall();
        if(ID == 3)
        {
            main.doSpin(direction);
        }
    }
    
    public void start()
    {
        t.start();
    }
    
    public void stop()
    {
        t.stop();
    }
    
    public void setDirection(String s)
    {
        direction = s;
    }
}
 
T

tröööt

Gast
1) warum leitest du überhaupt von JFrame ab wenn du dann Main gar nicht als solches verwendest sondern intern ein weiteres JFrame nutzt ... in dem fall kann "extends JFrame" schon mal weg ... (mal von abgesehen das man eh nie von nem top-level-container ableiten sollte)

2) zum tutorial : The Java™ Tutorials ... entsprechende seite bitte selbst suchen ...

3) ein applet hat einen bestimmten lebenszyklus ... wenn du diesen entsprechend einhälts braucht man an deinem code gar nicht so viel zu ändern
 
T

tröööt

Gast
@Marc
thx für die info ...

@ADMIN
pls CLOSE und MERGE ... und mal n verwarnung an TO ...
 

Coold0wn

Mitglied

hab das hier nochmal geöffnet und das andere auf "ERLEDIGT" gesetzt.
Denke mal es passt hier besser her in den Anfänger-Teil des Forums.

google sagt sehr wohl etwas, aber ich bin echt nich "der" crack.. hab von Applets bis jetz genauso viel gehört wie von html. gar nichts... naja wenn ich jetz von anfang an ein applet machen würde, okay, kann ja nich so schwer sein, aber ichh ab ja jetz schon was und das will ich umwandeln... da hörts bei mir auf

tröööt: Das mit dem Lebenszyklus versteh ich leider nicht was du damit meinst. oracle hab ich mir natürlich schon angeguckt, verstehs nur leider nicht..
 
M

Marcinek

Gast
Was verstehst du nicht?

Du erbst von Applet und nicht von JFrame.

Anschließend kannst du ein paar Methoden implementieren, wie start() stop() destor?.

Der Browser ruft diese der Reihe nach auf.

Habe mal eben 1 Sekunde google angeschmissen. Ich weiß nicht, was man hier auf die schnelle schreiben soll, was nicht Ungefähr 112.000 Ergebnisse (0,24 Sekunden) schon geschrieben haben.

Bitte stelle eine konkrete Frage.
 

Coold0wn

Mitglied
okay Leute, ich hab jetzt mich mit Hilfe von einem Kollegen aus nem anderen Forum weiter gearbeitet und bin soweit dass meine .html bei mir aufm Pc funktioniert, aber noch nicht wenn ich sie hochlade.
habe einen ordner "images" in dem alle .pngs sind. dieser befindet sich im gleichen Ordner wie die .class dateien.

Dateien im Homepage Ordner: Main.class, MyApplet.class, MyApplet$1.class, TimerTask.class, Item.class, index.html, Ordner images mit 47 Bildern.


edit: Mein Kollege da meinte jetz bei ihm funktionierts wenn er auf meine Seite geht. hyperpong.bplaced.net. wie siehts bei euch aus? bei mir funktioniert das nicht..

Html:
HTML:
<!DOCTYPE html>
<html>
<body><CENTER>
<h1>Hyper Pong!</h1>

<p>Play now:</p>
<applet code="MyApplet.class" width="600" height="600">Pong</applet></CENTER>
</body>
</html>

Java:

Applet-Klasse:

Java:
import javax.swing.*;
import javax.swing.JApplet;

public class MyApplet extends JApplet {
	//Called when this applet is loaded into the browser.
	public void init() {
		//Execute a job on the event-dispatching thread; creating this applet's GUI.
		try { SwingUtilities.invokeAndWait(new Runnable() {
			public void run() {
				Main panel = new Main();
				panel.setOpaque(true);
				setContentPane(panel);
			}});
		} catch (Exception e) {
			System.err.println("createGUI didn't complete successfully");
		}
	}
}

Main-Klasse:

Java:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.applet.Applet;
import java.awt.Graphics;

public class Main extends JPanel implements KeyListener
{
    private TimerTask Task1, Task2, time;
    private ArrayList<String> pressedKeys;
    private int BalkenSpeed, balken1y, balken2y, ballx, bally, ballSpeedx, ballSpeedy, hitCounter, p1points, p2points;
    private BufferedImage Balken, Ball;
    private BufferedImage[][] items;
    private ImageIcon BalkenIcon, BallIcon;
    private ImageIcon[][] itemIcons;
    private JLabel BalkenLabel1, BalkenLabel2, BallLabel;
    private JLabel textarea1, textarea2, pointWinner;
    private JLabel itemsLabel;
    private Random rand = new Random();
    private Item item;
    private boolean itemSpawned = false;
    
    private int player1length = 100, player2length = 100, ballrad = 10;
    
    public static void main( String [] args ) {
        new Main();
    }
    
    
    public Main()
    {
        this.setLayout(null); 
        this.setBackground(Color.BLACK);
                
        pressedKeys = new ArrayList<String>();
        
        BalkenSpeed = 5;
        balken1y = 250;
        balken2y = 250;
        items = new BufferedImage[5][8];
        itemIcons = new ImageIcon[5][8];
        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 8; j++)
            {
                items[i][j] = ImageToBufferedImage("images/item" + i + j);
                itemIcons[i][j] = new ImageIcon(items[i][j]);
            }
        }
        
        Balken = ImageToBufferedImage("images/Balken");
        BalkenIcon = new ImageIcon(Balken);
        BalkenLabel1 = new JLabel(BalkenIcon);
        BalkenLabel2 = new JLabel(BalkenIcon);
        BalkenLabel1.setBounds(10,balken1y,10,player1length);
        BalkenLabel2.setBounds(580,balken2y,10,player2length);
        itemsLabel = new JLabel();
        this.add(BalkenLabel1);
        this.add(BalkenLabel2);
        this.add(itemsLabel);
        
        hitCounter = 0;
        
              
        textarea1 = new JLabel("0");
        textarea2 = new JLabel("0");
        textarea1.setBounds(10,500,100,100);
        textarea2.setBounds(490,500,100,100);
        textarea1.setForeground(Color.WHITE);
        textarea2.setForeground(Color.WHITE);
        textarea1.setHorizontalAlignment( SwingConstants.CENTER);
        textarea2.setHorizontalAlignment( SwingConstants.CENTER);
        this.add(textarea1);
        this.add(textarea2);
        
        pointWinner = new JLabel("Start mit SPACE.");
        pointWinner.setBounds(100,250,400,200);
        pointWinner.setForeground(Color.GREEN);
        pointWinner.setHorizontalAlignment(SwingConstants.CENTER);
        this.add(pointWinner);
        
        ballSpeedx = 5;
        ballSpeedy = 0;
        bally = 300;
        ballx = 300;
        Ball = ImageToBufferedImage("images/Ball");
        BallIcon = new ImageIcon(Ball);
        BallLabel = new JLabel(BallIcon);
        BallLabel.setBounds(ballx,bally,ballrad,ballrad);
        this.add(BallLabel);
        
        Task1 = new TimerTask(this, 1);
        Task2 = new TimerTask(this, 2);
        
        this.setFocusable(true);
        this.addKeyListener(this);
        this.requestFocus();
        
        giveBuff(1,1);
     }
    
    public void keyTyped(KeyEvent e)
     {
     }
     
    public void keyPressed(KeyEvent e)
     { 
         
        int code = e.getKeyCode();
         if(code == KeyEvent.VK_SPACE)
         {
         Task1.start();
         Task2.start();
         
         this.remove(pointWinner);
         this.repaint();
         }
        if(code == KeyEvent.VK_W)
        {
            addKey("W");
        }
        if(code == KeyEvent.VK_S)
        {
            addKey("S");
        }
        if(code == KeyEvent.VK_UP)
        {
            addKey("UP");
        }
        if(code == KeyEvent.VK_DOWN)
        {
            addKey("DOWN");
        }
     }
     
    public void keyReleased(KeyEvent e)
     {
        int code = e.getKeyCode();
        if(code == KeyEvent.VK_W)
        {
            removeKey("W");
        }
        if(code == KeyEvent.VK_S)
        {
            removeKey("S");
        }
        if(code == KeyEvent.VK_UP)
        {
            removeKey("UP");
        }
        if(code == KeyEvent.VK_DOWN)
        {
            removeKey("DOWN");
        }
     }
     
    public void addKey(String key)
    {
        if(!pressedKeys.contains(key))
        pressedKeys.add(key);
    }
    
    public void removeKey(String key)
    {
        pressedKeys.remove(pressedKeys.indexOf(key));
    }  
     
     public void moveBalken()
     {
         if(pressedKeys.contains("W"))
         {
             if(balken1y > 5)
             balken1y -= 10;
         }
         if(pressedKeys.contains("S"))
         {
             if(balken1y < 470)
             balken1y += 10;
         }
         if(pressedKeys.contains("UP"))
         {
             if(balken2y > 5)
             balken2y -= 10;
         }
         if(pressedKeys.contains("DOWN"))
         {
             if(balken2y < 470)
             balken2y += 10;
         }
         BalkenLabel1.setBounds(10,balken1y,10,player1length);
         BalkenLabel2.setBounds(580,balken2y,10,player2length);
     }
     
    public void moveBall()
    {
         ballx += ballSpeedx;
         bally += ballSpeedy;
         if((ballx >= 575) && (BallTrifftBalken(2)))
         {
            ballSpeedx = -ballSpeedx;
            hitCounter++;
            if(hitCounter%5 == 0)
            increaseSpeed();
         } 
         if((ballx <= 15) && (BallTrifftBalken(1)))
         {
            ballSpeedx = -ballSpeedx;
            hitCounter++;
            if(hitCounter%5 == 0)
            increaseSpeed();
         }
         if(bally >= 560)
         {
            ballSpeedy = -ballSpeedy;
         }
         if(bally <= 0)
         {
            ballSpeedy = -ballSpeedy;
         }
         BallLabel.setBounds(ballx,bally,ballrad,ballrad);
    }
     
    public BufferedImage ImageToBufferedImage(String imagepath)
    {
        ImageIcon icon = new ImageIcon(this.getClass().getResource(imagepath + ".png"));
        BufferedImage img = toBufferedImage(icon.getImage());
        return img;
    }

    public BufferedImage toBufferedImage(Image image) 
    {
    image = new ImageIcon(image).getImage();

    BufferedImage bimage = new BufferedImage(image.getWidth(null), image
        .getHeight(null), BufferedImage.TYPE_INT_ARGB);

    Graphics g = bimage.createGraphics();

    g.drawImage(image, 0, 0, null);
    g.dispose();
    return bimage;
    }
    
    public boolean BallTrifftBalken(int BalkenNummer)
    {
        boolean trifft = false;
        if(BalkenNummer == 1)
        {
            if((bally+10 >= balken1y) && (bally <= balken1y+player1length))
            {
                trifft = true;
                if((bally+10 >= balken1y) && (bally+5 <= balken1y+player1length/5))
                    ballSpeedy -= 4;
                if((bally+5 > balken1y+player1length/5) && (bally+5 <= balken1y+player1length/5*2))
                    ballSpeedy-=2;
                if((bally+5 > balken1y+player1length/5*3) && (bally+5 <= balken1y+player1length/5*4))
                    ballSpeedy+=2;
                if((bally+5 > balken1y+player1length/5*4) && (bally <= balken1y+player1length))
                    ballSpeedy += 4;
                if(pressedKeys.contains("W"))
                Task2.setDirection("DOWN");
                if(pressedKeys.contains("S"))
                Task2.setDirection("UP");
                if((!pressedKeys.contains("W")) && (!pressedKeys.contains("S")))
                Task2.setDirection("Zero");
            }
            if(trifft == false)
            givePoints(2);
        }
        else if(BalkenNummer == 2)
        {
            if((bally+10 >= balken2y) && (bally <= balken2y+player2length))
            {
                trifft = true;
                if((bally+10 >= balken2y) && (bally+5 <= balken2y+player2length/5))
                    ballSpeedy -= 4;
                if((bally+5 > balken2y+player2length/5) && (bally+5 <= balken2y+player2length/5*2))
                    ballSpeedy-=2;
                if((bally+5 > balken2y+player2length/5*3) && (bally+5 <= balken2y+player2length/5*4))
                    ballSpeedy+=2;
                if((bally+5 > balken2y+player2length/5*4) && (bally <= balken2y+player2length))
                    ballSpeedy += 4;
                if(pressedKeys.contains("UP"))
                Task2.setDirection("DOWN");
                if(pressedKeys.contains("DOWN"))
                Task2.setDirection("UP");
                if((!pressedKeys.contains("UP")) && (!pressedKeys.contains("DOWN")))
                Task2.setDirection("Zero");
            }
            if(trifft == false)
            givePoints(1);
        }
        
        if(trifft)
        {
            int random = rand.nextInt(10);
            if((random == 1) && (itemSpawned == false))
            spawnItem();
        }
        return trifft;
    }
    
    public void increaseSpeed()
    {
        if((ballSpeedx < 20) && (ballSpeedx > 0))
        ballSpeedx+=2;
        
        if((ballSpeedx > -20) && (ballSpeedx < 0))
        ballSpeedx-=2;
    }
    
    public void givePoints(int player)
    {
        if(player == 1)
        p1points++;
        else
        p2points++;
        
        Task1.stop();
        Task2.stop();
        ballSpeedx = 0;
        removeItem();
        try {
            Thread.sleep(1000);
            } catch(InterruptedException e) {
            } 
        Task2.setDirection("Zero");
        
        textarea1.setText("" + p1points);
        textarea2.setText("" + p2points);
        if(player == 1)
        ballSpeedx = 5;
        else
        ballSpeedx = -5;
        ballSpeedy = 0;
        bally = 300;
        ballx = 300;
        BallLabel.setBounds(ballx,bally,10,10);
        
        ballrad = 10;
        player1length = 100;
        player2length = 100;
        
        balken1y = 250;
        balken2y = 250;
        BalkenLabel1.setBounds(10,balken1y,10,player1length);
        BalkenLabel2.setBounds(580,balken2y,10,player2length);
        
        pointWinner.setText("Punkt fuer Spieler " + player + ". Weiter mit SPACE.");
        this.add(pointWinner);
        
    }
    
    public void doSpin(String dir)
    {
        if(dir.equals("UP"))
            if(ballSpeedy > -12)
                ballSpeedy--;
        if(dir.equals("DOWN"))
            if(ballSpeedy < 12)
                ballSpeedy++;
    }
    
    public void spawnItem()
    {
        int x = rand.nextInt(5); // 0,1,2,3,4
        int xpos = rand.nextInt(400) + 100;
        int ypos = rand.nextInt(400) + 100;
        item = new Item(x, xpos, ypos);
        itemsLabel.setBounds(xpos, ypos, 100,100);
        this.add(itemsLabel);
        itemSpawned = true;
    }
    
    public void removeItem()
    {
        if(ballSpeedx > 0)
        giveBuff(1,item.getAbility());
        else if(ballSpeedx < 0)
        giveBuff(2,item.getAbility());
        else if(ballSpeedx == 0)
        {}
        this.remove(itemsLabel);
        itemSpawned = false;
    }
    
    public void giveBuff(int player, int ability)
    {
        if(player == 1)
        {
            if(ability == 1)
            {
                if(balken1y > 25)
                balken1y -= 25;
                else
                balken1y = 0;
                
                player1length = 150;
                BalkenLabel1.setBounds(10,balken1y,10,player1length);
                this.repaint();
            }
            if(ability == 2)
            {
                if(balken1y < 460)
                balken1y += 10;
                else
                balken1y = 470;
                
                player1length = 80;
                BalkenLabel1.setBounds(10,balken1y,10,player1length);
            }
            if(ability == 3)
            {
            }
            if(ability == 4)
            {
            }
            if(ability == 5)
            {
            }
        }
    }
    
    public void changePicture()
    {
        if(itemSpawned)
        {
            int currpic = item.getCurrentPicture();
            if(currpic < 7)
                currpic++;
            else
                currpic = 0;
                item.setCurrentPicture(currpic);
                itemsLabel.setIcon(itemIcons[item.getAbility()][currpic]);
        }
    }
}

TimerTask-Klasse:
Java:
import java.awt.event.*;
import javax.swing.*;
public class TimerTask implements ActionListener
{
    private Timer t;
    private Main main;
    private int ID, speed, spinStaerke;
    private String direction = "Zero";
    public TimerTask(Main main, int id)
    {
        this.main = main;
        ID = id;
        speed = 20;
        
        if(ID == 1)
        t = new Timer(20, this);
        
        if(ID == 2)
        t = new Timer(150, this);
        
        if(ID == 3)
        t = new Timer(500, this);
        
    }
    
    public void actionPerformed(ActionEvent e)
    {
        if(ID == 1)
           {main.moveBalken();
            main.moveBall();}
        if(ID == 2)
           {main.doSpin(direction);
            main.changePicture();}
        if(ID == 3)
           {main.giveBuff(1,1);}
        
    }
    
    public void start()
    {
        t.start();
    }
    
    public void stop()
    {
        t.stop();
    }
    
    public void setDirection(String s)
    {
        direction = s;
    }
}

Item-Klasse:

Java:
public class Item
{
    int ability;
    int currentPicture = 1;
    public Item(int x, int xpos, int ypos)
    {
        ability = x;
    }
    
    public int getAbility()
    {
        return ability;
    }
    
    public void removeItem()
    {
    }
    
    public void changePicture()
    {
    }
    
    public int getCurrentPicture()
    {
        return currentPicture;
    }
    
    public void setCurrentPicture(int x)
    {
        currentPicture = x;
    }
}
 
Zuletzt bearbeitet:
T

tröööt

Gast
JApplet ist auch ein Top-Level-Container. Das ist die Ausnahme.

J/Applet ist top-level ? ok ... klar könnte man es dann als "die einzig sinnvolle ausnahme" bezeichnen .. allerdings ist es im falle eines J/Applets auch nicht anders möglich als von zu erben ...

@TO
du hast das mit dem lebenszyklus überhaupt nicht verstanden ...
ein applet durchläuft folgende phasen

konstruktor
init()
start()
stop()
destroy()

und genau so sollte auch der code strukturiert sein ...

was du jetzt gemacht hast ist absoluter blödsinn ... denn einfach in init() (was wenn überhaupt schon mal mal die falsche methode ist) einfach deinen code reinpacken (der wenigstens halbwegs sinnvoll editiert wurde) ist ziemlich ungünstig ...

grundlegend sollte es so sein

konstruktor
-hier werden alle "globalen" variablen initialisiert und vorbereitet
init()
-resourcen werden geladen und die GUI zusammengebaut
start()
-anzeige der gui und start des logik-loops
stop()
-anhalten / stoppen des logik-loops und ggf. verbergen der GUI
destroy()
-GUI disposen , resourcen freigeben und VM kontrolliert runterfahren ...

wann und wie genau start() und stop() gecallt werden und zu verwenden sind steht auch bei oracle im life-cycle ...

und "ich versteh es nicht" ist keine antwort ... wenn dann wäre es noch hilfreich zu sagen WAS genau du nicht verstehst bzw wo du probleme hast ...

auch solltest du dein applet in ein JAR packen ... verkürzt die ladezeit


//E : also bei mir läufts auch ... auch wenn ziemlich schlecht mit hoher ladezeit
 
T

tröööt

Gast
ja natürlich ... was denn sonst ? den kompletten BUILD und alle nötigen resourcen ...

lies dir zum punkto "deployment" mal noch was durch ... steht auch im verlinkten oracle-tutorial
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
D Java-Applet in HTML einbinden Java Basics - Anfänger-Themen 9
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
D Java Applet wird nicht im Browser angezeigt Java Basics - Anfänger-Themen 6
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
K JDK installieren displays java applet für MAC Java Basics - Anfänger-Themen 10
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
R Java Applet mit Mausklick ansprechen Java Basics - Anfänger-Themen 3
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
W Probleme mit Java Applet Java Basics - Anfänger-Themen 5
E Schach in Java-Applet <No main classes found> Java Basics - Anfänger-Themen 5
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
B Applet - Laden eines Java-Fensters bricht ab Java Basics - Anfänger-Themen 6
K Befehl per Shell an Java-Applet JAR übergeben Java Basics - Anfänger-Themen 16
I Java Applet Java Basics - Anfänger-Themen 8
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
KBJ Java Applet Gästebuch Java Basics - Anfänger-Themen 12
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
C Java Applet Probleme Java Basics - Anfänger-Themen 4
S Probleme mit Java 3D Tutorial (Applet) Java Basics - Anfänger-Themen 7
T Erste Schritte Java Applet wird nur geladen Java Basics - Anfänger-Themen 3
F Ich kenn mich nicht mehr aus - 'java.lang.NoSuchMethodError: main' in Applet? Java Basics - Anfänger-Themen 2
O Java applet im Internet Java Basics - Anfänger-Themen 6
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
D Java Applet in einer .jar datei Java Basics - Anfänger-Themen 2
A Java Datei in Applet umwandeln Java Basics - Anfänger-Themen 4
B Mit Eclipse(java) ein Java Applet im Browser steuern Java Basics - Anfänger-Themen 4
B erstes Java-Applet Java Basics - Anfänger-Themen 7
R Java-Applet ausführbar wie in Konsole Java Basics - Anfänger-Themen 23
N Normales Java Programm in Applet umwandeln Java Basics - Anfänger-Themen 17
M lokale exe-Datei über Java-Applet starten Java Basics - Anfänger-Themen 4
K Java Applet friert Browser ein Java Basics - Anfänger-Themen 12
M Java Applet: USB Gerät benutzbar? Java Basics - Anfänger-Themen 16
B Java Applet : Mails über pop3 (?) Java Basics - Anfänger-Themen 2
R java applet zum zeichen zählen Java Basics - Anfänger-Themen 5
J Java Applet XPLUG.JAR / XPLUG.CLASS Java Basics - Anfänger-Themen 4
J IP CAM JAVA Applet portieren Java Basics - Anfänger-Themen 3
S Java Applet - Verbindung zum Eigenen Server Java Basics - Anfänger-Themen 2
JeromeM90 Mein Java Applet zeitverzögern ? Java Basics - Anfänger-Themen 2
D Java Applet startet im Browser nicht Java Basics - Anfänger-Themen 9
S Eclipse Java Applet größe ändern aber wie? Java Basics - Anfänger-Themen 5
F PHP Skript mit Java Applet aufrufen Java Basics - Anfänger-Themen 2
U Daten aus Intranet mit Java-Applet auslesen Java Basics - Anfänger-Themen 10
J Java Applikation aus Applet heraus starten Java Basics - Anfänger-Themen 4
J Zusätzliche jar dateien in Java APplet (hsqldb.jar) Java Basics - Anfänger-Themen 8
C Java-Applet Versuch Java Basics - Anfänger-Themen 12
A java applet Java Basics - Anfänger-Themen 2
G SQL + JAVA + APPLET ? Java Basics - Anfänger-Themen 16
D Java Applet ohne ActiveX im IE ? Java Basics - Anfänger-Themen 15
M Java Applet bild einfügen Java Basics - Anfänger-Themen 6
M java applet für für folgende onlineapplikation sinvoll? Java Basics - Anfänger-Themen 3
B Jar file java applet Java Basics - Anfänger-Themen 12
G Java Applet und Java Application Java Basics - Anfänger-Themen 2
K Inhalte aus einem Java-Applet-Fenster auslesen Java Basics - Anfänger-Themen 2
E Java Applet Seiten wechel frage Java Basics - Anfänger-Themen 15
K Java Programm -> Java Applet. Wie? Java Basics - Anfänger-Themen 2
D java applet - acces denied Java Basics - Anfänger-Themen 6
A Kommunikation Java-Anwendung <-> Java-Applet Java Basics - Anfänger-Themen 24
C Unterschied zwischen, Applet, Java und JavaScript Java Basics - Anfänger-Themen 3
P Java-Applet, Kreis zeichnen Java Basics - Anfänger-Themen 4
J JAVA-Applet Socketzugriff auf anderen Server Java Basics - Anfänger-Themen 3
X Java Applet offline darstellen Java Basics - Anfänger-Themen 8
B Java Applet in Browser Java Basics - Anfänger-Themen 2
L Java Applet/Script wird nicht angezeigt. Java Basics - Anfänger-Themen 3
T Probleme mit einem Java-Applet Java Basics - Anfänger-Themen 17
A java applet mit mehreren dateien Java Basics - Anfänger-Themen 2
I Hilfe beim Java-Applet Beispiel Java Basics - Anfänger-Themen 27
D flash object mit JS definieren.auch für Java Applet? Java Basics - Anfänger-Themen 13
S Problem bei Java Applet (Applet verändert sich nicht) Java Basics - Anfänger-Themen 2
X WWW-link innerhalb java applet einbinden Java Basics - Anfänger-Themen 5
I [Java Applet] - Realisierung Webprojekt Java Basics - Anfänger-Themen 5
B webseite (java applet enthalten) offline ansehen Java Basics - Anfänger-Themen 7
L Java Programm in Applet umwandeln Java Basics - Anfänger-Themen 13
I Java Applet mit Klassen Java Basics - Anfänger-Themen 5
P Wie konvertiert man ein JAVA-Programm (jar) in ein Applet? Java Basics - Anfänger-Themen 4
L Java applet und andere Klassen unauffindbar? Java Basics - Anfänger-Themen 2
G Kommunikation zwischen Applet und Java-Anwendung über TCP/IP Java Basics - Anfänger-Themen 3
G x-,y-position java-applet Java Basics - Anfänger-Themen 2
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37

Ähnliche Java Themen

Neue Themen


Oben