# "Doodle Jump" Projekt



## feiste (11. Feb 2011)

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


----------



## feiste (11. Feb 2011)

???:L


----------



## feiste (12. Feb 2011)

???:L


----------



## Nicer (12. Feb 2011)

Vielleicht zeigst du der Community ein bisschen code , so ist das immer sehr schwer ...


----------



## feiste (12. Feb 2011)

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:


```
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);
}}


}
```


```
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);
}}


}
```


----------



## Quaxli (14. Feb 2011)

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:


----------



## Steev (14. Feb 2011)

Rectangle2D ist auch nicht eingebunden:
import java.aw.geom.Rectangle2D;


----------



## Quaxli (14. Feb 2011)

Steev hat gesagt.:


> Rectangle2D ist auch nicht eingebunden:
> import java.aw.geom.Rectangle2D;



Ich hätt's ihm nicht gesagt ueh:


----------



## t96 (19. Feb 2011)

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.


----------

