import java.awt.*;
import java.awt.event.*;
import java.net.MalformedURLException;
public class SchiffeVersenken extends Frame{
Button neustart;
Label computer;
Label spieler;
Graphics g;
Image img;
int[][][] arraySpiecher=new int [2][10][16];
int [][][] arrayPcSchiffe=new int [2][10][16];
public SchiffeVersenken()throws MalformedURLException{
start();
neustart.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
paint(0);
paint(0);
}
});
addWindowListener (new WindowAdapter(){/*Michael*/
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void start(){/*Michael*/
setSize(520,500);
setLayout(null);
neustart=new Button(" Neustart ");
computer=new Label();
spieler=new Label();
computer.setBackground(Color.blue);
spieler.setBackground(Color.blue);
computer.setBounds(40,120,200,320);
spieler.setBounds(280,120,200,320);
neustart.setBounds(20,20,20,20);
add(neustart);
add(computer);
add(spieler);
setVisible(true);
}
public void arraysaufNull(){
//alle Arrays auf 0
for(int a=0;a<=1;a++){
for(int w=0;w<=15;w++){
for(int e=0;e<=9;e++){
arraySpiecher[a][e][w]=0;
arrayPcSchiffe[a][e][w]=0;
}
}
}
}
public boolean abfSetz(int x, int y, int q, int links, int rechts,int drehen){
if(drehen==1){
for(int w=y-links;w<=y+rechts;w++){
if(arraySpiecher[q][x][w]!=0){
return false;
}
}
}
else{
for(int w=x-links;w<=x+rechts;w++){
if(arraySpiecher[q][w][y]!=0){
return false;
}
}
}
return true;
}
public int arrayBelegenSenkrecht(boolean weiter,int x, int y, int q,int anzahl, int wert,int links,int rechts){
if(weiter==true){
for(int w=y-links;w<=y+rechts;w++){
arraySpiecher[q][x][w]=wert;
}
arrayPcSchiffe[q][x][y]=wert;
anzahl++;
}
return anzahl;
}
private void paint(int q) {
try{Thread.sleep(100);}
catch(Exception e){}
for(int i=0;i<2;i++){
if(i==0){
g=spieler.getGraphics();
g.setColor(Color.black);
}
else{
g=computer.getGraphics();
g.setColor(Color.black);
}
int linieWag=0;
for(int w=0;w<=14;w++){
linieWag=linieWag+20;
g.drawLine(0,linieWag,200,linieWag);
}
int linieSenk=0;
for(int w=0;w<=8;w++){
linieSenk=linieSenk+20;
g.drawLine(linieSenk,0,linieSenk,320);
}
}
//rasterZeichnen();
for(int w=0;w<=15;w++){
for(int e=0;e<=9;e++){
if(q==0){
if(arrayPcSchiffe[0][e][w]!=0){
img = getToolkit().getImage(("schiff"+arrayPcSchiffe[0][e][w]+".gif"));
g= spieler.getGraphics();
g.drawImage(img,e*20-40,w*20-40,spieler);
}
}
else{
if(arrayPcSchiffe[1][e][w]!=0){
img = getToolkit().getImage(("schiff"+arrayPcSchiffe[1][e][w]+".gif"));
g= computer.getGraphics();
g.drawImage(img,e*20-40,w*20-40,computer);
}
}
}
}
}
public int arrayBelegenWaagrecht(boolean weiter,int x, int y, int q,int anzahl, int wert,int links,int rechts){
if(weiter==true){
for(int w=x-links;w<=x+rechts;w++){
arraySpiecher[q][w][y]=wert;
}
arrayPcSchiffe[q][x][y]=wert;
anzahl++;
}
return anzahl;
}
public void booteSetzenZeichnen(){
for(int q=0;q<=1;q++){
int x;
int y;
int anzahl;
boolean weiter;
//ein 5 er Schlachtschiff:
x=(int)Math.round(10*Math.random()+0.5)-1;
y=(int)Math.round(11*Math.random()+0.5)-1+2;
anzahl=arrayBelegenSenkrecht(true,x,y,q,0,12,2,2);
anzahl=0;
while (anzahl<1){
weiter=true;
//zweites 5 er Schiff:
x=(int)Math.round(5*Math.random()+0.5)-1+2;
y=(int)Math.round(16*Math.random()+0.5)-1;
weiter=abfSetz(x,y,q,2,2,0);
anzahl=arrayBelegenWaagrecht(weiter,x,y,q,anzahl,10,2,2);
}
anzahl=0;
while (anzahl<2){
weiter=true;
//senkrecht vier 3 er Schiffe:
x=(int)Math.round(10*Math.random()+0.5)-1;
y=(int)Math.round(13*Math.random()+0.5)-1+2;
weiter=abfSetz(x,y,q,1,1,1);
anzahl=arrayBelegenSenkrecht(weiter,x,y,q,anzahl,24+(anzahl*2),1,1);
}
anzahl=0;
while (anzahl<2){
weiter=true;
//waagrecht vier 3 er Schiffe:
x=(int)Math.round(8*Math.random()+0.5)-1+1;
y=(int)Math.round(16*Math.random()+0.5)-1;
weiter=abfSetz(x,y,q,1,1,0);
anzahl=arrayBelegenWaagrecht(weiter,x,y,q,anzahl,20+(anzahl*2),1,1);
}
//vier 2er-Kanonenboote
anzahl=0;
while (anzahl<2){
weiter=true;
x=(int)Math.round(10*Math.random()+0.5)-1;
y=(int)Math.round(15*Math.random()+0.5)-1;
weiter=abfSetz(x,y,q,0,1,1);
anzahl=arrayBelegenSenkrecht(weiter,x,y,q,anzahl,34+(anzahl*2),0,1);
}
//vier 2er-Kanonenboote
anzahl=0;
while (anzahl<2){
weiter=true;
x=(int)Math.round(9*Math.random()+0.5)-1;
y=(int)Math.round(16*Math.random()+0.5)-1;
weiter=abfSetz(x,y,q,0,1,0);
anzahl=arrayBelegenWaagrecht(weiter,x,y,q,anzahl,30+(anzahl*2),0,1);
}
}
for(int w=0;w<=15;w++){
for(int e=0;e<=9;e++){
System.out.print(arraySpiecher[0][e][w]+" ");
}
System.out.println("");
}
}
public static void main(String[] args) throws MalformedURLException {/*Michael*/
SchiffeVersenken spielfeld= new SchiffeVersenken();
spielfeld.paint(0);
spielfeld.arraysaufNull();
spielfeld.booteSetzenZeichnen();
}
}