Java Spieleprogrammieren Hilfe !!

  • Hallo

    Mein Bruder studiert Informatik in Linz 1.Semester und er musste ein Programm
    fertig bekommen bis ca. in einer Woche.

    Da er am Krankenhaus Wels Operiert worden ist :wein: vor ca. 2 Wochen kann er dieses Programm nicht selber fertig machen -

    er hatt mich darum gebetten ob ich vielleicht das Programm fertig machen könnte, da ich HTL für Chemie Wels bin kenne ich mich nicht aus.
    und da ich mich nicht so gut mit Programmieren bzw. Java auskenne brauche ich hilfe von euch Bitte Bitte!

    (Das ist ein Spiel Muehle -> er müsste noch das Design umändern bzw. ein bisschen anders geschtalten das Programm! --> aber wie ??? (z.B Farben anders , das es halt ein bisschen anders aussieht))

    weil ich muss das umbedieng für ihm an der Universität abgeben, zählt viel zur Vorlesung.


    Kann mir bitte irgendwehr helfen ???? :wein:


    Hier ist das Programm:::

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.text.*;
    import java.util.*;
    import java.io.*;
    import java.net.*;

    public class Muehle extends JComponent implements MouseMotionListener, MouseListener, Runnable
    {
    public static final char SCHWARZ = 'S', SCHWARZ_W = 's';
    public static final char WEISS = 'W', WEISS_W = 'w';
    public static final char LEER = ' ';

    public static final int AUSWAEHLEN = 0;
    public static final int ZIEHEN = 1;
    public static final int WEGNEHMEN = 2;

    static final int[] koordX =
    {
    400, 700, 700, 700, 400, 100, 100, 100, // 0-7
    400, 600, 600, 600, 400, 200, 200, 200, // 8-15
    400, 500, 500, 500, 400, 300, 300, 300 // 16-23
    };
    static final int[] koordY =
    {
    100, 100, 400, 700, 700, 700, 400, 100, // 0-7
    200, 200, 400, 600, 600, 600, 400, 200, // 8-15
    300, 300, 400, 500, 500, 500, 400, 300 //16-23
    };

    static final char[] spielfeld =
    {
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 0-7
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8-15
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' //16-23
    };

    PrintStream ps;
    Scanner scan;

    // Noch zu setzende Spielsteine
    int steineWeiss;
    int steineSchwarz;
    boolean spielModusSetzen;
    boolean spielModusZiehen;
    int ziehenZustand;

    char naechsterSpieler = WEISS;
    int gezogenerStein = -1;
    int mousePosX, mousePosY;
    char spieler;

    public Muehle()
    {
    addMouseMotionListener(this);
    addMouseListener(this);
    steineWeiss = 9;
    steineSchwarz = 9;
    spielModusSetzen = true;
    spieler = WEISS;
    try
    {
    ServerSocket server = new ServerSocket(0);
    System.out.println("Port: " + server.getLocalPort());
    initVerbindung(server.accept());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    public Muehle(String inetAddr, int port)
    {
    addMouseMotionListener(this);
    addMouseListener(this);
    steineWeiss = 9;
    steineSchwarz = 9;
    spielModusSetzen = true;
    spieler = SCHWARZ;
    try
    {
    initVerbindung(new Socket(inetAddr, port));
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    public void paint(Graphics g)
    {
    // Bildschirmhintergrund loeschen
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, getWidth(), getHeight());

    // Spielfeld zeichnen
    paintSpielfeld(g);

    paintSteine(g);

    if (spielModusSetzen)
    {
    paintStein(g, mousePosX, mousePosY, naechsterSpieler);
    }
    if (ziehenZustand == WEGNEHMEN)
    {
    paintSteinWegnehmen(g, mousePosX, mousePosY, naechsterSpieler);
    }

    paintNichtGesetzteSteine(g);
    }

    public void paintSteine(Graphics g)
    {
    for (int i = 0; i < spielfeld.length; i ++)
    {
    paintSteinPos(g, i, spielfeld[i]);
    }
    }

    public void paintSpielfeld(Graphics g)
    {
    ((Graphics2D)g).setStroke(new BasicStroke(6));
    g.setColor(Color.BLACK);
    g.drawRect(100, 100, 600, 600);
    g.drawRect(200, 200, 400, 400);
    g.drawRect(300, 300, 200, 200);

    g.drawLine(400, 100, 400, 300);
    g.drawLine(100, 400, 300, 400);
    g.drawLine(500, 400, 700, 400);
    g.drawLine(400, 500, 400, 700);
    }

    public void paintSteinPos(Graphics g, int pos, char farbe)
    {
    paintStein(g, koordX[pos], koordY[pos], farbe);
    }

    public void paintSteinWegnehmen(Graphics g, int xPos, int yPos, char farbe)
    {
    paintStein(g, xPos, yPos, farbe);
    g.setColor(Color.BLACK);
    g.drawLine(xPos - 40, yPos - 40, xPos + 40, yPos + 40);
    g.drawLine(xPos - 40, yPos + 40, xPos + 40, yPos - 40);
    }

    public void paintStein(Graphics g, int xPos, int yPos, char farbe)
    {
    if (farbe == SCHWARZ || farbe == SCHWARZ_W)
    {
    g.setColor(Color.BLACK);
    g.fillOval(xPos - 30, yPos - 30, 60, 60);
    }
    else if (farbe == WEISS || farbe == WEISS_W)
    {
    g.setColor(Color.WHITE);
    g.fillOval(xPos - 30, yPos - 30, 60, 60);
    ((Graphics2D)g).setStroke(new BasicStroke(3));
    g.setColor(Color.BLACK);
    g.drawOval(xPos - 30, yPos - 30, 60, 60);
    }
    else // Kein Stein gesetzt
    {
    g.setColor(Color.GRAY);
    g.fillOval(xPos - 6, yPos - 6, 12, 12);
    }
    if (farbe == WEISS_W || farbe == SCHWARZ_W)
    {
    g.setColor(Color.BLUE);
    g.fillOval(xPos - 10, yPos - 10, 20, 20);
    }
    }

    public void paintNichtGesetzteSteine(Graphics g)
    {
    for (int i = 0; i < steineWeiss; i ++)
    {
    g.setColor(Color.WHITE);
    g.fillOval(20, 100 + i * 60, 50, 50);
    g.setColor(Color.BLACK);
    g.drawOval(20, 100 + i * 60, 50, 50);
    }
    for (int i = 0; i < steineSchwarz; i ++)
    {
    g.fillOval(730, 100 + i * 60, 50, 50);
    }
    }

    public void mouseMoved(MouseEvent evt)
    {
    if((naechsterSpieler == spieler) == (ziehenZustand != WEGNEHMEN))
    {
    mousePosX = evt.getX();
    mousePosY = evt.getY();
    ps.println("MOVE " + mousePosX + " " + mousePosY);
    repaint();
    }
    }
    public void mouseDragged(MouseEvent evt)
    {

    }

    public void mouseClicked(MouseEvent e)
    {
    if((naechsterSpieler == spieler) == (ziehenZustand != WEGNEHMEN))
    {
    setzeSteinAuf(mousePosX = e.getX(), mousePosY = e.getY());
    ps.println("CLICK " + mousePosX + " " + mousePosY);
    }
    }

    public void setzeSteinAuf(int posx, int posy)
    {
    mousePosX = posx;
    mousePosY = posy;
    for (int i = 0; i < 24; i ++)
    {
    int x2 = koordX[i];
    int y2 = koordY[i];
    double diff = Math.sqrt(
    (mousePosX - x2) * (mousePosX - x2) +
    (mousePosY - y2) * (mousePosY - y2));
    if (diff < 30)
    {
    if (ziehenZustand == WEGNEHMEN)
    {
    if (spielfeld[i] == naechsterSpieler)
    {
    spielfeld[i] = LEER;
    ziehenZustand = AUSWAEHLEN;
    repaint();
    }
    }
    else if (spielModusSetzen)
    {
    if (spielfeld[i] == LEER)
    {
    spielfeld[i] = naechsterSpieler;
    if (naechsterSpieler == WEISS)
    {
    steineWeiss --;
    naechsterSpieler = SCHWARZ;
    }
    else
    {
    steineSchwarz --;
    naechsterSpieler = WEISS;
    }
    if (steineWeiss == 0 && steineSchwarz == 0)
    {
    spielModusSetzen = false;
    spielModusZiehen = true;
    }
    ueberpruefeMuehle(i);
    repaint();
    }
    }
    else if (spielModusZiehen)
    {
    if (ziehenZustand == AUSWAEHLEN)
    {
    if (spielfeld[i] == naechsterSpieler)
    {
    spielfeld[i] = (char)(spielfeld[i] + ('a' -'A'));
    gezogenerStein = i;
    ziehenZustand = ZIEHEN;
    }
    }
    else if (ziehenZustand == ZIEHEN)
    {
    if (spielfeld[i] == LEER)
    {
    spielfeld[i] = naechsterSpieler;
    spielfeld[gezogenerStein] = LEER;
    gezogenerStein = -1;
    if (naechsterSpieler == WEISS)
    {
    naechsterSpieler = SCHWARZ;
    }
    else
    {
    naechsterSpieler = WEISS;
    }
    ziehenZustand = AUSWAEHLEN;
    ueberpruefeMuehle(i);
    }
    }
    repaint();
    }
    }
    }
    }

    public void mouseEntered(MouseEvent e)
    {

    }

    public void mouseExited(MouseEvent e)
    {

    }

    public void mousePressed(MouseEvent e)
    {

    }

    public void mouseReleased(MouseEvent e)
    {

    }

    public void ueberpruefeMuehle(int pos)
    {
    int spieler = spielfeld[pos];
    if (pos % 2 == 0) //Gerade Stellen (keine Ecken)
    {
    if (pos % 8 == 0)
    {
    if ((spielfeld[pos + 7] == spieler) && (spielfeld[pos + 1] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    }
    else if ((spielfeld[pos - 1] == spieler) && (spielfeld[pos + 1] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    pos = pos % 8;
    if ((spielfeld[pos] == spieler) && (spielfeld[pos + 8] == spieler) && (spielfeld[pos + 16] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    }
    else //Ungerade Stellen (Ecken)
    {
    if (pos == 7 || pos == 15 || pos == 23)
    {
    if ((spielfeld[pos - 7] == spieler) && (spielfeld[pos - 6] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    }
    else
    {
    if ((spielfeld[pos + 1] == spieler) && (spielfeld[pos + 2] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    }
    if (pos == 1 || pos == 9 || pos == 17)
    {
    if ((spielfeld[pos - 1] == spieler) && (spielfeld[pos + 6] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    }
    else
    {
    if ((spielfeld[pos - 1] == spieler) && (spielfeld[pos - 2] == spieler))
    {
    ziehenZustand = WEGNEHMEN; //Muehle!
    }
    }
    }
    }

    public void initVerbindung(Socket socket)
    {
    try
    {
    ps = new PrintStream(socket.getOutputStream());
    scan = new Scanner(socket.getInputStream());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    new Thread(this).start();
    }

    public void run()
    {
    while (scan.hasNext())
    {
    String cmd = scan.next();
    int xPos = scan.nextInt();
    int yPos = scan.nextInt();
    if (cmd.equals("MOVE"))
    {
    mousePosX = xPos;
    mousePosY = yPos;
    repaint();
    }
    else if (cmd.equals("CLICK"))
    {
    setzeSteinAuf(xPos, yPos);
    }
    }
    }
    }

  • ich hab das programm jetzt nicht getestet, aber was genau ist deine frage?
    ich komm nicht ganz dahinter beim lesen deines posts.

    Patient: "Doctor, doctor, my eye hurts when I poke it with a spoon."
    Doctor: "Don't poke it, then."

  • Warum kann man nicht programmieren, wenn man im Krankenhaus ist bzw. operiert wurde? Ich mein die ersten 2-3 Tage ok, aber danach/davor?

    Normalerweilse gewäht die LVA-Leitung in solchen Fällen dazu eh eine Ausnahme ... hm

    There's a place in the dark where the animals go
    you can take off your skin in the cannibal glow
    Juliet loves a beat and the lust it commands
    drop the dagger and lather the blood on your hands - Romeo

  • Hallo

    Im Krankenhaus ist das verboten in Wels Laptop oder dieverse elektronische Geräte mit zu nähmen deswegen,

    außerdem wurde er am Oberschenkel und an der Wirbelsäure Operiert.

  • ich sage nicht das du mdk die Hausübung ---oder etwas --machen solltest ich habe nur geschreiben das ich etwas hilfe brauch und einen brauche der mir das ein bisschen erklärt auch teilweise zeigen kann!!!! :)

    aber trotzdem danke die zurück geschreiben haben :):)

  • Und ich glaube Du bist ein Einzelkind, und nachdem auf java-forum.org keiner Deine Hausübung machen wollte, hast Du es hier mal mit einer Geschichte versucht. Wo ist denn dein kranker Bruder in den 5 Postings auf java-forum.org?

    Meiner Meinung nach war die Geschichte auch nicht sehr gut überlegt, denn mit einer Bestätigung vom Arzt könnte dein armer kranker Bruder die Aufgabe vermutlich nachholen. Und warum sollte ein Informatik Student von seinem jüngeren Chemie-Schüler-Bruder erwarten, dass der ihm ein Java Programm schreiben kann? Also von allen möglichen Lösungen für das Problem wäre das mit Abstand die dämlichste, die ich mir vorstellen kann. Er hätte Dich frage sollen ob Du ihm einen Zauberheiltrank braust, das wäre realistischer gewesen.

    Ich vermute auch du hast den Code von einem Kollegen kopiert, und jetzt muss der natürlich anders aussehen als bei ihm.

    lg, Benjamin Ferrari, bookworm.at

    2 Mal editiert, zuletzt von a9bejo (23. Mai 2008 um 21:51)

  • ach lol, zumindest noch ein bisschen gelacht vorm schlafen gehen :)

    [FONT=Arial, Helvetica, sans-serif](\__/) [/FONT]
    [FONT=Arial, Helvetica, sans-serif] (='.'=) [/FONT]This is Bunny. Copy Bunny into your signature to help
    [FONT=Arial, Helvetica, sans-serif](")_(")[/FONT] him on his way to world domination.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!