- Messages
- 5,508
- Reaction score
- 35
- Points
- 48
I want to make a background image in my game I do in class. Can anyone tell me how? Here is the code:
Ignore the swedish comments. The background image I made is 240 x 291 and it's name is back.png. If you could tell me how in a easy way I would be thankful.
Code:
package dk.koderko.games.pong; // vilket package det tillhör
import java.io.IOException; // importerar några klasser för att kunna göra miljön i spelet
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import java.util.Random;
public class PongCanvas extends GameCanvas implements Runnable { // gör så att man kan starta spelet
public PongCanvas() {
super(false);
}
public void run() {
while(true) {
updateScreen(getGraphics());
try {
Thread.sleep(sleepTime);
} catch (Exception e) {
}
}
}
public void start() { // vad man ska göra när spelet startat
try {
ballImg = Image.createImage("/ball.png"); // bilder
padImg = Image.createImage("/pad.png");
} catch (IOException ioex) {
System.out.println(ioex);
}
ballSprite = new Sprite(ballImg, 20, 21); // gör spriten
ballSprite.defineReferencePixel(2, 2);
ballSprite.setRefPixelPosition(ballX, ballY);
padSprite = new Sprite(padImg, 3, 20);
padSprite.defineReferencePixel(1, 10);
padSprite.setRefPixelPosition(padX, padY);
AISprite = new Sprite(padImg, 3, 20);
AISprite.defineReferencePixel(3, 10);
AISprite.setRefPixelPosition(AIX, AIY);
Thread runner = new Thread(this);
runner.start();
}
private void createBackground(Graphics g) { // gör bakgrunden
g.setColor(0x000000); //sätter färgen på bakgrunden
g.fillRect(0, 0, getWidth(), getHeight());
}
private void updateScreen(Graphics g) {
createBackground(g);
createScoreboard(g);
creatWidth(g); // jag vet, felstavning på båda
moveBall();
movePad();
moveAI();
ballSprite.setRefPixelPosition(ballX, ballY);
ballSprite.paint(g);
padSprite.setRefPixelPosition(padX, padY);
padSprite.paint(g);
AISprite.setRefPixelPosition(AIX, AIY);
AISprite.paint(g);
flushGraphics();
}
private void moveBall() { // flyttar bollen
if (ballDirection == 0) {
ballX -= ballXVel;
ballY -= ballYVel;
} else if (ballDirection == 1) {
ballX += ballXVel;
ballY -= ballYVel;
} else if (ballDirection == 2) {
ballX += ballXVel;
ballY += ballYVel;
} else if (ballDirection == 3) {
ballX -= ballXVel;
ballY += ballYVel;
}
if (ballDirection == 0 && ballX < 0) {
ballDirection = 1;
AIScore++; // Added
} else if (ballDirection == 0 && ballY < 0) {
ballDirection = 3;
} else if (ballDirection == 1 && ballY < 0) {
ballDirection = 2;
} else if (ballDirection == 1 && ballX > getWidth()) {
ballDirection = 0;
padScore++; // Added
if (sleepTime > 5) sleepTime--;
} else if (ballDirection == 2 && ballY > getHeight()) {
ballDirection = 1;
} else if (ballDirection == 2 && ballX > getWidth()) {
ballDirection = 3;
padScore++; // Added
if (sleepTime > 5) sleepTime--;
} else if (ballDirection == 3 && ballY > getHeight()) {
ballDirection = 0;
} else if (ballDirection == 3 && ballX < 0) {
ballDirection = 2;
AIScore++; // Added
}
if (ballDirection == 0 && ballSprite.collidesWith(padSprite, false)) {
ballDirection = 1;
} else if (ballDirection == 3 && ballSprite.collidesWith(padSprite, false)) {
ballDirection = 2;
} else if (ballDirection == 1 && ballSprite.collidesWith(AISprite, false)) {
ballDirection = 0;
} else if (ballDirection == 2 && ballSprite.collidesWith(AISprite, false)) {
ballDirection = 3;
}
sleepTime += AIScore - padScore; // Added
if (sleepTime < 15) sleepTime = 10; // Added
}
private void movePad() { // fixar så att man kanm kontrollera paden
int keyState = getKeyStates();
if ((keyState & UP_PRESSED) != 0 && padY > padSprite.getHeight() / 2) {
padY -= padYVel;
} else if ((keyState & DOWN_PRESSED) != 0 && padY <= getHeight() - padSprite.getHeight() / 2) {
padY += padYVel;
}
}
private void moveAI() {
Random random = new Random();
actX = getWidth() / 3 + Math.abs(random.nextInt() % (getWidth() / 8));
if (ballY < AIY && ballX > actX && AIY > AISprite.getHeight() / 2) AIY -= AIYVel;
if (ballY > AIY && ballX > actX && AIY < getHeight() - AISprite.getHeight() / 2) AIY += AIYVel;
}
private void createScoreboard(Graphics g) { // Added entirely new method
g.setColor(0xffffff);
g.drawString(padScore + " - " + AIScore, getWidth() / 2, 20, Graphics.HCENTER | Graphics.TOP);
}
private void creatWidth(Graphics g) { // Added entirely new method
g.setColor(0xffffff);
g.drawString(getWidth() + " - " + getHeight(), getWidth() / 2, 30, Graphics.HCENTER | Graphics.TOP);
}
private int sleepTime = 10;
private Image ballImg;
private Sprite ballSprite;
private int ballX = getWidth() / 2;
private int ballY = getHeight() / 2;
private final static int ballXVel = 3;
private final static int ballYVel = 1;
private int ballDirection = 1;
private Image padImg;
private Sprite padSprite;
private int padX = 10;
private int padY = getHeight() / 2;
private final static int padYVel = 2;
private Sprite AISprite;
private int AIX = getWidth() - 10;
private int AIY = getHeight() / 2;
private final static int AIYVel = 2;
private int actX;
private int padScore = 0; // Added
private int AIScore = 0; // Added
}
Ignore the swedish comments. The background image I made is 240 x 291 and it's name is back.png. If you could tell me how in a easy way I would be thankful.