# Neuling: Hintergrund bewegen



## unleashed1988 (14. Okt 2008)

Hi, 

bin noch totaler java-noob und wir müssen in der Schule jetzt ein Jump n Run programmieren.
Wills dann so machen, dass der charakter sich nicht beweget sondern im Prinzip nur der Hintergrund, allerdings fehlt mir hierbei total der ansatz. Bisher hab ichs nur, dass ich ne Figur bewegen kann aber dann läuft sie halt zum bild raus.

Könnt ihr mir vllt ein paar tips geben?

Danke


----------



## Der Müde Joe (14. Okt 2008)

http://fivedots.coe.psu.ac.th/~ad/jg/

Kapitel 11/12 glaub ich..


----------



## Fu3L (14. Okt 2008)

Falls du lieber ne deutsche Hilfe möchtest, hier ein Verweis auf Quaxlis Spieletutorial (habs selbst gelesen und vieles daraus angewendet):

www.java-forum.org/de/viewtopic.php?p=380854#380854


----------



## Quaxli (15. Okt 2008)

unleashed1988 hat gesagt.:
			
		

> Hi,
> bin noch totaler java-noob und wir müssen in der Schule jetzt ein Jump n Run programmieren.



Jump 'n Runs sind eigentlich nichts für Noobs  
Wenn Du noch nie ein Spiel programmiert hast, würde ich das mit dem bewegten Hintergrund erst mal lassen. Das schafft Dir nämlich ein paar zusätzliche Probleme, zu den anderen, die Dir dann auch noch über den Weg laufen. 
Ich würde Dir raten, für den ersten Versuch eher über ein Konzept nachzudenken, bei dem Du mit einem Bildschirm auskommst. 

Ein paar Beispiele, von denen Du Ideen klauen könntest:

SpaceTaxi
Bomb Jack
H.E.R.O
Donkey Kong
Jumpman

