Ok iāve ran into a problem i think its either my buffering or my tile algorithm, if anyone could please take a look and help out that would be awesome.
When i run it off my computer its fine, http://www.scottscreations.com/rpg/index.html run it in a browser off my server it lags like heck.
here is the code
import java.applet.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.net.URL;
import javax.imageio.ImageIO;
public class Game extends Applet
implements Runnable, KeyListener {
int player_x = 0;
Thread t;
Image buffer;
Graphics bufferg;
boolean upPressed=false;
boolean downPressed=false;
boolean leftPressed=false;
boolean rightPressed=false;
boolean jumped=false;
int player_y = 100;
Image heart;
Image heart2;
Image heart3;
Rectangle playerbound;
Image ladder;
Image playerleft;
Image playerright;
Image plattile;
Rectangle ladderbound;
Rectangle platbound;
boolean blocked = false;
public void init() {
// Start thread
t = new Thread(this);
t.start();
// Create buffer
Dimension d = getSize();
buffer = createImage(d.width, d.height);
playerleft = getImage(getURL("player_left.png"));
playerright = getImage(getURL("player_right.png"));
ladder = getImage(getURL("ladder.png"));
heart = getImage(getURL("heart.png"));
heart2 = getImage(getURL("heart.png"));
heart3 = getImage(getURL("heart.png"));
addKeyListener(this);
}
public void run() {
try {
while(true) {
//Request a repaint
repaint();
// Sleep before update
Thread.sleep(50);
}
}
catch(Exception e) {
}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
//Get graphics object for buffer
if (bufferg == null)
bufferg = buffer.getGraphics();
//Draw to buffer
Dimension d = getSize();
playerbound = new Rectangle(player_x, player_y, playerright.getHeight(this), playerright.getWidth(this));
ladderbound = new Rectangle(50, 350, ladder.getWidth(this) - 15, ladder.getHeight(this) -10);
bufferg.setColor(Color.white);
bufferg.fillRect(0, 0, d.width, d.height);
bufferg.setColor(Color.black);
Platform(-5, 450, 605, 25, bufferg);
bufferg.drawImage(ladder, 40, 350, this);
if(leftPressed)
{
bufferg.drawImage(playerleft, player_x, player_y, this);
}
else
{
bufferg.drawImage(playerright, player_x, player_y, this);
}
bufferg.drawString("Health: ", 5, 17);
bufferg.drawImage(heart, 50, 5, this);
bufferg.drawImage(heart2, 70, 5, this);
bufferg.drawImage(heart3, 90, 5, this);
//Update screen
if(!playerbound.intersects(platbound))
{
player_y += 3;
blocked = false;
}
blocked = true;
g.drawImage(buffer, 0, 0, this);
inputHandler();
}
private URL getURL(String string) {
URL url = null;
try {
url = this.getClass().getResource(string);
}
catch(Exception e)
{
}
return url;
}
private void Platform(int x, int y, int w, int h, Graphics g)
{
platbound = new Rectangle(x,y,w,h);
plattile = getImage(getURL("platform.png"));
int t = 0;
for(int i = (int) platbound.getMinX(); i <= (int)platbound.getMaxX(); i++)
{
g.drawImage(plattile, t, (int) platbound.getMinY(), this);
t+= 25;
}
}
private void inputHandler()
{
if (leftPressed)
{
rightPressed=false;
player_x-=2;
player_y-=1;
}
if (rightPressed)
{
leftPressed=false;
player_x+=2;
player_y-=1;
}
if (jumped && !blocked)
{
int pjumpstart = player_y;
while(jumped)
{
player_y -= 1;
if(pjumpstart - player_y == 20)
{
jumped=false;
}
}
}
if( upPressed && playerbound.intersects(ladderbound))
{
player_y -= 5;
}
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==(KeyEvent.VK_UP))
{
upPressed=true;
}
else if(e.getKeyCode()==(KeyEvent.VK_DOWN))
{
downPressed=true;
}
if(e.getKeyCode()==(KeyEvent.VK_LEFT))
{
leftPressed=true;
}
else if(e.getKeyCode()==(KeyEvent.VK_RIGHT))
{
rightPressed=true;
}
if(e.getKeyCode()==KeyEvent.VK_SPACE)
{
jumped=true;
}
}
public void keyReleased(KeyEvent e) {
if(e.getKeyCode()==(KeyEvent.VK_UP))
{
upPressed=false;
}
else if(e.getKeyCode()==(KeyEvent.VK_DOWN))
{
downPressed=false;
}
if(e.getKeyCode()==(KeyEvent.VK_LEFT))
{
leftPressed=false;
}
else if(e.getKeyCode()==(KeyEvent.VK_RIGHT))
{
rightPressed=false;
}
if(e.getKeyCode()==KeyEvent.VK_SPACE)
{
jumped=false;
}
}
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
pretty basic, it has to render the tile though each update and that i think is what is causing it, its cool cause if i want to say make this platform here and make it this long it does it. But maybe iām way off on the idea and there is a better way.
Thanks 