Tag erstemal an alle,
ich und ein Projektpartner sind dabei, das Spiel 'Muehle' zu programmieren. Mein Partner programmiert das Spiel, ich programmiere die graphische Oberflaeche.
Soweit steht alles, mein Problem ist, dass ich zwei Steine setzen kann, und einen davon auch bewegen kann. Aber
Erwaehnen sollte ich noch, dass ich keine Algorithmen mehr brauche, sondern konkrete Ansaetze; denn mein Problem liegt nur noch an der Ausfuehrung der Algorithmen,
danke fuer Eure Hilfe!
ich und ein Projektpartner sind dabei, das Spiel 'Muehle' zu programmieren. Mein Partner programmiert das Spiel, ich programmiere die graphische Oberflaeche.
Soweit steht alles, mein Problem ist, dass ich zwei Steine setzen kann, und einen davon auch bewegen kann. Aber
- der schwarze Stein, den ich bewegen kann, kann ich nicht ziehen. Die Methode dazu habe ich zwar, aber sie wird offenbar nie gelesen ("//Stein ziehen")
- Den zweiten Stein, den blauen, kann ich nicht bewegen, egal was ich versucht habe
- Ich wuerde gern weitere Steine einfuegen, z.B. rot oder grau, oder auch wieder schwarz und blau; es muessen ja am Schluss pro Farbe neun Steine sein
- Die Punkte sind hinter dem Feld, sie muessen aber davor sein; wo liegt da mein Fehler?
Erwaehnen sollte ich noch, dass ich keine Algorithmen mehr brauche, sondern konkrete Ansaetze; denn mein Problem liegt nur noch an der Ausfuehrung der Algorithmen,
danke fuer Eure Hilfe!
Java:
package nix;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Stones {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame("Spielfeld");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new MyPanel());
f.setSize(500,500);
f.setVisible(true);
}
}
class MyPanel extends JPanel {
/**
*
*/
//start field
public void paint(Graphics g) {
// paint stones
super.paintComponent(g);
g.drawString("",10,20);
g.drawString("",10,20);
blackSquare.paintSquare(g);
blueSquare.paintSquare(g);
// redSquare.paintSquare(g);
// paint field
Dimension size = getSize();
int d = Math.min(size.width, size.height); // diameter
int ed = d/30; // Punktgroesse
int x = (size.width - d)/2;
int y = (size.height - d)/2;
/* // field background color
g.fillRect(x, y, d, d);
g.setColor(Color.red);
g.drawRect(x, y, d, d);
*/
// draw dots
g.fillRect(x+((1)*(d/9))-(ed/2), y+d/9-(ed/2), ed, ed); // oberste linie 1
g.fillRect(x+((1)*(d/2))-(ed/2), y+d/9-(ed/2), ed, ed); // oberste linie 2
g.fillRect((int) (x+((1)*(d/1.1))-(ed/2)), y+d/9-(ed/2), ed, ed); // oberste linie 3
g.fillRect((int) (x+((1)*(d/5))-(ed/2)), (int) (y+d/4-(ed/2)), ed, ed); // zweite linie 1
g.fillRect(x+((1)*(d/2))-(ed/2), y+d/4-(ed/2), ed, ed); // zweite linie 2
g.fillRect((int) (x+((1)*(d/1.2))-(ed/4)), (int) (y+d/4-(ed/2)), ed, ed); // zweite linie 3
g.fillRect((int) (x+((1)*(d/3))-(ed/2)), (int) (y+d/3-(ed/2)), ed, ed); // dritte linie 1
g.fillRect((int) (x+((1)*(d/2))-(ed/2)), (int) (y+d/3-(ed/2)), ed, ed); // dritte linie 2
g.fillRect((int) (x+((1)*(d/1.5))-(ed/2)), (int) (y+d/3-(ed/2)), ed, ed); // dritte linie 3
g.fillRect(x+((1)*(d/9))-(ed/2), y+d/2-(ed/2), ed, ed); // vierte linie 1
g.fillRect((int) (x+((1)*(d/5))-(ed/2)), (int) (y+d/2-(ed/2)), ed, ed); // vierte linie 2
g.fillRect((int) (x+((1)*(d/3))-(ed/2)), (int) (y+d/2-(ed/2)), ed, ed); // vierte linie 3
g.fillRect((int) (x+((1)*(d/1.5))-(ed/2)), (int) (y+d/2-(ed/2)), ed, ed); // vierte linie 4
g.fillRect((int) (x+((1)*(d/1.2))-(ed/4)), (int) (y+d/2-(ed/2)), ed, ed); // vierte linie 5
g.fillRect((int) (x+((1)*(d/1.1))-(ed/2)), y+d/2-(ed/2), ed, ed); // vierte linie 6
g.fillRect((int) (x+((1)*(d/3))-(ed/2)), (int) (y+d/1.5-(ed/2)), ed, ed); // fuenfte linie 1
g.fillRect((int) (x+((1)*(d/2))-(ed/2)), (int) (y+d/1.5-(ed/2)), ed, ed); // fuente linie 2
g.fillRect((int) (x+((1)*(d/1.5))-(ed/2)), (int) (y+d/1.5-(ed/2)), ed, ed); // fuente linie 3
g.fillRect((int) (x+((1)*(d/5))-(ed/2)), (int) (y+d/1.3-(ed/2)), ed, ed); // sechste linie 1
g.fillRect(x+((1)*(d/2))-(ed/2), (int) (y+d/1.3-(ed/2)), ed, ed); // sechste linie 2
g.fillRect((int) (x+((1)*(d/1.2))-(ed/4)), (int) (y+d/1.3-(ed/2)), ed, ed); // sechste linie 3
g.fillRect(x+((1)*(d/9))-(ed/2), (int) (y+d/1.1-(ed/2)), ed, ed); // siebte linie 1
g.fillRect(x+((1)*(d/2))-(ed/2), (int) (y+d/1.1-(ed/2)), ed, ed); // siebte linie 2
g.fillRect((int) (x+((1)*(d/1.1))-(ed/2)), (int) (y+d/1.1-(ed/2)), ed, ed); // siebte linie 3
//draw rectangles
g.drawRect(x+((1)*(d/9))-(ed/2), y+d/9-(ed/2), (int) (d/1.21), (int) (d/1.21)); // aussen
g.drawRect((int) (x+((1)*(d/5))-(ed/2)), (int) (y+d/4-(ed/2)), (int) (d/1.49), (int) (d/1.815)); // mitte
g.drawRect((int) (x+((1)*(d/3))-(ed/2)), (int) (y+d/3-(ed/2)), (int) (d/2.74), (int) (d/2.74)); // innen
//draw lines
g.drawLine((int) (x+((1)*(d/1.96))-(ed/2.9)), y+d/9-(ed/2), (int) (x+((1)*(d/1.96))-(ed/2.9)), (int) (y+d/3-(ed/2))); // Nord
g.drawLine((int) (x+((1)*(d/1.96))-(ed/2.9)), (int) (y+d/1.1-(ed/2)), (int) (x+((1)*(d/1.96))-(ed/2.9)), (int) (y+d/1.5-(ed/2))); // Sued
g.drawLine((int) x+((1)*(d/9))-(ed/2), (int) (y+d/2-(ed/7.5)), (int) (x+((1)*(d/3))-(ed/2)), (int) (y+d/2-(ed/7.5))); // West
g.drawLine((int) (x+((1)*(d/1.5))-(ed/2)), (int) (y+d/2-(ed/7.5)), (int) (x+((1)*(d/1.1))-(ed/2)), (int) ((int) y+d/2-(ed/7.5))); // Ost
}
//end field
private static final long serialVersionUID = -5500035608091446717L;
BlackSquare blackSquare = new BlackSquare();
BlueSquare blueSquare = new BlueSquare();
// RedSquare redSquare = new RedSquare();
// GraySquare graySquare = new GraySquare();
public MyPanel() {
setBorder(BorderFactory.createLineBorder(Color.red));
setBorder(BorderFactory.createLineBorder(Color.yellow));
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
moveSquare(e.getX(),e.getY());
}
});}
//Stein ziehen
//addMouseMotionListener(new MouseAdapter(){
public void mouseDragged(MouseEvent e){
moveSquare(e.getX(),e.getY());
}
private void moveSquare(int x1, int y1){
final int CURR_X = blackSquare.getX();
final int CURR_Y = blackSquare.getY();
final int CURR_W = blackSquare.getWidth();
final int CURR_H = blackSquare.getHeight();
final int OFFSET = 1;
// final int CURR_X = blueSquare.getX();
if ((CURR_X!=x1) || (CURR_Y!=y1)) {
// The square is moving, repaint background
// over the old square location.
repaint(CURR_X,CURR_Y,CURR_W+OFFSET,CURR_H+OFFSET);
// Update coordinates.
blackSquare.setX(x1);
blackSquare.setY(y1);
// blueSquare.setX(x1);
// blueSquare.setY(y1);
// Repaint the square at the new location.
repaint(blackSquare.getX(), blackSquare.getY(),
blackSquare.getWidth()+OFFSET,
blackSquare.getHeight()+OFFSET);
repaint(blueSquare.getX(), blueSquare.getY(),
blueSquare.getWidth()+OFFSET,
blueSquare.getHeight()+OFFSET);
}
}
public Dimension getPreferredSize() {
return new Dimension(250,200);
}
}
abstract class Square{
public int xPos;
public int yPos;
public int width;
public int height;
public Color line;
public Color filling;
protected void setAll(int xPos,int yPos, int width, int height, Color line, Color filling){
this.xPos = xPos;
this.yPos = yPos;
this.width = width;
this.height = height;
this.line = line;
this.filling = filling;
}
public void setX(int xPos){
this.xPos = xPos;
}
public void setX1(int xPos){
this.xPos = xPos;
}
public int getX(){
return xPos;
}
public void setY(int yPos){
this.yPos = yPos;
}
public void setY1(int yPos){
this.yPos = yPos;
}
public int getY(){
return yPos;
}
public int getWidth(){
return width;
}
public int getHeight(){
return height;
}
public void paintSquare(Graphics g){
g.setColor(filling);
g.fillRect(xPos,yPos,width,height);
g.setColor(line);
g.drawRect(xPos,yPos,width,height);
}
}
class BlackSquare extends Square{
BlackSquare(){
this.setAll(100,100,
25,25, Color.BLACK,Color.BLACK);
}
}
class BlueSquare extends Square{
BlueSquare(){
this.setAll(25,25,
25,25,
Color.BLUE,Color.BLUE);
}
class GraySquare extends Square{
GraySquare(){
this.setAll(50, 50,
50, 50,
Color.GRAY, Color.GRAY);
}
}
class RedSquare extends Square{
RedSquare(){
this.setAll(35, 35,
40, 40,
Color.RED, Color.RED);
}
}
}