Wobei jedes der o.g. Spiele zugegebenermaßen auch so seine Schwierigkeiten hat, die für einen Anfänger nicht unbedingt einfach zu lösen sind. Es sollen hier erst mal nur Beispiele für "1-Bildschirm-Spiele" sein (ich zähl' da auch mal H.E.R.O mit rein, wobei man da ja mehrere Screens braucht).

Eine einfache Version von SpaceTaxi ist für jemanden, der noch nie ein Spiel programmiert hat, wohl noch eine lösbare Aufgabe.

@Fu3L:
Danke


----------



## unleashed1988 (15. Okt 2008)

heyho  vielen dank schonmal für eure posts, hatte bisher noch keine zeit mir das alles genauer anzuschauen, werd ich dann wohl aber mal heute machen. 

Naja wir haben in der Schule letztes Jahr schon ein 4gewinnt programmiert... aber naja hab damals viel kopiert un kaum was selber gemacht, hole halt grad alles nach und naja  wir müssen dieses Jahr halt n jump n run programmieren..aber evtl mach ich trotzdem erst noch son anderes game um mir die Grundideen klar zu machen etc...


----------



## Fu3L (15. Okt 2008)

Ein relativ einfaches Spiel, das nur den Bildschirm als Platz braucht, wäre auch noch Space Invaders. Das hab ich programmiert bevor ich mir ein Tutorial durchgelesen hatte (weil ich sehen wollte, ob ichs auch alleine schaffe). Hat ungefähr 4 Stunden gedauert (ohne schöne Grafiken)...


----------



## Quaxli (15. Okt 2008)

Da hüpft aber keiner


----------



## Fu3L (15. Okt 2008)

Das stimmt  :? 

Wenn allerdings so gut wie kein Grundwissen vorhanden sein sollte, dann wäre das ja schon geeignet, um erstmal so Sachen wie GameLoop, Sprites und Kollisionserkennung kennen zu lernen. Ein bisschen einfach ists natürlich schon mit ner Bewegung in zwei Richtungen, ohne Map und Hindernisse  :wink:


----------



## Leroy42 (15. Okt 2008)

Fu3L hat gesagt.:
			
		

> Ein relativ einfaches Spiel, das nur den Bildschirm als Platz braucht, wäre auch noch Space Invaders. Das hab ich programmiert bevor ich mir ein Tutorial durchgelesen hatte



Aha! Dann heißt du also _Toshihiro Nishikado_


----------



## unleashed1988 (15. Okt 2008)

hallo 

so hab mich ma dran gemacht n space invaders zu programmieren, wills aber auf andere art lösen als in z.b. dem deutschen tut da oben. und zwar hab ich jetzt aber folgendes problem, dass ich nicht weiß, wie ich ein pic als hintergrund hinbekomme...


habe es bisher so bzgl des hintergrundes 


```
public MeinPanel() {
        initComponents();
        
        this.requestFocus();
        
        
        
        try {
            
            
            File f = new File("pic/Schiff.jpg");
            bim =ImageIO.read(f);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        try {
            
            File hintergrund = new File ("pic/background.jpg");
            background=ImageIO.read(hintergrund);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
    }

 public void paintComponent(Graphics g){
        g.drawImage(background,x,y, null);
        g.fillRect(0,0,this.getWidth(),this.getHeight());
        g.setColor(c.WHITE);
        g.drawImage(bim,x,y,null);

}
```

hab dann aber nur das schiff auf nem grauen hintergrund...wo liegt mein fehler?


----------



## Fu3L (15. Okt 2008)

Mit:


```
g.drawImage(background,x,y, null);
        g.fillRect(0,0,this.getWidth(),this.getHeight());
```


zeichnest du erst das Hintergrundbild und malst dann ein mit Farbe gefülltes Rechteck über das gesamte Panel...


----------



## Quaxli (16. Okt 2008)

So wie Du jetzt Deine Bilder lädst, bekommst Du Probleme, sobald Du das Ganze in ein Jar packen willst. Besser wäre:


```
URL picUrl = this.getClass().getClassLoader.getRessource("pic/Schiff.jpg");
  bim = ImageIO.read(picUrls);
```

(Das habe ich jetzt gerade aus dem Kopf hingeschrieben - ist hoffentlich kein Fehler drin. Wenn doch, mal in die API gucken).

Zusätzlich fällt mir auf, daß Dein "Schiff" ein jpg ist. Du solltest hier ein Format verwenden, welches Transparenz kennt, z. B. GIF's, sonst bewegen sich Figuren mit einem farbigen Rechteck über Deinen Hintergrund.
Bzw. sieht es sehr unschön aus, wenn mal 2 Objekte knapp an einander vorbeifliegen, dann wird das eine das andere teilweise überdecken.


----------



## unleashed1988 (21. Okt 2008)

und mit was für einem programm mach ich das mit der bilder transparenz, damit der hässliche rand weg geht? mit paint geht das ja wohl nicht, habs probiert, nur weils gif ist funktionierts noch nich...?!


----------



## Fu3L (21. Okt 2008)

du meinst so einen weißen Runde, rund um das Objekt?

Das hatten ein Kumpel und ich auch. In Paint.NET kanns helfen beim Speichern den Transparenzschwellenwert sehr hoch zu setzen. Beim Zeichnen von Linien & co benutzen einige Programme rund herum so halbtransparente Pixel, die werden in gif dann entweder komplett transparent oder halt komplett weiß, daher ein Rand...

Edit: Paint.NET is auch umsonst, einfach auf chip.de mal danach suchen  :wink: Für einen Windowsuser kaum gewöhnungbedürftig   :wink:


----------



## Quaxli (22. Okt 2008)

Ich empfehle GIMP, aber das ist zugegebenermaßen etwas gewöhnungsbedürftig. 
Dafür aber umsonst  (www.gimp.org).


----------

