Victim De Ace
Grünschnabel
Hi ich wollte mal schiffe versenken mit Java programmieren und bin da nun auf ein Problem gestoßen das ich nicht lösen kann es geht darum:
Ich habe um es testen zu können ein schiff in meinem feld fest plaziert und nachdem ich das schiff mit graphics2D gedreht habe wird dieses immer wieder vom Background übermalt.
Hier einmal den Quellcode von meiner Klasse: "Zelle"
Ich habe um es testen zu können ein schiff in meinem feld fest plaziert und nachdem ich das schiff mit graphics2D gedreht habe wird dieses immer wieder vom Background übermalt.
Hier einmal den Quellcode von meiner Klasse: "Zelle"
Danke schonmal im vorraus/*
* Zelle.java
*
* Created on 6. April 2006, 10:26
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package battleships;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.io.*;
/**
*
* @author Victim De Ace
*/
public class Zelle extends JComponent {
public static final byte wasser = 0;
public static final byte treffer = 1;
public static final byte daneben = 2;
public static final byte Schiff = 4;
public static final byte aufgedeckt = 8;
public static final byte own_part = 16;
public static final int SHIP_NOT_THERE = -1;
public static final int SHIP_PART_1 = 0;
public static final int SHIP_PART_2 = 1;
public static final int SHIP_PART_3 = 2;
public static final int SHIP_PART_4 = 3;
public static final int SHIP_PART_5 = 4;
public static final int ORI_NORTH = 0;
public static final int ORI_EAST = 90;
public static final int ORI_SOUTH = 180;
public static final int ORI_WEST = 270;
private byte status;
private int ship_part;
private int ori = ORI_WEST;
/** Creates a new instance of Zelle */
public Zelle(){
this(wasser, SHIP_NOT_THERE);
}
public Zelle(byte status, int ship_part) {
this.status = status;
this.ship_part = ship_part;
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt){
if (evt.getButton() == MouseEvent.BUTTON1) {
clickeit(evt);
}
repaint();
}
});
}
public void setStatus(byte value) { status = value; repaint(); }
public byte getStatus() { return status; }
public void addStatus(byte value) {
if (!((status & value) == value)) status += value;
repaint();
}
public void subStatus(byte value) {
if ((status & value) == value) status -= value;
repaint();
}
public void setShipPart(int value) {
ship_part = value;
repaint();
}
public int getShipPart() {
return ship_part;
}
private void clickeit(MouseEvent evt) {
if (((status & treffer) == treffer) || ((status & daneben) == daneben)) return;
else if ((status & Schiff) == Schiff) status += treffer;
else status += daneben;
}
private Image getImage(String pth) {
return (new ImageIcon(getClass().getResource(pth))).getImage();
}
private Image drawShip() {
/* switch (ship_part) {
case SHIP_PART_1:
g.drawImage(getImage("ship_part1.gif"), 0, 0, null);
break;
case SHIP_PART_2:
g.drawImage(getImage("ship_part2.gif"), 0, 0, null);
break;
case SHIP_PART_3:
g.drawImage(getImage("ship_part3.gif"), 0, 0, null);
break;
case SHIP_PART_4:
g.drawImage(getImage("ship_part4.gif"), 0, 0, null);
break;
case SHIP_PART_5:
g.drawImage(getImage("ship_part5.gif"), 0, 0, null);
break;
}*/
switch (ship_part) {
case SHIP_PART_1:return getImage("ship_part1.gif");
case SHIP_PART_2: return getImage("ship_part2.gif");
case SHIP_PART_3:return getImage("ship_part3.gif");
case SHIP_PART_4:return getImage("ship_part4.gif");
case SHIP_PART_5: return getImage("ship_part5.gif");
default: return null;
}
}
protected void paintComponent(Graphics g){
/* if (clicked) {
g.drawImage(getImage("Wasser.gif"),0,0,null);
} else {
g.setColor(Color.cyan);
g.fillRect(0, 0, getSize().width, getSize().height);
}*/
// byte clicked = default;
//super.paintComponent(g);
if ((status & daneben) == daneben) /*= daneben*/ {
g.drawImage(getImage("wasser.gif"),0,0,null);
} else if (((status & treffer) == treffer) && (!((status & aufgedeckt) == aufgedeckt)) && (!((status & own_part) == own_part))) {
g.drawImage(getImage("treffer.gif"), 0, 0, null);
} else if ((((status & aufgedeckt) == aufgedeckt) || ((status & own_part) == own_part)) && (ship_part != SHIP_NOT_THERE)) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform at = AffineTransform.getRotateInstance(ori * Math.PI / 180, (25)/2, (25)/2);
g2.setTransform(at);
g2.drawImage(drawShip(),1 ,1,23, 23,null);
} else {
/* g.setColor(Color.cyan);
g.fillRect(0, 0, getSize().width, getSize().height);*/
g.drawImage (getImage("Wasser1.gif"),0,0,null);
}
}
//super.paintComponent(g);
public static void main(String[] args) {
int b = 1;
b += 5;
System.out.println("b := "+b);
}
}
// }