Ich habe für meinen ersten Programmierbeleg in der Uni ein kleines Pingpong programmiert. Mit Kollisonsabfrage,Pause funktion usw (nochnicht ganz ausgereift).
Habe schwierigkeiten mit Java und habe mich da mit hängen und würgen durchgekämpft,doch hätte ich gern einen Zähler für den Score,aber weiß nicht so recht wie ich den realisieren soll :-(
Hier mal mein Code zum reinschauen:
Klasse pingpong
Klasse Ball
Klasse Player
Klasse Autoplayer
Hoffe ihr könnt mir helfen
Habe schwierigkeiten mit Java und habe mich da mit hängen und würgen durchgekämpft,doch hätte ich gern einen Zähler für den Score,aber weiß nicht so recht wie ich den realisieren soll :-(
Hier mal mein Code zum reinschauen:
Klasse pingpong
Java:
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.logging.Level;
import javax.swing.*;
import java.util.logging.Logger;
public class pingpong extends JFrame implements Runnable,KeyListener{
private Ball ball= new Ball (100,150,this);
private Player player= new Player(25,180,25,125,Color.RED) ;
private AutoPlayer autoPlayer = new AutoPlayer(740,180,25,125,Color.blue);
private boolean up,down;
private boolean pause;
public pingpong(String title){
super(title);
this.setFocusable(true);
this.addKeyListener(this);
}
@Override
public void paint(Graphics gr){
super.paint(gr);
//Malen
//Ball
ball.paint(gr);
//Spieler
player.paint(gr);
//Automatischer Spieler
autoPlayer.paint(gr);
//Pause
if (pause){
gr.setColor(Color.black);
gr.setFont(new Font("Helvetica",100,100));
gr.drawString("PAUSE", 225, 225);
}
}
@Override
public void run(){
while(true) {
if (!pause){
//Ball
ball.moveBall();
if (up) {
player.moveUp();
}else if (down) {
player.moveDown();
}
player.checkCollisionWithBall(ball);
//AutoPlayer
autoPlayer.moveAutoPlayer(ball);
autoPlayer.checkCollisionWithBall(ball);
}
repaint();
try{
Thread.sleep(30);
} catch (InterruptedException ex) {
Logger.getLogger(pingpong.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
public static void main(String[] args) {
pingpong ping=new pingpong ("Ping Pong");
new Thread(ping).start();
ping.setSize (800,450);
ping.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
ping.setVisible(true);
}
@Override
public void keyTyped(KeyEvent ke) {
}
@Override
public void keyPressed(KeyEvent ke) {
if (ke.getKeyCode()== 87) {
up= true;
down= false;
} else if (ke.getKeyCode()==83) {
up= false;
down=true;
}
if (ke.getKeyCode()==32) {
pause=(!pause);
}
}
@Override
public void keyReleased(KeyEvent ke) {
up=false;
down=false;
}
}
Java:
import java.awt.*;
public class Ball {
private int x, y;
private int velocityX,velocityY;
private int size=50;
public Ball(int x,int y, Component comp) {
this.x=x;
this.y=y;
//this.comp=comp;
this.velocityX = 10;
this.velocityY = 10;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public int getVelocityX(){
return velocityX;
}
public int getVelocityY(){
return velocityY;
}
public void moveBall() {
if (x + 100 > 800) {
velocityX= -10;
} else if (x < 0){
velocityX = 5;
}
if (y + 100 > 500) {
velocityY= -10;
} else if (y < 0){
velocityY = 5;
}
x +=velocityX;
y +=velocityY;
}
public void collideWithPlayer(boolean collision){
if (collision) {
velocityX=velocityX *-1;
}else if (!collision){
}
}
public void paint(Graphics gr){
gr.setColor(Color.GREEN);
gr.fillOval(x,y,size,size);
}
}
Java:
import java.awt.*;
public class Player {
private int x,y,width,height;
private Color color;
public Player(int x, int y, int width, int height,Color color){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
this.color=color;
}
public void moveUp(){
y-=5;
}
public void moveDown(){
y+=5;
}
public void checkCollisionWithBall(Ball ball){
Rectangle ballRect = new Rectangle(ball.getX(),ball.getY(),100,100);
Rectangle playerRect=new Rectangle(this.x,this.y,this.width,this.height);
if (playerRect.intersects(ballRect)){
ball.collideWithPlayer(true);
}
}
public void paint(Graphics gr){
gr.setColor(color);
gr.fillRect(x,y,width,height);
}
}
Java:
import java.awt.*;
public class AutoPlayer {
private int x,y,width,height;
private Color color;
public AutoPlayer(int x, int y, int width, int height,Color color){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
this.color=color;
}
public void moveUp(){
y-=5;
}
public void moveDown(){
y+=5;
}
public void checkCollisionWithBall(Ball ball){
Rectangle ballRect = new Rectangle(ball.getX(),ball.getY(),16,16);
Rectangle playerRect=new Rectangle(this.x,this.y,this.width,this.height);
if (playerRect.intersects(ballRect)){
ball.collideWithPlayer(true);
}
}
public void moveAutoPlayer(Ball ball){
int midPlayer =this.y +this.height/2;
if (ball.getVelocityX()> 0) {
if (midPlayer !=ball.getY()){
if (ball.getY() < midPlayer) {
moveUp();
}else if (ball.getY()> midPlayer) {
moveDown();
}
}
} else if (ball.getVelocityX() < 0) {
if (midPlayer !=500) {
if (midPlayer > 500) {
moveUp();
}
}
}
}
public void paint(Graphics gr){
gr.setColor(color);
gr.fillRect(x,y,width,height);
}
}
Hoffe ihr könnt mir helfen
Zuletzt bearbeitet: