# Ich benötige Hilfe [Noob]



## Hilfloser BA-Student (14. Okt 2004)

Hallo,

unser lieber Prof. hat uns "freiwillig" ne Praxisarbeit gegeben... 

Wir haben 2 Wochen zeit in Java was zu Programmieren.. Das Problem ist ich hab noch nie wirklich was in Java Programmiert ;(

Nun soll ich ein Mensch ärgere dich nicht Spiel machen mit Computer spielern..

Ich hab leider überhaupt keien Ahnung davon..

Wer wäre so nett mir ein wenig Starthilfe zu geben ?

Wäre super lieb !

Grüße

Marc

ICQ : 55285664


----------



## thE_29 (14. Okt 2004)

hast du keine Ahnung von Java, oder keine Ahnung wie man ein Spiel programmiert??

am besten ist du guckst dir mal java einführungen an

http://www.java-forum.org/de/viewtopic.php?t=245


----------



## Reality (14. Okt 2004)

2 Wochen?!
Eine Einführung in Java allein erfodert schon einige Monate!


----------



## Hilfloser BA-Student (15. Okt 2004)

najo, also ich kann schon bissle java programmieren.. hab auch schon C# programmiert was ja "geringe" ähnlichkeiten besitzt... ich hab nur keinen Plan wie ich das Spiel proggen soll.. ich hab z.B. schon den würfel gemacht dre auf Knopfdruck ne Zahl zwischen 1 und 6 auf nem "digitalen" anzeigefeld ausgibt..

nur hab ich so fragen wie, macht man das Spielfeld aus einem Arry, oder einzelne Buttons ? 

etc.

vielleicht hat mir ja jemand n tutorial zu nem ähnlichen Spiel.. das ich mich mal reinlesne kann, da das shcon etwas komplizierter ist als n programm zu schreiben, das dir Volumen udn Oberfläche von einer vorher ausgewählten geometrischen figur ausgibt 

Grüße

und danke für die fixen Antworten

Marc


----------



## Heiko (15. Okt 2004)

Was studierst du denn?

Was hast du denn genau für ein Thema, bzw. was hast du schon realisiert?

(Wir haben innerhalb von wenigen Wochen ne komplette Datenbankanbindung mit Auswertung in Java programmiert auch an einer BA, das kommt also überall vor. ;-) )


----------



## macfreakz (19. Okt 2004)

ist doch simple! 

Deshalb ist IT in Deutschland nicht so mächtig wie anderen Ländern (USA, Japan, ...) 
die müssen sicher 3D Game proggen ... 

Jetzt zu deinem Thema: 
Das Board würde ich als Grafikbild darstellen (geht viel schneller) 
Jeden Feldern wird ein Rechteck (posx, posy, width, height) zugewiesen.

In einem Feld kann nur ein Spieler stehen. 

Also

```
public Feld 
{
    int posx; 
    int posy;
    int width;
    int height;

    Player player;

// accessors kommen hier

}
```

Die felder speicherst du in einem Container wie Set oder von mir aus Vector. 

Das wäre mein Ansatz ... es gibt viele Wege, die nach Rom führen ! Ok?


----------



## Gast (7. Apr 2007)

Seid gegrüßt alle mit einander   

sorry, wenn ich mich noch nicht registriert habe, aber dazu war ich jetzte zu müde, kann ich ja noch nachholen. *g*

ich hätte da mal eine Frage, ein wenig dazu....



			
				macfreakz hat gesagt.:
			
		

> .....
> 
> Jetzt zu deinem Thema:
> Das Board würde ich als Grafikbild darstellen (geht viel schneller)
> ...



Den Ansatz, finde ich ganz gut...

Was aber, wenn man sehen will, wie sich die Figur, von einem Feld zum nächsten schiebt???

Wie sollte da der Ansatz sein? Oder wie kann man das am besten, und besonders spielfreundlich realiseren.


Also ich will nun, nachdem ich schon ein paar Java-Anwednungen, eher im Bereich kleine Tools für den täglichen Computer.Gebrauch. Ein BrettSPiel realisieren, welches ich einfach so besonders mag.

Ich habe nun alle Spielelemente eingescannt und als Jpgs und pngs für die Umsetztung vorbereitet. Nun bin ich am überlegen wie ich es realisieren kann, also am Konzept

Ich möchte auf jeden Fall Bilder verwenden, damit es optisch auch gut aussieht.

Ich hatte nun vor, Spielsteine als JLabel mit Bild zu realisieren, diese dann via Container in ein Jframe zu setzen.

anhand von Arrays können dann die Spielsteinen herausfinden, zu welcher Koordinate sie dann "fliegen" (oder sich verschieben) müssen. Das verschieben wird dann durch das Ändern der Koordinaten des Labels passieren


nun, eigentlich meine Frage (oder eigentlich mehere). 

1. Sollte man das so realisieren, oder gibt es da eine bessere Möglichkeit? 

2. Nach jeder Veränderung des Spielsteins um einen Pixel in Richtung  x and/or y, muss ja das ganze neu gezeichnet werden, oder?? 

3. Muss man da dann den ganzen Bildschirm neu zeichen, und wie sieht es aus, wenn man insgesamt 30 oder Elemente auf dem Bildschirm (auch wenn nur zeitgleich eins zieht), hat, wenn die Immer neu gezeichnet werden, wird dann die (pseudo)-"Animation" des Spielsteins nicht zu langsam??? Und damit das Spiel, weil ich erst warten muss, bis der dann noch zusätzlich schaft eine DropdownListe zu öffnen, oder ähnliches, oder kann man auch nur den Bereich um den Spielstein neuzeichnen lassen,

4. Muss man dann auch irgendwas buffern oder doublebuffern, kenn mich in der Grafik, respektive in der Spielprogramierung nicht so aus, bisher reichte es, wenn ich wusste, wie ich Felder, Boxem und Buttons für meine Anwenungen realisieren kann.

Ok, ich denke, das reicht erstmal an Fragen,.....

wenn mir einer darauf antworten würde, wäre ich sehr dankbar

es grüsst

JoJo


----------



## Marco13 (7. Apr 2007)

_1. Sollte man das so realisieren, oder gibt es da eine bessere Möglichkeit?_

Ich denke, es macht keinen Sinn, die Spielsteine als JLabels anzusehen. Man erbt mit JLabel sehr viel "Mist", den man für den Spielstein nicht braucht. Ein Spielstein hat eine Position, eine Größe, ein Bild und evtl. noch eine Farbe bzw. Spieler-Zugehörigkeit. Ein JLabel hat einen LayoutManager, ein ImageIcon, eine Aufschrift, PreferredSize, .... alles unnötig.
Ganz pragmatisch wäre sowas wie

```
class Piece
{
    private int x,y,width,height; 
    private Image image;
    ...

    public void paintThisPieceOn(Graphics g)
    {
        g.drawImage(image, x,y,width,whight)
    }
}
```

_2. Nach jeder Veränderung des Spielsteins um einen Pixel in Richtung x and/or y, muss ja das ganze neu gezeichnet werden, oder??_
Nö. Aber wenn du die Veränderung SEHEN willst, dann JA 

_3. Muss man da dann den ganzen Bildschirm neu zeichen, und wie sieht es aus, wenn man insgesamt 30 oder Elemente auf dem Bildschirm (auch wenn nur zeitgleich eins zieht), hat, wenn die Immer neu gezeichnet werden, wird dann die (pseudo)-"Animation" des Spielsteins nicht zu langsam??? 
_
Es gibt AFAIK grundsätzlich die Möglichkeit, nur einen bestimmten Bereich des Bildschirms neu zu zeichnen, mit 
repaint(x,y,w,h);
oder so. Aber das muß auch von dir entsprechend umgesetzt werden, was etwas aufwändiger sein könnte. Und ob das dann (bei Swing) tatsächlich bewirkt, dass _weniger_ getan werden muß, ist garnichtmal sicher. Aber mach dir um die Geschwindigkeit in diesem Fall mal keine Gedanken. Solange es nicht mehr als 30 millisekunden dauert, 30 kleine Bildchen zu malen, ist die Animation flüssig.

_4. Muss man dann auch irgendwas buffern oder doublebuffern_
Bei Swing wird automatisch gedoublebuffert.


----------



## Gast JoJo (7. Apr 2007)

Zunächst ein Mal, danke für die schnelle Antwort


Nur leider stehe ich nun auf dem Schlauch (oder auf der Line *g*)


Also, nicht so viel Mist mitzuerben, klingt gut, denn du hast ja recht, viele Informationen, braucht der Stein nicht.

Und dein vorschlag, klingt gut!!

Allerdings weis ich eben noch nicht so viel damit anzufangen.


Zunächst einmal, hab ich Java for ein paar Jahren gelernt (naja, gelernt ist wohl übertrieben, kennengelernt).

Nach ersten Vermutungen: liege ich richtig, das dein Vorschlag etwas mit Jawa.awt und der Klasse Graphics zu tun hat?
Wenn ja, dann, muss ich leider sage, das ich da, wo ich Java gerlernt habe, nie darauf eingegangen ist, das man nit Graphics auch Bilder anzeigen kann. Wir haben damals mit Graphic und Grahics2d nur ein paar Formen (Quadrate, Rechtecke, Kreise) zeichnen lassen. Bilder haben wir immer nur in Labels gesteckt.

Wenn das wirklich über Graphics geht, dann auch über die Klasse Image (beides von AWT)?  ???:L 

Also geht man dann so vor???

- Man öffnet ein Jframe
- man legt ein Jpanel an, diesem fügt man den Spielstein zu
- man fügt das Panel den Frame zu
- man läst das Frame anzeigen



muss ich die Methode drawImage überschreiben, da ich nur drawImageMethoden gefuden habe, die noch ein ImageObserver wolllen (Obwohl ich hier noch nicht verstehe, was dies ist)?

Wären dann die Bilder der SpielSteine auch schon gebuffert, so wie bei Swingkomponenten?


Ich hoffe ich bekomme noch mal Antwort

Gruss JoJo


----------



## Gast Jojo (8. Apr 2007)

Sodele, ich bins nochmal

hab ein wenig herumgesucht und herumprobiert, um mich meinem Problem zu nähern... 

/* (Bin ja fast schon ein wenig zufrieden, dass ich überhaupt schon mal ein Bild über imagedraw auf dem Bildschirm habe,
auch wenn beide Bilder unten abgeschnitten sind und nicht übereinander liegen */ 

...aber auf diese Weise konnte ich zwar zwei Bilder laden,  nicht aber übereinander, auf Position (0,50), so wie ich gehofft hab.
Und für heute bin ich mit meinem Latein am Ende, also die Graphics-Sache ist noch nicht so mein Ding, aber ich versuche mich ja ihr zu nähren.



```
import java.awt.*;
import javax.swing.*;

public class BildLaden extends JPanel {
    private Image image;


    public BildLaden (Image imageIn,int widthIn,int heightIn) {
        image = imageIn;
        setPreferredSize(new Dimension(widthIn, heightIn)); 
        setSize(widthIn,heightIn);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0 , 50, null);

    }

    public static void main(String[] args) {

        BildLaden bild = new BildLaden (new ImageIcon("01Hauptplan.jpg").getImage(),1024,357);
        
        BildLaden bild2 = new BildLaden (new ImageIcon("02Piece1.png").getImage(),64,64);


        JFrame mainFrame = new JFrame("Hauptplan");
        mainFrame.setSize(1024,786);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        JPanel pane = new JPanel();
        pane.add(bild);
        pane.add(bild2);
        mainFrame.setContentPane(pane);
        mainFrame.show();
    }
}
```

Nur wie, ich mich nun meinem Ziel noch weiter Nähern soll, weiss ich nicht.
Vielleicht könntet ihr mir ja nun weiterhelfen: Wie bekommt man denn nun diese 2 Bilder übereinander auf Position (0,50), so viel änderung, kann es doch nun nicht mehr sein, oder? Zumindest hoff ich das.

Also gute Nacht Deutschland, wo immer ihr sein mögt....

bis denne und Gruss, JoJo


----------

