"Doodle Jump" Projekt

feiste

Bekanntes Mitglied
Hey

ich muss von der Schule aus ein Spiel in Java programmieren.
Hab aber leider noch nicht viel Kentnisse.
Hab mir überlegt Doddle Jump zu programmieren.
Aber ich komm nicht mehr weiter.

Habe bereits ein Hintergrund und eine Figur die man nach links und rechts lenken kann.
Nur hab ich keine Idee wie ich dass mit dem springen hinbekommen soll.
Weiß nicht wie ich da eine flüssige Bewegung hinbekommen soll.
Wenn du Figur auf ein Rechteck trifft soll sie eben ein bisschen nach oben springen und dann runterfallen bis es auf das nächste Rechteck fliegt
oder aus dem unteren Rand herausfliegt -> Game Over

Ein weiteres Problem ist es, dass die Rechtecke zufällig platziert werden
und der Abstand von Rechteck1 auf Rechteck2 nie größer ist wie die Figur springen kann.

Und ich weiß nicht wie ich es schaffe, dass sich der Hintergrund + Rechtecke (oder nur Rechtecke, bei weißem Hintergrund) mitbewegen, so dass die Figur nie den oberen Rand erreicht.
Wäre es besser den nur den Hintergrund zu bewegen und die Figur immer in der Mitte zu lassen?
Sieht aber dann nicht so schön aus.

danke für eure Hilfe 🙂
 
also jetzt hab ich es nach dem Tutorial für Java Spiele von Quaxli gemacht.
hab jetzt erstmal versucht ein Spielfeld zu erstellen
aber iwie klappt das nicht so
ich arbeite mit BlueJ und der bringt mir folgenden fehler:

"package Rectangle2D does not exist"

das sind meine 2 klassen:

Java:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class GamePanel extends JPanel implements Runnable{

private static final long serialVersionUID = 1L;
boolean game_running = true;

long delta = 0;
long last = 0;
long fps = 0;

Sprite copter;
Vector<Sprite> actors;

public static void main(String[] args) {
new GamePanel(800,600);
}

public GamePanel(int w, int h) {
this.setPreferredSize(new Dimension(w,h));
JFrame frame = new JFrame("DoodleJump =)");
frame.setLocation(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setVisible(true);
doInitializations();
}

private void doInitializations() {

last = System.nanoTime();

actors = new Vector<Sprite>();
BufferedImage[] doodle = this.loadPics("pics/doodle.gif", 1);
copter = new Sprite(doodle, 400,300,100,this);
actors.add(copter);

Thread t = new Thread(this);
t.start();
}

public void run() {

while(game_running){

computeDelta();
checkKeys();
doLogic();
moveObjects();
repaint();

try {
Thread.sleep(10);
} catch (InterruptedException e) {}

}}
private void computeDelta(){

delta = System.nanoTime() - last;
last = System.nanoTime();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);

g.setColor(Color.red);
g.drawString("FPS: " + Long.toString(fps), 20, 10);

if (actors!=null){
for(Drawable draw:actors){
draw.drawObjects(g);
}
}}

private BufferedImage[] loadPics(String patch, int pics){

BufferedImage[] anim = new BufferedImage[pics];
BufferedImage source = null;

URL pic_url = getClass().getClassLoader().getResource(patch);

try {
source = ImageIO.read(pic_url);
} catch (IOException e) {}

for(int x=0;x<pics;x++) {
anim[x] = source.getSubimage(x*source.getWidth()/pics, 0,source.getWidth()/pics, source.getHeight());
}
retunr anim;
}

private void doLogic(){
for(Movable mov:actors){
mov.doLogic(delta);
}}

private void moveObjects(){
for(Movable mov:actors) {
mov.move(delta);
}}


}

Java:
import java.awt.Graphics;

public class Sprite extends Rectangle2D.Double implements Drawable, Movable{

long delay;
long animation = 0;
GamePanel parent;
BufferedImage[] pics;
int currentpic = 0;

public Sprite(BufferedImage[] i, double x, double y, long delay, GamePanel p ){
pics = i;
this.x = x;
this.y = y;
this.delay = delay;
this.width = pics[0].getWidth();
this.height = pics[o].getHeight();
parent = p;
}

public void drawObjects(Graphics g) {
g.drawImage(pics[currentpic], (int) x, (int) y, null);
}

public void doLogic(long delta) {
animation += (delta/1000000);
if (animation > delay) {
animation = 0;
computeAnimation();
}}

public void move(long delta) {
}

private void computeAnimation(){

currentpic++;
if(currentpic>=pics.lenght){
currentpic = 0;
}
}

public void setVerticalSpeed(double d) {
dy = d;
}

public void setHorizontalSpeed(double d) {
dx = d;
}

public double getVerticalSpeed(){
return dy;
}

public double getHorizontalSpeed(){
return dx;
}

public void move(long delta) {
if(dx!=o){
x += dx*(delta/1e9);
}

if(dy!=0){
y += dy*(delta/1e9);
}}


}
 
Bis jetzt seh' ich da nix, was von Dir ist... :noe:
Und wenn Du mit oben geposteter Fehlermeldung nicht zurecht kommst, solltst Du Dir die Idee, ein Spiel alleine programmieren zu wollen, vielleicht nochmal durch den Kopf gehen lassen? :bahnhof:
 
Wenn du kaum Erfahrung hast, dann guck dir mal Projekte wie Processing.org an. Grafik ist viel einfacher.
Was deine Frage betrifft hätte ich variablen für Position, Höhenveränderung und Veränderung der Höhenveränderung genommen. Damit sollte das hinzukriegen sein.
 

Zurück
Oben