# Schiffe versenken



## satim (31. Aug 2012)

hallo

brauche dringend hilfe bei java schiffe versenken programmierung

*verschoben*


----------



## AS3 (31. Aug 2012)

Wie soll das ganze den aussehen? Soll es eine Gui geben? Was kannst du schon. Überlege dir was du brauchst.
Teile dir das gesamte Project erstmal in ganz kleine Teile. Dann sehen wir weiter.
AS3


----------



## tribalup (31. Aug 2012)

Ein paar mehr infos wären nett.
Ich meine mich zu erinnern, dass in "java von kopf bis fuß" sowas als Beispiel durchgenommen wird.


----------



## satim (31. Aug 2012)

Ziel  Spiel „Schiffe versenken“ mit grafischer Oberfläche (Windows-Programm) in Form einer Spezifikation (Pflichtenheft)
1.) Verwendete Methoden und Werkzeuge (Java, Eclipse, WindowBuilder Pro, UML-Tool UMLet, …)
2.) UML – Klassen-Diagramm
3.) Bedienungs-/Spielanleitung für die fertige Software
4.) Code als Anhang

das ist mein ziel habe seit 1 woche im internet fleisig nachgelesen und nach codes gesucht die mir die arbeit erleichtern sollten, leider hat es mich nur noch mehr verwirrt und ich weiss nicht wo und wie ich anfangen soll (( bin kurz vorm heulen komm einfach nicht weiter alles was ich probiert habe war falsch.

java gehört nicht gerade zu meinen stäreken.


----------



## satim (31. Aug 2012)

Leider hilft mir das buch java von kopf bis fuß nicht weiter da kann man nirgends nachschauen wie man das machen kann, da wird es einem nur erklärt und wenn man es wieder nicht verstanden hat steht man nur blöd da  

würde mich für schnelle hilfe oder auch für hilfreiche links freuen


----------



## AS3 (31. Aug 2012)

nö,
man steht nicht blöde da.
Dan kann man nämlich hier im Forum konkrete fragen zu konkreten Problemen stellen.
(ich kenne das Buch nicht...)

Du hast jetzt die Aufgabe vorgelesen, überlege doch erstmal was du brauchst, nicht was du sollst.
Das besagte UML kann dabei helfen.

 AS3


----------



## satim (1. Sep 2012)

Kann mir jemand eiinen link zusenden wo ich mir das spiel anschauen und nachprogrammieren kann.


----------



## timbeau (1. Sep 2012)

Ich würde dir empfehlen, ein Job-Angebot draus zu machen. Links gibts bei Google, die wird dein Lehrer aber auch finden. Nachprogrammieren ist bei dir copy-paste. Warum brauchst du das Spiel? Schulaufgabe mit festem Termin? Woran hapert es genau? Ihr werdet ja nicht mit diesem Spiel angefangen haben.


----------



## tribalup (1. Sep 2012)

Hört sich stark nach ner Hausaufgabe etc. an.
Vielleicht solltest du einfach dazu was lesen und es selber machen, denn du sollst ja was lernen dabei.


----------



## Firephoenix (1. Sep 2012)

Hier ist zwar kein Code dabei, aber über google landet man recht schnell auf dem pdf, an dem Ablaufplan und den Anmerkungen kann man sich gut orientieren wenn man selbst anfängt zu arbeiten:

http://weichselbraun.net/ap/archive/ss06/matejic/Projekt/Projektheft_280606.pdf

Die Java-Grundkenntnisse zum Start solltet ihr ja hoffentlich haben, sonst würdet ihr wohl nicht so eine Aufgabe bekommen 

Wichtig bei solchen Projekten ist aber immer, das man anfängt sich einen Ablaufplan zu machen, alles auf einmal geht nicht.

Möglich wäre z.B. etwas in der Richtung:

Erstmal nur mit Konsolenausgaben, noch komplett ohne Grafik:
-Spielfeld darstellen mit Schiffen (z.b. ein 2D-Array)
-Logik für das Setzen von Schiffen (Kollisionen, Kartenränder)
-Logik für das Zerstören von Schiffen (Wann sind alle Felder zerstört...)
-Spielablauflogik (abwechseldes Schießen etc)
Jetzt könntest du anfange die GUI zu schreiben, die Aufgabe jetzt besteht darin dein Spielfeld darzustellen, z.B. mit Panels, Buttons etc.
Deinen fertigen Spielablauf musst du dann nur an die GUI anbinden, z.B. schießen auf Felder, anzeigen von zerstörten Schiffen usw.

Falls du die Aufgabe nicht bearbeiten willst, wirst du dir entweder selbst irgendwo eine Lösung suchen müssen (die du dann mit großer Sicherheit nicht verstehen oder anpassen können wirst), oder du erstellst ein Angebot in der Jobbörse, dort wirst du aber mit einem entsprechendem Betrag rechnen müssen, so ein Projekt schreibt man mal nicht eben in 30 Minuten runter.

Ansonsten selbst anfangen und bei konkreten Problemen (Nullpointerexception beim Platzieren von Schiffen, keine Idee wie man per Button auf das Spielfeld schießt...) dann hier kostenlos nachfragen 

Gruß


----------



## Devil0s (1. Sep 2012)

Hast du wenigstens schonmal das Grundgeruest?
Also die Startmethode, Stopmethode, den Gameloop usw...
Bei Schiffeversenken wuerden sich moeglicherweise auch Tiles anbieten.
Soll es ne normale Jar werden oder ein Applet?
Soll es  Multiplayer sein und/oder nen server geben oder soll der Spieler gegen den Computer spielen??


----------



## battleship (1. Sep 2012)

ich habe selbst mal schiffe versenken als kleines swing projekt mit netzwerk-multiplayer geschrieben ... waren um die 20k lines (hab mir die darstellung der schiffe selbst zu komplex gemacht und den net-stack etwas zu aufgebläht) ... aber zeitlich ist das in 1 bis 2 wochen machbar wenn man täglich um die 6h bis 8h dran sitzt ... vielleicht auch noch deutlich schneller, besser, sauberer, etc ... wenn man es sich selbst nicht zu schwer macht ...
würde jetzt auf grund meiner erfahrungen vielleicht ne woche brauchen ums halbwegs performant zu basteln, wobei die GUI wirklich mehr den nutzen (darstellung) bringt als schönheit auszustrahlen ... (bin nich so das GUI-ass) ...

aber so den leichten beigeschmack einer hausaufgabe hat es schon ... und die 5 1/2 phasen (ich denke alle wissen was ich meine) treffen auch zu ... aber wer zu faul ist GooGLe zu nutzen um ein bereits fertiges beispiel zu finden ... dem ist wirklich nicht zu helfen ... (zu mal der aufgabensteller dies mit sicherheit ebenfalls tun wird um zu prüfen ob man nicht copy&paste gemacht hat) ...

und wenn java jetzt nicht so deine lieblingssprache ist dann schreib es halt in einer sprache die du besser kannst ... denn bei "windows-programm" denkt jeder noob eh erstmal an eine EXE ... und ob dahinter nun ein C-programm steckt oder ein win-java-launcher ist eigentlich egal ...

oder liegt es eher generell an dem problem das du nicht programmieren kannst ? denn wie auch schon gesagt wurde kann ich mir nicht vorstellen das dir eine solche aufgabe gestellt wird ohne das du die basics dazu gelernt hast wenn man schon verlangt möglichst selbst was zu basteln und nicht copy&paste zu nutzen ...

meine meinung zu sowas ist immer : wenn man im unterricht nicht mitkommt und den "lehrer" dann auch nicht so lange nervt bis man es dann gerafft hat muss man die konsequezen dafür (in dem fall nicht erledigte hausaufgabe) tragen ... denn dafür das du es nicht kannst bist du ganz alleine verantwortlich ... es auf deinen lehrer zu schieben brauchst du auch nicht denn wie gesagt : so lange den lehrer nerven bis man es verstanden hat ... und das kann wirklich jeder !


----------



## satim (2. Sep 2012)

Danke für die antworten, leider haben wir hier so ein kurs wo man alles nicht so deutlich erklärt bekommt. Ich möchte das Fach java hautsache bestehen gut oder schlecht ist mir nicht so wichtig nur möchte ich nicht durchfallen.

Ich denke mal das alle hier im forum hauptsächlich Männer sind für euch ist es vileicht leichter was zu verstehen, mir fällt es verdammt schwer. 

Vileicht fehlt mir auch das logische denken für java, naja hab zurzeit einiges geschrieben werde das bald in das forum posten da ich einige fragen habe.


----------



## Devil0s (2. Sep 2012)

Kannst ja mal ein paar Leute ausm Kurs fragen.
Bin auch seit ein paar Wochen in einem Info Kurs. Wir haben zwar noch nicht Java aber es gibt bei mir jetzt auch schon Leute die etwas langsamer sind als andere.
Wir arbeiten im Moment mit Kara (nicht Java-Kara) in zweier Gruppen. Aber wenn mal einer nicht was versteht wird ihm (wenn derjenige jemanden fragt) das auch erklaert.


Lange Rede gar kein Sinn. Du solltest ein paar Leute aus deinem Kurs fragen wie sie das gemacht haben. Selbstverstaendlich nicht den Sourcecode fordern, sondern nur die Grundidee, wie die das umsetzen.
Das reicht schon. Man braucht nur ne ungefaehre Idee wie man etwas machen  soll, dann klappt es wie von selbst.\

PS: Ich denke nicht, dass das Geschlecht ausschlaggebend fuer den Erfolg beim programmieren ist.


----------



## sophismo (3. Sep 2012)

Ganz zu schweigen vom Lernerfolg. Andere fürs eigene Versagen runterzumachen ist leider für dich nicht hilfreich (vor allem, wenn du von denen noch Hilfe erwartest).

Das gesagt: Fang an die letzten Aufgaben/Basics zu wiederholen, die ihr gelernt habt. Mach kurze prägnante Beispiele zu Themen wie Arrays, Schleifen, Bedinungen und GUI. Das sind die grundlegendsten Dinge, die jede Programmiersprache kennt und für dein Vorhaben vollkommen ausreichend!

Und dann nimm doch bitte die Hilfe hier an!!!
Kurz gefasst: teil dir dein Projekt ein! Erstell die ein Modell (UML mit Stift und Papier). Fang an zu programmieren - erstmal ohne Grafik. Und zu guterletzt mach dich ans Interface.

Solange du Zeit vergeudest und dich drückst scheint alles so groß, schwer, weit weg. Fang an, nimm dir nen Stift und auf gehts. Wenn du mal wo angefangen hast läufts eh! Die Leute hier haben alle schon mehr oder weniger große Projekte hinter sich und da gilt es einfach Überblick schaffen und auf das erste kleine Häppchen stürzen!

Viel Glück!


----------



## timbeau (3. Sep 2012)

satim hat gesagt.:


> Danke für die antworten, leider haben wir hier so ein kurs wo man alles nicht so deutlich erklärt bekommt. Ich möchte das Fach java hautsache bestehen gut oder schlecht ist mir nicht so wichtig nur möchte ich nicht durchfallen.
> 
> Ich denke mal das alle hier im forum hauptsächlich Männer sind für euch ist es vileicht leichter was zu verstehen, mir fällt es verdammt schwer.
> 
> Vileicht fehlt mir auch das logische denken für java, naja hab zurzeit einiges geschrieben werde das bald in das forum posten da ich einige fragen habe.



Wir sind jetzt quasi bei Phase 4 mit überspringen der Phase 2 (da gehts um Geld)

Aber ich hab noch Hoffnung. So dringend kann das Ganze ja nicht sein, wenn nach nem Wochenende noch nix neues da ist.


----------



## satim (11. Sep 2012)

hallo

möchte nicht lange antworten würde das jemand als job machen wenn ja für wiviel.

antias@live.at bitte sendet mir die angebote an diese e-mail adreasse. danke brauche es bis nächste woche. monntag


----------



## satim (23. Nov 2012)

hallo

hier ist der code kann das jemand kurz durchchecken ob das so in ordnung ist. Leider bekomm ich immer eine fehlermeldung. Ich weiss nicht woran das liegt.

falls niemand helfen will bitte keine klugen sprüche!!!!!!!!
und wenn jemand helfen kann oder möchte würde ich mich freuen...
da der text zulange ist habe ich es in zwei teile geteilt.


```
import java.lang.Thread.*;
import java.lang.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.ImageObserver;

public class schiffeversenken extends Applet {

  
	private static final long serialVersionUID = 1L;
	
    public static  Image meer,untergang,zweierX,dreierX1,
    dreierX2,viererX,fuenferX;
    
    public static  Play nowPlay;            // Spielklasse
    public static  PlayGround playgr;       // Spielfeld
    public static Button start,stop, help;  //Knöpfe zum starten, stoppen, hilfe
    public static  boolean gestartet;
   
    public static first fi;                 // startfenster
    
    public void init () {
     
        setLayout(null);
        setSize(635,400);
        setBackground(Color.yellow);

        playgr=new PlayGround(getGraphics(),this);       
        addMouseListener(playgr);           

        Action A=new Action();

        start=new Button();             // Spiel starten
        start.setLabel("Start");
        start.setBounds(0,10,70,40);
        start.setVisible(true);
        start.addActionListener(A);
        add(start);

        stop=new Button();              // spiel stoppen
        stop.setLabel("Stop");
        stop.setBounds(20,300,75,40);
        stop.setVisible(false);
        stop.addActionListener(A);
        add(stop);

        help=new Button();              // Hilfe tast
        help.setLabel("Hilfe");
        help.setBounds(550,10,75,40);
        help.setVisible(true);
        help.addActionListener(A);
        add(help);
    
    }


    public void paint(Graphics g){
        //zeichnen der Bilder
        g.drawImage(untergang,0,0,100,75,this);
        g.drawImage(meer,100,75,this);
        g.drawImage(meer,320,75,this);
        g.drawImage(dreierX1,0,95,60,20,this);
        g.drawImage(viererX,0,115,80,20,this);
        g.drawImage(dreierX2,0,135,60,20,this);
        g.drawImage(zweierX,60,135,40,20,this);
        g.drawImage(fuenferX,0,155,100,20,this);
        g.drawImage(dreierX1,0,195,60,20,this);
        g.drawImage(viererX,0,215,80,20,this);
        g.drawImage(dreierX2,0,235,60,20,this);
        g.drawImage(zweierX,60,235,40,20,this);
        g.drawImage(fuenferX,0,255,100,20,this);
        playgr.oberfläche();//Oberfläche des Applets
    }

    //innere Klasse fuer Button-Aktionen
    class Action implements ActionListener{
        public void actionPerformed(ActionEvent event){
            String cmd=event.getActionCommand();
            System.out.println(event+"\n"+"actionPerformed ausgelöst");
            if (cmd.equals("Start")){      //Start gedrueckt
                fi=new first(); //neues Startfenster
                repaint();
                gestartet=true;
                System.out.println("start gedrueckt");
                start.setVisible(false);
                stop.setVisible(true);
                help.setEnabled(false);
                nowPlay=new Play();
                nowPlay.start();
            }
            if (cmd.equals("Stop")){      
                gestartet=false;
                System.out.println("stop gedrueckt");
                start.setVisible(true);
                stop.setVisible(false);
                help.setEnabled(true);
             
                playgr.drawStatus2("Drücken Sie auf Start!");
            }
            if (cmd.equals("Hilfe")){      
                System.out.println("Help gedrueckt");
                help.setEnabled(false);
                start.setEnabled(false);
                new HelpFrame();
            }
        }

    }
}




class Play extends Thread{
    //Klasse zum Spielen
    public BattleShip player1,player2;  //player1:Spieler   player2: Hilal
    public  Player one, two;
    private int xset,yset;  
    boolean xy;
    boolean setShips,abbruch,readyShot,t1isAlive,t2isAlive;
    public String[] shipname={"","Kutter","Titanic","U-Boot","Kreuzer","Fregatte"};
    
    /** Creates new Play */
    public Play() {
        player1=new BattleShip();
        player2=new BattleShip();
        one=new Player(schiffeversenken.fi.getName());
        two=new Player("Hilal");
        setShips=false;
        xset=yset=-1;
        abbruch=false;
        readyShot=false;   //true: bereit zum Schiessen        false: nicht
        t1isAlive=false;
        t2isAlive=false;
    }//Konstruktor



    public boolean setoneShip(int shipsetted){
        //setzen eines Schiffes des Spielers, 
        //aufgerufen bei entsprechender MausAktion
        System.out.println("Spieler setzt Schiff");
        boolean status=false;
        //Spieler setzt ein Schiff
        if (xy){    //setzen in x-Richtung
            if (player1.placeX(xset,yset,shipsetted+1)){
                schiffeversenken.playgr.drawPlayerShipX(shipsetted+1,xset,yset);
                status=true;;
            }
        }
        else{   //setzen in Y-Richtung
            if (player1.placeY(xset,yset,shipsetted+1)){
                System.out.println("Y setzen möglich");
                schiffeversenken.playgr.drawPlayerShipY(shipsetted+1,xset,yset);
                status=true;
            }
        }
        if ((shipsetted==4)&&(status)){
            System.out.println("Spieler hat Schiffe gesetzt");
            setShips=true;
            schiffeversenken.playgr.drawStatus2(one.getName()+" hat alle Schiffe gesetzt");
        }
        if ((status)&&(shipsetted<4))
        schiffeversenken.playgr.drawStatus(one.getName()+" "+ shipname[shipsetted+2]+ " setzen!");
        return status;
    }//setoneShip
    
    private void setShip(){
        //computer setzt Schiffe und wartet auf Spieler
        System.out.println("setzen der Schiffe");
        int set=0;//Anzahl der gesetzten Schiffe           
        while ((set<5)&&(!abbruch)){
            xset=(int) Math.round(9*Math.random()); //Auswahl durch Zufall
            yset=(int) Math.round(9*Math.random());
            System.out.println(xset+","+yset);
            if (Math.round(1*Math.random())==0)
                xy=false;
            else
                xy=true;
            if (xy){    //setzen in X-Richtung
                if (player2.placeX(xset,yset,set+1)){
                    set++;
                    schiffeversenken.playgr.drawStatus("Computer hat "+shipname[set]+"gesetzt");
                }
            }
            else{   //setzen in Y-Richtung
                if (player2.placeY(xset,yset,set+1)){
                    set++;
                    schiffeversenken.playgr.drawStatus("Computer hat "+shipname[set]+"gesetzt");
                }
            }
            if (abbruch) break;
        }
        //Computer hat jetzt Schiffe und muss warten bis Spileer gesetzt
        System.out.println("Computer hat Schiffe gesetzt");
        schiffeversenken.playgr.drawStatus2("Computer hat alle Schiffe gesetzt");
        schiffeversenken.playgr.drawStatus(one.getName()+" "+shipname[1]+" setzen!");
        System.out.println("Warten auf setzen der Schiffe");
        while ((!setShips)&&(!abbruch)){
            try{
                this.sleep(100);
        }catch(Exception e){}
        }
        System.out.println("Warten beendet");
    }//setShip

    public void xSet(int x){
        //bestimmen des X-Indexes im Feld
        xset=x;
    }

    public void ySet(int y){
        //bestimmen des Y-Indexes im Feld
        yset=y;
    }

    public void tryHit(BattleShip player){
        //Versuch einen Treffer zu erzielen
        int x,y,treffer;
        if (player==player2){//Computer
            System.out.println("Computer versucht zu schiessen");
            do{
                if (abbruch) break;
                x=(int) Math.round(9*Math.random());
                y=(int) Math.round(9*Math.random());
                treffer=player1.hit(x,y);//treffer==typ 1..5   0: Wasser  -1: schon geschossen
                if (treffer>=0){//ein Schiff getroffen
                    two.incShot();
                    if (treffer>0){
                        schiffeversenken.playgr.drawShotShipComputer(x,y);
                        two.incHit();
                    }
                    if (treffer==0)
                        schiffeversenken.playgr.drawShotWaterComputer(x,y);
                    if (player1.sunk(treffer)){
                        two.incSink();
                        schiffeversenken.playgr.clearShip(treffer,2);
                        schiffeversenken.playgr.drawStatus("Computer hat "+shipname[treffer]+" versenkt");
                        try{
                            wait(40000);
                        }
                        catch(Exception e){}
                    }//if
                }//if
            }while(treffer<0);
            //wiederholen bis Schuss implements Wasser oder Treffer
            System.out.println("Computer hat geschossen");
            schiffeversenken.playgr.drawSpielStand(100,276,two);
        }//if
        else{   //spieler versucht Schuss
            System.out.println("Spieler versucht Treffer");
            treffer=player2.hit(xset,yset);//treffer==typ 1..5   0: Wasser  -1: schon geschossen
            if (treffer>=0){//ein Schiff getroffen
                one.incShot();
                if (treffer>0){
                    schiffeversenken.playgr.drawShotShipPlayer(xset,yset);
                    one.incHit();
                    schiffeversenken.playgr.drawStatus(one.getName()+" hat getroffen");
                }
                if (treffer==0){
                    schiffeversenken.playgr.drawShotWaterPlayer(xset,yset);
                    schiffeversenken.playgr.drawStatus(one.getName()+" hat daneben getroffen");
                }
                if (player2.sunk(treffer)){
                    one.incSink();
                    

                    
                    if (player2.isDirectedOnX(treffer)) {
                        schiffeversenken.playgr.drawComputerShipX(treffer,player2.getStartPosOfShipX(treffer),player2.getStartPosOfShipY(treffer));
                    }
                    else {
                        schiffeversenken.playgr.drawComputerShipY(treffer,player2.getStartPosOfShipX(treffer),player2.getStartPosOfShipY(treffer));
                    }
                    

                    
                    schiffeversenken.playgr.clearShip(treffer,1);
                    schiffeversenken.playgr.drawStatus(one.getName()+" hat "+shipname[treffer]+" versenkt");
                    try{
                       wait(40000);
                    }
                    catch(Exception e){}
                }
                readyShot=false;
                System.out.println("Spieler hat Treffer");
            }
            else{
                readyShot=true;
                System.out.println("Spieler hat dort schon hingeschossen!");
                schiffeversenken.playgr.drawStatus(one.getName()+" hat hierauf schon geschossen!");
            }
            schiffeversenken.playgr.drawSpielStand(320,276,one);
        }//else
    }//tryHit


    public void run() {
        //run des Threads
        System.out.println("Start des Spieles");
        schiffeversenken.playgr.drawRest();
        schiffeversenken.playgr.drawStatus2("Start des Spieles");
        t1isAlive=true;
        System.out.println("run läuft");
        if (t1isAlive){
            System.out.println("t1 ist angelaufen");
            setShip();//Computer setzt Schiffe
        }
        t1isAlive=false;
        System.out.println("t1 beendet!");
        if (!abbruch){
            t2isAlive=true;
        }
        if (t2isAlive){
            System.out.println("");
            System.out.println("jetzt Beginn des Gefechts");
            boolean los;
            if (Math.round(1*Math.random())==0)
                los=false;
            else
                los=true;

            //wenn ja Computer zuerst
            if (los){
                System.out.println("Computer setzt ersten Schuss");
                schiffeversenken.playgr.drawStatus("Computer beginnt Seeschlacht");
                //BattleShipApp.playgr.drawStatus2("Computer schiesst");
                tryHit(player2);
                schiffeversenken.playgr.drawStatus2("Computer hat geschossen!      "+one.getName()+" schiessen!");
            }
            else{
                schiffeversenken.playgr.drawStatus(schiffeversenken.fi.getName()+" beginnt Seeschlacht");
                schiffeversenken.playgr.drawStatus2(one.getName()+" schiessen!");
                System.out.println("Spieler setzt ersten Schuss");
            }

            while (!one.getWin()&&!two.getWin()){
                //wenn noch keiner gewonnen
                //Computer und Spiler abwechelnd schiessen
                //wer zuerst anfängt vorher auslosen
                readyShot=true;//tryHit(player1);   Spieler
                while (readyShot){
                    try{ 
                        Thread.sleep(100);}catch(Exception e){}
                    if (abbruch) break;
                }
                System.out.println("Spieler hat geschossen");
                if (!one.getWin()&&(!abbruch)){
                    tryHit(player2);
                    System.out.println("Computer hat geschossen");
                }
                schiffeversenken.playgr.drawStatus2("Computer hat geschossen!      "+one.getName()+" schiessen!");
                if (abbruch) break;
            }//while

            if (one.getWin())
                schiffeversenken.playgr.drawStatus(one.getName()+" hat gewonnen!");
            if (two.getWin())
                schiffeversenken.playgr.drawStatus("Computer hat gewonnen");
        }//t2
        if (abbruch)
            schiffeversenken.playgr.drawStatus("Spiel abgebrochen");
        schiffeversenken.playgr.drawStatus2("Drücken Sie auf Start!");
        System.out.println("run zu Ende");
        t1isAlive=false;
        t2isAlive=false;
        schiffeversenken.gestartet=false;
        schiffeversenken.start.setVisible(true);
        schiffeversenken.stop.setVisible(false);
        schiffeversenken.help.setEnabled(true);
        schiffeversenken.playgr.shipsetted=0;
    }

}


class PlayGround extends MouseAdapter {

    private ImageObserver observer;
    public int xFelder, yFelder;                       //Elementanzahl
    int startX, startY, endeX, endeY, breiteX, hoeheY;       //Positionen
    int kaestchenBreiteX, kaestchenHoeheY;
    public int shipsetted; //fuer mouseClicked
    private Color ships,c1;
    private Graphics g;

    public PlayGround(Graphics g,ImageObserver observer) {
        this.g=g;
        this.observer=observer;
        xFelder=10; yFelder=10;
        kaestchenBreiteX=10;
        kaestchenHoeheY=10;
        shipsetted=0;
        ships=new Color(0,200,255);
        c1=new Color(0,128,255);
    }//Konstruktor

    //Spielfeld zeichnen: (frei skalier- und platzierbar)
    public void drawPlayGround(int startX, int startY, int endeX, int endeY) {
        drawPlayGround(startX, startY, endeX, endeY, xFelder, yFelder);
    }//drawPlayGround

    public void drawPlayGround(int startX, int startY, int endeX, int endeY, int xFelder, int yFelder) {
        this.xFelder=xFelder;                        this.yFelder=yFelder;
        this.startX=startX;                          this.startY=startY;
        this.endeX=endeX;                            this.endeY=endeY;
        breiteX=endeX-startX;                        hoeheY=endeY-startY;
        kaestchenBreiteX=(breiteX-20)/(2*xFelder);   kaestchenHoeheY=(hoeheY)/yFelder;
        g.setColor(Color.darkGray);
        g.drawRect(startX, startY, breiteX/2-10, hoeheY);
        g.drawRect(startX+breiteX/2+10, startY, breiteX/2-10, hoeheY);
        for (int index=1; index<xFelder; index++) {
            g.drawLine(startX+index*kaestchenBreiteX, startY, startX+index*kaestchenBreiteX, endeY);
            g.drawLine(startX+breiteX/2+10+index*kaestchenBreiteX, startY, startX+breiteX/2+10+index*kaestchenBreiteX, endeY);
        }
        for (int index=1; index<yFelder; index++) {
            g.drawLine(startX, startY+index*kaestchenHoeheY, startX+breiteX/2-10, startY+index*kaestchenHoeheY);
            g.drawLine(startX+breiteX/2+10, startY+index*kaestchenHoeheY, endeX, startY+index*kaestchenHoeheY);
        }
    }//drawPlayGround

    public int getX(int posX) {
        //bestimmen X-Index
        if ((startX<posX)&&(posX<startX+breiteX/2-10)) return (posX-startX)/kaestchenBreiteX;
        if ((startX+breiteX/2+10<posX)&&(posX<endeX)) return -(startX+breiteX/2+10-posX)/kaestchenBreiteX;
        return -1;
    }//getX

    public int getY(int posY) {
        //bestimmen Y-Index
        if ((startY<posY)&&(posY<endeY)) return (posY-startY)/kaestchenHoeheY;
        return -1;
    }//getY
    
    private void drawFilledOval(int x, int y, boolean player) {
        int drawX=startX+x*kaestchenBreiteX+kaestchenBreiteX/4;
        int drawY=startY+y*kaestchenHoeheY+kaestchenHoeheY/4;
        if (player) {
            g.fillOval(drawX,drawY,kaestchenBreiteX/2,kaestchenHoeheY/2);
        }
        else {
            g.fillOval(drawX+breiteX/2+10,drawY,kaestchenBreiteX/2,kaestchenHoeheY/2);
        }
        g.setColor(Color.white);
        if (player) {
            g.drawOval(drawX,drawY,kaestchenBreiteX/2,kaestchenHoeheY/2);
        }
        else {
            g.drawOval(drawX+breiteX/2+10,drawY,kaestchenBreiteX/2,kaestchenHoeheY/2);
        }
    }//drawFilledOval
    
    public void drawShotShipPlayer(int x, int y) {
        g.setColor(Color.red);
        drawFilledOval(x,y,true); 
    }//drawShotShipPlayer
       
    public void drawShotWaterPlayer(int x, int y) {
        g.setColor(c1);
        drawFilledOval(x,y,true);
    }//drawShotWaterPlayer
    
    public void drawShotShipComputer(int x, int y) {
        g.setColor(Color.red);
        drawFilledOval(x,y,false);
    }//drawShotShipComputer
    
    public void drawShotWaterComputer(int x, int y) {
        g.setColor(c1);
        drawFilledOval(x,y,false);
    }//drawShotWaterComputer
    
    public void drawPlayerShipX(int typ,int x, int y){        //ueber indexposition
        int drawStartX=startX+x*kaestchenBreiteX+kaestchenBreiteX/4;
        int drawStartY=startY+y*kaestchenHoeheY+kaestchenHoeheY/4;
        int drawBreiteX=kaestchenBreiteX;
        int drawHoeheY=kaestchenHoeheY/2;
        g.setColor(ships);
        System.out.println("   typ: "+typ+"  laenge: "+BattleShip.lengthOfShips[typ]);
        g.fillRect(drawStartX+breiteX/2+10,drawStartY,( BattleShip.lengthOfShips[typ]-1)*drawBreiteX+drawBreiteX/2+1,drawHoeheY+1);
    }//x-ship-zeichnen
    
    public void drawPlayerShipY(int typ,int x, int y){        //Balkenausgabe fuer Schiff anzeigen
        int drawStartX=startX+x*kaestchenBreiteX+kaestchenBreiteX/4;
        int drawStartY=startY+y*kaestchenHoeheY+kaestchenHoeheY/4;
        int drawBreiteX=kaestchenBreiteX/2;
        int drawHoeheY=kaestchenHoeheY;
        g.setColor(ships);
        System.out.println("   typ: "+typ+"  laenge: "+BattleShip.lengthOfShips[typ]);
        g.fillRect(drawStartX+breiteX/2+10,drawStartY,drawBreiteX+1,(BattleShip.lengthOfShips[typ]-1)*drawHoeheY+drawHoeheY/2+1);
    }//drawPlayerShipY
    
    public void drawComputerShipX(int typ,int x, int y){        //ueber indexposition
        int drawStartX=startX+x*kaestchenBreiteX+kaestchenBreiteX/4;
        int drawStartY=startY+y*kaestchenHoeheY+kaestchenHoeheY/4;
        int drawBreiteX=kaestchenBreiteX;
        int drawHoeheY=kaestchenHoeheY/2;
        g.setColor(Color.red);
        g.fillRect(drawStartX,drawStartY,(BattleShip.lengthOfShips[typ]-1)*drawBreiteX+drawBreiteX/2+1,drawHoeheY+1);
    }//drawComputerShipX
    
    public void drawComputerShipY(int typ,int x, int y){        //Balkenausgabe fuer Schiff anzeigen
        int drawStartX=startX+x*kaestchenBreiteX+kaestchenBreiteX/4;
        int drawStartY=startY+y*kaestchenHoeheY+kaestchenHoeheY/4;
        int drawBreiteX=kaestchenBreiteX/2;
        int drawHoeheY=kaestchenHoeheY;
        g.setColor(Color.red);
        System.out.println("   typ: "+typ+"  laenge: "+BattleShip.lengthOfShips[typ]);
        g.fillRect(drawStartX,drawStartY,drawBreiteX+1,(BattleShip.lengthOfShips[typ]-1)*drawHoeheY+drawHoeheY/2+1);
    }//drawComputerShipY
    
    public void clearShip(int treffer, int p){
        //ueberzeichnen der Schiffe, wenn getroffen
        g.setColor(Color.lightGray);
        if (p==1){//Spieler
            if (treffer==1)
                g.fillRect(60,135,40,20);
            if (treffer==2)
                g.fillRect(1,95,60,20);
            if (treffer==3)
                g.fillRect(1,135,60,20);
            if (treffer==4)
                g.fillRect(1,115,80,20);
            if (treffer==5)
                g.fillRect(1,155,99,20);
       }
        else{   //Computer
            if (treffer==1)
                g.fillRect(60,235,40,20);
            if (treffer==2)
                g.fillRect(1,195,60,20);
            if (treffer==3)
                g.fillRect(1,235,60,20);
            if (treffer==4)
                g.fillRect(1,215,80,20);
            if (treffer==5)
                g.fillRect(1,255,99,20);
        }
    }//clearShip

    public void drawSpielStand(int x, int y, Player p){
        g.setColor(Color.white);
        g.fillRect(x,y,200,75);
        g.setColor(Color.black);
        g.drawRect(x,y,200,75);
        g.setFont(new Font("Monospaced",Font.PLAIN,12));
        g.drawString("Schüsse auf den Gegner "+p.getShot(),x+5,y+13);
        g.drawString("Treffer beim Gegner    "+p.getHit(),x+5,y+28);
        g.drawString("gesunkene Schiffe      "+p.getSink(),x+5,y+43);
        g.drawString("beim Gegner",x+5,y+58);
        g.drawString("Gewonnen               "+(p.getWin()?"ja":"nein"),x+5,y+73);
    }//drawSpielStand

    public void drawStatus(String stri){
        //Statuszeile 1
        g.setColor(Color.white);
        g.fillRect(101,361,418,14);
        g.setFont(new Font("SansSerif",Font.PLAIN,12));
        g.setColor(Color.blue);
        g.drawString(stri,110,373);
    }//drawStatus

    public void drawStatus2(String stri){
        //Statuszeile 2
        g.setColor(Color.white);
        g.fillRect(101,376,418,13);
        g.setFont(new Font("SansSerif",Font.PLAIN,12));
        g.setColor(Color.blue);
        g.drawString(stri,110,387);
    }//drawStatus2
    
    public void drawRest(){
        g.setColor(Color.lightGray);
        g.fillRect(1,175,90,20);
        g.fillRect(320,55,201,20);
        g.setColor(Color.black);
        g.setFont(new Font("Monospaced",Font.PLAIN,20));
        g.drawString(schiffeversenken.fi.getName()+"s Feld",320,70);
        g.setColor(Color.blue);
        g.setFont(new Font("Serif",Font.PLAIN,12));
        g.drawString(schiffeversenken.fi.getName()+"s Flotte",3,190);
    }//drawRest
```
  teil 2 folgt


----------



## satim (23. Nov 2012)

```
public void oberfläche(){       //des Applets
        g.setColor(Color.black);
        g.drawRect(0,0,534,399);
        g.setColor(Color.blue);
        g.setFont(new Font("Serif",Font.BOLD,45));
        g.drawString("Schiffe versenken",150,50);
        g.setFont(new Font("Serif",Font.PLAIN,12));
        g.drawString("Flotte Hilal",3,90);
        g.setFont(new Font("Monospaced",Font.PLAIN,20));
        g.setColor(Color.black);
        g.drawString("Hilal",110,70);
        drawPlayGround(100,75,520,275);
        g.setColor(Color.white);
        g.fillRect(100,276,200,75);
        g.setColor(Color.black);
        g.drawRect(100,276,200,75);
        g.setFont(new Font("Monospaced",Font.PLAIN,12));
        g.drawString("Schüsse auf den Gegner ",100+5,276+13);
        g.drawString("Treffer beim Gegner    ",100+5,276+28);
        g.drawString("gesunkene Schiffe      ",100+5,276+43);
        g.drawString("beim Gegner",100+5,276+58);
        g.drawString("Gewonnen               ",100+5,276+73);
        g.setColor(Color.white);
        g.fillRect(320,276,200,75);
        g.setColor(Color.black);
        g.drawRect(320,276,200,75);
        g.setFont(new Font("Monospaced",Font.PLAIN,12));
        g.drawString("Schüsse auf den Gegner ",320+5,276+13);
        g.drawString("Treffer beim Gegner    ",320+5,276+28);
        g.drawString("gesunkene Schiffe      ",320+5,276+43);
        g.drawString("beim Gegner",320+5,276+58);
        g.drawString("Gewonnen               ",320+5,276+73);
        g.setColor(Color.white);
        g.fillRect(100,360,420,30);
        g.setColor(Color.black);
        g.drawRect(100,360,20,29);
        drawStatus("Zum Spielen drücke bitte auf Start");
     
    }//oberflaeche
    
    public void mouseClicked(MouseEvent event) {
        int indexX=getX(event.getX());      
        int indexY=getY(event.getY());      
        if ((startY<event.getY())&&(event.getY()<endeY)&&schiffeversenken.gestartet) {  
            if ((getX(event.getX())>=0)&&(getX(event.getX())<xFelder)) {           
                if (event.getX()<startX+breiteX/2) {                                // Computerfeld
                    System.out.println("Hilal: "+getX(event.getX())+"/"+getY(event.getY()));
                    if ((shipsetted>=5)&&schiffeversenken.nowPlay.readyShot){
                        schiffeversenken.nowPlay.readyShot=false;
                        schiffeversenken.nowPlay.xSet(indexX);
                        schiffeversenken.nowPlay.ySet(indexY);
                        schiffeversenken.nowPlay.tryHit(schiffeversenken.nowPlay.player1);
                    }
                }
                else {                                                              
                    System.out.println("PLAYER:   "+getX(event.getX())+"/"+getY(event.getY()));
                    if ((shipsetted<5)){
                        System.out.println("t1 ist am Laufen und Maus gedrueckt");
                        schiffeversenken.nowPlay.xSet(indexX);
                        schiffeversenken.nowPlay.ySet(indexY);
                        schiffeversenken.nowPlay.xy=event.isMetaDown();
                        if (schiffeversenken.nowPlay.setoneShip(shipsetted)){
                            shipsetted++;
                        }
                    }
                }
            }
        }
    }

}//PlayGround






class Player{
    //hit: Treffer, die Player gemacht hat
    //sink: anzahl der Schiffe, die Player versenkt hat
    //shot: anzahl der Schuesse
    //win: Praedikat, ob gewonnen.
    private int hit,sink,shot;
    private boolean win;
    private String name;
    /** Creates new Player */
    public Player(String name) {
        hit=sink=shot=0;
        win=false;
        this.name=name;
    }
    public String getName() {        return name;    }
    public int getHit()     {        return hit;     }
    public int getSink()    {        return sink;    }
    public int getShot()    {        return shot;    }
    public boolean getWin() {        return win;     }
    public void incHit()    {        this.hit++;     }
    public void incShot()   {        this.shot++;    }
    public void incSink()   {
        this.sink++;
        if (this.sink==5)
        this.win=true;
    }

}//Player




class BattleShip extends java.lang.Object {

    public int[] hitCounterByType=new int [6];
    public static int[] lengthOfShips={0,2,3,3,4,5};
    public int[][] arrayOfShips;
    public boolean[][] alreadyShut;
    
    private int[] startPositionOfShipsX=new int[6];
    private int[] startPositionOfShipsY=new int[6];
    private boolean[] shipOrientationY=new boolean[6];
    private int defaultSizeX=10;
    private int defaultSizeY=10;
    private boolean kontrolle=true;
    
    public BattleShip() {
        arrayOfShips=new int[defaultSizeX][defaultSizeY];
        alreadyShut=new boolean[defaultSizeX][defaultSizeY];
    }
    
    public BattleShip(int x, int y) {
        defaultSizeX=x;
        defaultSizeY=y;
        arrayOfShips=new int[x][y];
        alreadyShut=new boolean[x][y];
    }
    
    private boolean enoughPlace(int x, int y, int typ, boolean waagerecht) {
        if (kontrolle) System.out.print("x-Position, ");
        if (x>=defaultSizeX) return false;
        if (kontrolle) System.out.print("y-Position, ");
        if (y>=defaultSizeY) return false;
        if (kontrolle) System.out.print("Start, ");
        if (arrayOfShips[x][y]!=0) return false;
        if (waagerecht) {
            if (kontrolle) System.out.print("x-Laenge, ");
            if (x+lengthOfShips[typ]-1>=defaultSizeX) return false;
            if (kontrolle) System.out.print("x-Laenge belegt, ");
            for (int index=0; index<lengthOfShips[typ]; index++) {
                if (arrayOfShips[x+index][y]!=0) return false;
            }
            if (kontrolle) System.out.println("kein Fehler");
        }
        else {
            if (kontrolle) System.out.print("y-Laenge, ");
            if (y+lengthOfShips[typ]-1>=defaultSizeY) return false;
            if (kontrolle) System.out.print("y-Laenge belegt, ");
            for (int index=0; index<lengthOfShips[typ]; index++) {
                if (arrayOfShips[x][y+index]!=0) return false;
            }
            if (kontrolle) System.out.println("kein Fehler");
        }
        return true;
    }
    
    public boolean isDirectedOnX(int typ) {
        return !shipOrientationY[typ];
    }
    
    public boolean isDirectedOnY(int typ) {
        return shipOrientationY[typ];
    }
    
    public int getStartPosOfShipX(int typ) {
        return startPositionOfShipsX[typ];
    }
    
    public int getStartPosOfShipY(int typ) {
        return startPositionOfShipsY[typ];
    }
    
    public boolean placeX(int x, int y, int typ) {      //setzt Schiff auf x-Achse
        if (enoughPlace(x, y, typ, true)) {
            for (int index=0; index<lengthOfShips[typ]; index++) {
                arrayOfShips[x+index][y]=typ;
            }
            startPositionOfShipsX[typ]=x;
            startPositionOfShipsY[typ]=y;
            
        }
        else return false;
        return true;
    }
    
    public boolean placeY(int x, int y, int typ) {      //setzt Schiff auf y-Achse
        if (enoughPlace(x, y, typ, false)) {
            for (int index=0; index<lengthOfShips[typ]; index++) {
                arrayOfShips[x][y+index]=typ;
            }
            startPositionOfShipsX[typ]=x;
            startPositionOfShipsY[typ]=y;
            shipOrientationY[typ]=true;
        }
        else return false;
        return true;
    }
    
    public boolean sunk(int typ) {                      //gibt zurueck ob Schiff versenkt
        if ((typ<1)||(typ>5)) return false;
        if (hitCounterByType[typ]==lengthOfShips[typ]) return true;
        return false;
    }
    
    public int hit(int x, int y) {                      //gibt Typ des Treffers zurueck
        if ((x>=defaultSizeX)||(y>=defaultSizeY)) {
            System.out.println("\nIndexueberschreitung des Array in BattleShip.class\n");
            return 0;
        }
        int temp=arrayOfShips[x][y];
        if (alreadyShut[x][y]) return -1;
        if (!alreadyShut[x][y]) hitCounterByType[temp]++;
        alreadyShut[x][y]=true;
        return (temp);
    }
    
    public int getHit(int typ) {                        //gibt Anzahl der Treffer eines Typs zurueck
        return hitCounterByType[typ];
    }
    
    public String toString() {                          //Textausgabe zur internen Test
        String output="";
        for (int index1=0; index1<defaultSizeY; index1++) {
            for (int index2=0; index2<defaultSizeX; index2++) {
                output=output+arrayOfShips[index2][index1]+"\t";
            }
            output=output+"\n";
        }
        output=output+"\n";
        for (int index1=0; index1<defaultSizeY; index1++) {
            for (int index2=0; index2<defaultSizeX; index2++) {
                output=output+(alreadyShut[index2][index1]?alreadyShut[index2][index1]+" \t":alreadyShut[index2][index1]+"\t");
            }
            output=output+"\n";
        }
        output=output+"\n";
        for (int index=1; index<6; index++) {
            output=output+"Anzahl Treffer fuer "+index+": "+hitCounterByType[index]+"\n";
        }
        return output;
    }
    
    public static void main (String args[]) {           //interner Testrahmen
        BattleShip test=new BattleShip(6,3);
        System.out.println("Schiff auf x=5,y=0: "+test.placeY(5,0,2));
        System.out.println("Schiff auf x=0,y=2: "+test.placeX(0,2,5));
        System.out.println("Schiff auf x=0,y=0: "+test.placeX(0,0,4));
        int zahl50=test.hit(5,0), zahl02=test.hit(0,2),zahl12=test.hit(1,2);
        System.out.println("Schuss auf x=5,y=0: "+zahl50);
        System.out.println("Schuss auf x=0,y=2: "+zahl02);
        System.out.println("Schuss auf x=1,y=2: "+zahl12);
        System.out.println("Versenkt von "+zahl12+": "+test.sunk(zahl12)+"\n");
        System.out.println(test);
    }
    
}


class first extends java.awt.Frame implements ActionListener{
    private String name;
    private Button close;
    private TextField text;
    private Label label;
    /** Creates new form first */
    public first() {
        initComponents ();
        setSize(200,150);
        setLayout(new BorderLayout ());
        setBackground(Color.lightGray);
        name="";
        this.setTitle("Herzlich Willkommen");
        initComponents ();
        text=new TextField();
        text.setFont(new Font("SansSerif",Font.PLAIN,20));
        text.setText("captn sharky");
        add (text, BorderLayout.NORTH);
        label=new Label();
        label.setForeground(Color.red);
        label.setFont(new Font("SansSerif",Font.PLAIN,12));
        label.setText(" Namen eingeben und Bestätigen!");
        add (label, BorderLayout.CENTER);
        close=new Button();
        close.setLabel("Bestätigen");
        close.addActionListener(this);
        add (close, BorderLayout.SOUTH);
        schiffeversenken.start.setEnabled(true);
        schiffeversenken.help.setEnabled(true);
        
        System.out.println("Fenster geöffnet");
    }
    
    public String getName(){
        return name;
    }

    private void initComponents () {
        addWindowListener (new java.awt.event.WindowAdapter () {
            public void windowClosing (java.awt.event.WindowEvent evt) {
                exitForm ();
            }
        }
        );

    }

    
    private void exitForm() {
        name=text.getText();
        if (name.length()>10){
            name="";
            for (int i=0; i<10; i++)
                name+=text.getText().charAt(i);
        }
        System.out.println(name);
        dispose();
        schiffeversenken.playgr.drawRest();
        schiffeversenken.start.setEnabled(true);
        schiffeversenken.help.setEnabled(true);
    }
    
 
    public void actionPerformed(final java.awt.event.ActionEvent p1){
        exitForm();
    }
}//first

class HelpFrame extends java.awt.Frame implements ActionListener {
    private Button close;
    private TextArea text;
    private Label label,label2,label3;
    /** Creates new form HelpFrame */
    public HelpFrame() {
        this.setTitle("Hilfe zum Spiel");
        initComponents ();
        setSize(500,450);
        setLayout(null);
        setBackground(Color.lightGray);
        initComponents ();
        initLabel();
        initArea();
        close=new Button();
        close.setLabel("Beenden");
        close.setBounds(160,395,180,30);
        close.addActionListener(this);
        add(close);
        show();
        System.out.println("Fenster geöffnet");
    }//Konstruktor
    
    private void initArea(){
        text=new TextArea("Das Spiel Schiffe versenken\n\n",100,1000,TextArea.SCROLLBARS_BOTH);
        text.setBounds(10,70,480,250);
        text.setEditable(false);
        text.append("Ziel des Spieles"+
           
        
            "      spielbeschreibung  \n\n\n"+
            "Die Aufgabenstellung\n\n\n"+
            "Infos zum  Spiel:\n\n"+
            " - Dieses Spiel wird normalerweise von zwei Personen mit Papier und Bleistift gespielt.\n"+
            "   \n"+
            

        add(text);
    }//initText
    
    private void initLabel(){
        label=new Label();
        label.setForeground(Color.blue);
        label.setFont(new Font("SansSerif",Font.PLAIN,25));
        label.setText("  Hilfe zum Spiel - Schiffe versenken");
        label.setBounds(20,30,500,30);
        add(label);
    }//initLabel

    public void paint(Graphics g){
        g.setColor(Color.black);
        g.setFont(new Font("Monospaced",Font.BOLD,15));
        g.drawString("Die Flotte der Spieler",20,340);
        g.drawString("Kutter",20,360);
        g.drawString("Titanic",100,360);
        g.drawString("U-Boot",190,360);
        g.drawString("Kreuzer",280,360);
        g.drawString("Fregatte",380,360);
        g.drawImage(schiffeversenken.zweierX,20,370,40,20,this);
        g.drawImage(schiffeversenken.dreierX1,100,370,60,20,this);
        g.drawImage(schiffeversenken.dreierX2,190,370,60,20,this);
        g.drawImage(schiffeversenken.viererX,280,370,80,20,this);
        g.drawImage(schiffeversenken.fuenferX,380,370,100,20,this);
    }//paint
    
    private void initComponents () {
        addWindowListener (new java.awt.event.WindowAdapter () {
            public void windowClosing (java.awt.event.WindowEvent evt) {
                exitForm ();
            }
        }
        );

    }

    /** Exit the Application */
    private void exitForm() {
        schiffeversenken.start.setEnabled(true);
        schiffeversenken.help.setEnabled(true);
        dispose();
    }

    public static void main (String args[]) {
        new HelpFrame();
    }

    public void actionPerformed(final java.awt.event.ActionEvent p1){
        exitForm();
    }
}
```


----------



## ARadauer (23. Nov 2012)

Klassen schreibt man groß


----------



## SlaterB (23. Nov 2012)

bei initArea() hört dein String +String + usw. nicht auf

kann man in einem Applet ein Frame als Hilfe öffnen?
bei mir in Eclipse geht es allerdings in der Tat

mit Bildern machst du den Code für andere recht schwer zu testen, 
aber läuft sogar, hab grad ne Titanic versenkt oder wurde bei mir versenkt 

als ich gerade vom Browser wieder zurückgehe ist freilich fast alles weg, das ist unschön,
getGraphics() ist ein ganz schlimmer allgemein geächteter Aufruf für GUI-Komponenten,

wie in Tutorials zu sehen wäre allgemein besser, alle Informationen abzuspeichern und bei jedem paint,
ausgelöst durch repaint() alles komplett passend zu zeichnen,
jetzt vielleicht bisschen aufwendig umzustellen, solange ja auch schon was


----------



## satim (23. Nov 2012)

hallo

habe zwei bücher von java 


java kopf bis fuß.
und das zweite buch heisst java ist eine insel, dieser ist aber sehr kompliziert.

ok danke


----------



## satim (23. Nov 2012)

hallo slaterB

ok hab das mit dem string korigiert jetzt hört er auf ???:L

was würdest du mir als lösung vorschlagen, soll alle grafiken weg tun ??

und statt getGraphics was könnte ich da verwenden.

danke nochmals


----------



## satim (23. Nov 2012)

hallo

kann ich dich nochmal was fragen, trotz den  aussbesserungen funktioniert dieses bei mir aber nicht habe eine lange liste an fehlermeldungen  hasat du irgendetwas verändert wo du das ausprobiert hast??


----------



## SlaterB (23. Nov 2012)

was sind das denn für Fehlermeldungen? ne bei mir kommen keine mehr, nichts geändert

statt auf getGraphics() zu malen ist das Grundkonzept, sich in Variablen zu speichern, wo welches Schiff sitzt,
und dann bei jedem paint auch immer die Schiffe zu malen,
genauso mit schon beschossenen Feldern usw., auf die Mausklicks hin nur die Information z.B. in eine Liste ablegen,
paint liest die Information und stellt alles günstig dar,

für deine Fragen ist das aber ziemlich hoch, schon der jetzige Stand erstaunlich, fast zu schade ihn anzurühren


----------



## battleship (24. Nov 2012)

hab ich zwischendurch eigentlich irgendwas verschlafen ?

das thema wurde am 31.08. mit "dringend" eröffnet ...
am 11.09. gab dann das "jobangebot" ...
und jetzt ist es ende november und es kommt code mit so nem text "hat noch fehler" ohne diese mal zu posten ...

ich hab mich jetzt nich durch den code gewühlt ... aber APPLET ? seriously ? dachte die klasse wäre mitlerweile gelöscht worden ...


----------

