Code:
import javax.swing.*;
import java.awt.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.event.*;
import java.applet.Applet;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Color;
import java.lang.Math;
import java.util.Random;
import java.lang.Thread;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;
public class Pong extends Frame implements MouseListener, KeyListener {
static int breite=1280,hoehe=1024,punkte;
int max_zahl = 1;
int trefferspieler1=0;
int trefferspieler2=0;
public static int x = 60; //X-Position (Paddle 1)
public static int y = 420; //Y-Position (Paddle 1)
public static int x1 = 1210; //X-Position (Paddle 2)
public static int y1 = 420; //Y-Position (Paddle 2)
int xb = 512;
int yb = 400;
Ball b;
private Image dbImage;
private Graphics dbg;
public static void main(String args[]){
Pong f = new Pong("Pong - Informatik Wb - Projekt Marcel");
f.setSize(breite,hoehe);
f.setBackground(Color.black);
f.setVisible(true);
}
public void update(Graphics g) {
if(dbImage==null)
{
dbImage=createImage(this.getSize().width, this.getSize().height);
dbg=dbImage.getGraphics();
}
dbg.setColor(getBackground());
dbg.fillRect(0,0,this.getSize().width, this.getSize().height);
dbg.setColor(getForeground());
paint(dbg);
g.drawImage(dbImage,0,0,this);
}
public Pong(String s){
super(s);
this.addWindowListener (new WindowAdapter(){ //Interaktion mit dem Fenster (schließen)
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
Color farbe=Color.RED;
b = new Ball(this,xb,yb,14,farbe); //Startposition Ball (x, y, Größe, farbe)
addMouseListener(this);
addKeyListener(this);
}
//Punktestand (verbuggt)
public void paint(Graphics f){
b.maleball(f);
b.collision();
f.setColor(Color.white);
f.drawString("Punktestand Spieler 1: "+ trefferspieler1,breite/2-400, hoehe-40); //Punktestand position
f.drawString("Punktestand Spieler 2: "+ trefferspieler2,breite/2+250, hoehe-40); //Punktestand position
f.fillRect(breite/2, 0, 8, hoehe); //Mittellinie
f.setColor(Color.blue);
f.fillRect(x, y, 8, 150); //Paddle 1
f.fillRect(x1, y1, 8, 150); //Paddle 2 (x, y , Breite, Länge)
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyTyped(KeyEvent e) {
if (e.getKeyChar()=='w') { // Paddle 1 nach oben
System.out.println("Taste w gedrückt");
y = y - 50;
repaint();
if (y < 10){
y = y + 50;
repaint();
}
}
if (e.getKeyChar()=='s') { // Paddle 1 nach unten
System.out.println("Taste s gedrückt");
y = y + 50;
repaint();
if (y > 900){
y = y - 50;
repaint();
}
}
if (e.getKeyChar()=='o') { // Paddle 2 nach oben
System.out.println("Taste a gedrückt");
y1 = y1 - 50;
repaint();
if (y1 < 10){
y1 = y1 + 50;
repaint();
}
}
if (e.getKeyChar()=='l') { // Paddle 2 nach unten
System.out.println("Taste d gedrückt");
y1 = y1 + 50;
repaint();
if (y1 > 900){
y1 = y1 - 50;
repaint();
}
}
if (e.getKeyChar()=='r') { // Reset der beiden Paddles
System.out.println("Taste r gedrückt");
trefferspieler1 = 0;
trefferspieler2 = 0;
y = 420;
y1 = 420;
repaint();
}
}
public void keyPressed(KeyEvent e) {
System.out.println("KeyReleased: ");
if(e.getKeyCode() == KeyEvent.VK_SPACE){
System.out.println("Programmabbruch!");
System.exit(0);
}
System.out.println("Taste: " + e.getKeyChar() + ", Code: " + e.getKeyCode());
System.out.println("---");
}
public void keyReleased(KeyEvent e) {
}
}
//Bewegung des Balls
class Ball extends Thread{
int x,y,r,xr=2,yr=3;
int xb = 512;
int yb = 400;
private int p = Pong.x;
private int p1 = Pong.y;
Color farbe;
boolean sichtbar=true;
Pong b;
public Ball(Pong e,int xk,int yk,int rk,Color kfarbe){
farbe=kfarbe;
b=e;
r=rk;
xb=xk;
yb=yk;
this.start();
}
public void maleball(Graphics g){ //Draw Ball
if (sichtbar==true){
g.setColor(farbe);
g.fillOval(xb,yb,r*3,r*3); //Position vom Ball (Draw)
}
}
public void collision(){
for(;{
System.out.println(p);
break;
}
if(xb <= 0){ //Links respawn
xb=512;
yb=420;
b.repaint();
}
if(xb == p){
xb=xb+xr;
yb=yb+yr;
b.repaint();
}
if(xb >= 1230){ //Rechts respawn
xb=512;
yb=420;
b.repaint();
}
}
// Bewegung des Balls + Einfallswinkel = Ausfallswinkel + Geschwindigkeit
public void run(){
for(;{
try {this.sleep(6);} //Geschwindigkeit des Balls
catch(InterruptedException e){}
xb=xb-xr;
yb=yb-yr;
if( (xb<=0) || (xb>=(b.breite-2*r)) ) xr = -xr; // Breite X (Border)
if( (yb<=20) || (yb>=(b.hoehe-2*r)) ) yr = -yr; // Höhe Y (Border)
b.repaint();
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.event.*;
import java.applet.Applet;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Color;
import java.lang.Math;
import java.util.Random;
import java.lang.Thread;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;
public class Pong extends Frame implements MouseListener, KeyListener {
static int breite=1280,hoehe=1024,punkte;
int max_zahl = 1;
int trefferspieler1=0;
int trefferspieler2=0;
public static int x = 60; //X-Position (Paddle 1)
public static int y = 420; //Y-Position (Paddle 1)
public static int x1 = 1210; //X-Position (Paddle 2)
public static int y1 = 420; //Y-Position (Paddle 2)
int xb = 512;
int yb = 400;
Ball b;
private Image dbImage;
private Graphics dbg;
public static void main(String args[]){
Pong f = new Pong("Pong - Informatik Wb - Projekt Marcel");
f.setSize(breite,hoehe);
f.setBackground(Color.black);
f.setVisible(true);
}
public void update(Graphics g) {
if(dbImage==null)
{
dbImage=createImage(this.getSize().width, this.getSize().height);
dbg=dbImage.getGraphics();
}
dbg.setColor(getBackground());
dbg.fillRect(0,0,this.getSize().width, this.getSize().height);
dbg.setColor(getForeground());
paint(dbg);
g.drawImage(dbImage,0,0,this);
}
public Pong(String s){
super(s);
this.addWindowListener (new WindowAdapter(){ //Interaktion mit dem Fenster (schließen)
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
Color farbe=Color.RED;
b = new Ball(this,xb,yb,14,farbe); //Startposition Ball (x, y, Größe, farbe)
addMouseListener(this);
addKeyListener(this);
}
//Punktestand (verbuggt)
public void paint(Graphics f){
b.maleball(f);
b.collision();
f.setColor(Color.white);
f.drawString("Punktestand Spieler 1: "+ trefferspieler1,breite/2-400, hoehe-40); //Punktestand position
f.drawString("Punktestand Spieler 2: "+ trefferspieler2,breite/2+250, hoehe-40); //Punktestand position
f.fillRect(breite/2, 0, 8, hoehe); //Mittellinie
f.setColor(Color.blue);
f.fillRect(x, y, 8, 150); //Paddle 1
f.fillRect(x1, y1, 8, 150); //Paddle 2 (x, y , Breite, Länge)
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyTyped(KeyEvent e) {
if (e.getKeyChar()=='w') { // Paddle 1 nach oben
System.out.println("Taste w gedrückt");
y = y - 50;
repaint();
if (y < 10){
y = y + 50;
repaint();
}
}
if (e.getKeyChar()=='s') { // Paddle 1 nach unten
System.out.println("Taste s gedrückt");
y = y + 50;
repaint();
if (y > 900){
y = y - 50;
repaint();
}
}
if (e.getKeyChar()=='o') { // Paddle 2 nach oben
System.out.println("Taste a gedrückt");
y1 = y1 - 50;
repaint();
if (y1 < 10){
y1 = y1 + 50;
repaint();
}
}
if (e.getKeyChar()=='l') { // Paddle 2 nach unten
System.out.println("Taste d gedrückt");
y1 = y1 + 50;
repaint();
if (y1 > 900){
y1 = y1 - 50;
repaint();
}
}
if (e.getKeyChar()=='r') { // Reset der beiden Paddles
System.out.println("Taste r gedrückt");
trefferspieler1 = 0;
trefferspieler2 = 0;
y = 420;
y1 = 420;
repaint();
}
}
public void keyPressed(KeyEvent e) {
System.out.println("KeyReleased: ");
if(e.getKeyCode() == KeyEvent.VK_SPACE){
System.out.println("Programmabbruch!");
System.exit(0);
}
System.out.println("Taste: " + e.getKeyChar() + ", Code: " + e.getKeyCode());
System.out.println("---");
}
public void keyReleased(KeyEvent e) {
}
}
//Bewegung des Balls
class Ball extends Thread{
int x,y,r,xr=2,yr=3;
int xb = 512;
int yb = 400;
private int p = Pong.x;
private int p1 = Pong.y;
Color farbe;
boolean sichtbar=true;
Pong b;
public Ball(Pong e,int xk,int yk,int rk,Color kfarbe){
farbe=kfarbe;
b=e;
r=rk;
xb=xk;
yb=yk;
this.start();
}
public void maleball(Graphics g){ //Draw Ball
if (sichtbar==true){
g.setColor(farbe);
g.fillOval(xb,yb,r*3,r*3); //Position vom Ball (Draw)
}
}
public void collision(){
for(;{
System.out.println(p);
break;
}
if(xb <= 0){ //Links respawn
xb=512;
yb=420;
b.repaint();
}
if(xb == p){
xb=xb+xr;
yb=yb+yr;
b.repaint();
}
if(xb >= 1230){ //Rechts respawn
xb=512;
yb=420;
b.repaint();
}
}
// Bewegung des Balls + Einfallswinkel = Ausfallswinkel + Geschwindigkeit
public void run(){
for(;{
try {this.sleep(6);} //Geschwindigkeit des Balls
catch(InterruptedException e){}
xb=xb-xr;
yb=yb-yr;
if( (xb<=0) || (xb>=(b.breite-2*r)) ) xr = -xr; // Breite X (Border)
if( (yb<=20) || (yb>=(b.hoehe-2*r)) ) yr = -yr; // Höhe Y (Border)
b.repaint();
}
}
}