Ik ben een amateur programmeerder en ik ben een game aan het maken in Java. In het spel zijn twee spelers een vierkantje.
Ik heb een Player.java gemaakt waarin de beweging is geprogrammeerd. Daarnaast heb ik een StartingClass.java waarin alles wordt samengevoegd.
In de StartingClass.java worden twee vierkantjes (rectangle) gemaakt (player1Rect en player2Rect). Het is de bedoeling dat deze de Player (waarvan er twee zijn (player1 en player2) volgen.
Het probleem is dat de vierkantjes niet opnieuw 'gepaint' worden. Als ik de code onder paint(); kopieer naar update(); tekent ie wel opnieuw, maar blijft de vorige staan.
Ik hoop dat het een beetje duidelijk is. Hieronder volgt uiteraard de code.
Waarschijnlijk zitten er nog een heleboel andere foutjes of onnodige dingen in, dus verbeter me daarin ook alstublieft!
Alvast bedankt,
Roeney
StartingClass.java:
Player.java:
Ik heb een Player.java gemaakt waarin de beweging is geprogrammeerd. Daarnaast heb ik een StartingClass.java waarin alles wordt samengevoegd.
In de StartingClass.java worden twee vierkantjes (rectangle) gemaakt (player1Rect en player2Rect). Het is de bedoeling dat deze de Player (waarvan er twee zijn (player1 en player2) volgen.
Het probleem is dat de vierkantjes niet opnieuw 'gepaint' worden. Als ik de code onder paint(); kopieer naar update(); tekent ie wel opnieuw, maar blijft de vorige staan.
Ik hoop dat het een beetje duidelijk is. Hieronder volgt uiteraard de code.
Waarschijnlijk zitten er nog een heleboel andere foutjes of onnodige dingen in, dus verbeter me daarin ook alstublieft!

Alvast bedankt,
Roeney
StartingClass.java:
Code:
package coopgame;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.net.URL;
public class StartingClass extends Applet implements Runnable, KeyListener {
//Game variables
public int fps = 60;
public URL base;
public static int screenWidth = 800;
public static int screenHeight = 480;
//Platform variables
public Rectangle platformRect;
public static int platformHeight = 50;
//Players
public static int playerWidth = 20;
public static int playerHeight = playerWidth;
public Player player1, player2;
public Rectangle player1Rect;
public Rectangle player2Rect;
@Override
public void init() {
setSize(screenWidth, screenHeight);
setBackground(Color.BLACK);
setFocusable(true);
addKeyListener(this);
Frame frame = (Frame) this.getParent().getParent();
frame.setTitle("Co-op Game");
try {
base = getDocumentBase();
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void start() {
player1 = new Player();
player2 = new Player();
player1Rect = new Rectangle(player1.getCenterX() - (playerWidth/2), player1.getCenterY() - (playerHeight/2), playerWidth, playerHeight);
player2Rect = new Rectangle(player2.getCenterX() - (playerWidth/2), player2.getCenterY() - (playerHeight/2), playerWidth, playerHeight);
Thread thread = new Thread(this);
thread.start();
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void run() {
while(true){
player1.update();
player2.update();
repaint();
try {
Thread.sleep(1000/fps);
}
catch(Exception e){
e.printStackTrace();
}
}
}
@Override
public void update(Graphics g) {
}
@Override
public void paint(Graphics g){
g.setColor(Color.GREEN);
g.fillRect(player1.getCenterX() - (playerWidth/2), player1.getCenterY() - (playerHeight/2), playerWidth, playerHeight);
g.setColor(Color.BLUE);
g.fillRect(player2.getCenterX() - (playerWidth/2), player2.getCenterY() - (playerHeight/2), playerWidth, playerHeight);
g.setColor(Color.RED);
g.drawString("x-coordinate:" + player1.getCenterX(), screenWidth/2, 10);
g.drawString("y-coordinate:" + player1.getCenterY(), screenWidth/2, 25);
}
@Override
public void keyPressed(KeyEvent e){
switch (e.getKeyCode()){
//Player 1 Keys
case KeyEvent.VK_LEFT:
player1.moveLeft();
break;
case KeyEvent.VK_RIGHT:
player1.moveRight();
break;
case KeyEvent.VK_UP:
if (!player1.isJumped()){
player1.jump();
}
break;
//Player 2 Keys
case KeyEvent.VK_A:
player2.moveLeft();
break;
case KeyEvent.VK_D:
player2.moveRight();
break;
case KeyEvent.VK_W:
if (!player2.isJumped()){
player2.jump();
}
break;
}
}
@Override
public void keyReleased(KeyEvent e){
switch (e.getKeyCode()){
//Player 1 Keys
case KeyEvent.VK_LEFT:
player1.stop();
break;
case KeyEvent.VK_RIGHT:
player1.stop();
break;
//Player 2 Keys
case KeyEvent.VK_A:
player2.stop();
break;
case KeyEvent.VK_D:
player2.stop();
break;
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
Player.java:
Code:
package coopgame;
import java.awt.*;
public class Player {
private int centerX = 100;
private int centerY = 382;
private boolean jumped = false;
private int speedX = 0;
private int speedY = 1;
public void update() {
// Moves Character or Scrolls Background accordingly.
centerX += speedX;
// Updates Y Position
if (centerY + speedY >= 382) {
centerY = 382;
}else{
centerY += speedY;
}
// Handles Jumping
if (jumped == true) {
speedY += 1;
if (centerY + speedY >= 382) {
centerY = 382;
speedY = 0;
jumped = false;
}
}
// Prevents going beyond X coordinate of 0
if (centerX + speedX <= StartingClass.playerWidth) {
centerX = StartingClass.playerWidth + 1;
}
if (centerX + speedX >= StartingClass.screenWidth + StartingClass.playerWidth) {
centerX = StartingClass.screenWidth - StartingClass.playerWidth - 1;
}
}
public void moveRight() {
speedX = 6;
}
public void moveLeft() {
speedX = -6;
}
public void stop() {
speedX = 0;
}
public void jump() {
if (jumped == false) {
speedY = -15;
jumped = true;
}
}
public int getCenterX() {
return centerX;
}
public int getCenterY() {
return centerY;
}
public boolean isJumped() {
return jumped;
}
public int getSpeedX() {
return speedX;
}
public int getSpeedY() {
return speedY;
}
public void setCenterX(int centerX) {
this.centerX = centerX;
}
public void setCenterY(int centerY) {
this.centerY = centerY;
}
public void setJumped(boolean jumped) {
this.jumped = jumped;
}
public void setSpeedX(int speedX) {
this.speedX = speedX;
}
public void setSpeedY(int speedY) {
this.speedY = speedY;
}
}