Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: schiffeversenken/Spiel.java


1   package schiffeversenken;
2   
3   /*
4     JavaBattle
5     ==========
6     
7     published under GNU General Public License (GPL)
8   
9     schoetz@users.sourceforge.net
10    
11  */
12  
13  /*
14    Spiel
15    =====
16    
17    Diese Klasse erstellt und managet ein Spiel. Sie gibt den Spielern aufträge wie z.B. schiffesetzten.
18    
19    Konstruktoren: public Spiel(int groesse, Callback c) :
20                      erzeugt ein Spiel Mensch gegen Computer
21                   public Spiel(int groesse, int port, Callback c)
22                      erzeugt ein Spiel Mensch gegen anderen PC als Server (über Socketverbindung)
23                   public Spiel(int groesse, int port, String ip, Callback c)
24                      erzeugt ein Spiel Mensch gegen anderen PC als Client (über Socketverbindung)
25  */
26  
27  import schiffeversenken.spieler.*;
28  
29  public class Spiel extends Thread{
30      
31      int shipArray[];
32      int groesse;
33      Spieler[] spieler;
34      int winner = 0;
35      int fertig;
36      
37      /*
38        
39        funktioniert nicht: Random Fehler
40        
41        public Spiel(int groesse) {
42        this.groesse = groesse;
43        countShips();
44        spieler = new Spieler[2];
45        Spielfeld sp1 = new Spielfeld(groesse,groesse);
46        Spielfeld sp2 = new Spielfeld(groesse,groesse);
47        spieler[0] = new Computer(sp1,sp2,groesse,shipArray);
48        spieler[1] = new Computer(sp2,sp1,groesse,shipArray);
49        }*/
50      
51      public Spiel(int groesse, Callback c){
52    this.groesse = groesse;
53    shipArray = new int[4];
54    countShips();
55    spieler = new Spieler[2];
56    Spielfeld sp1 = new Spielfeld(groesse,groesse);
57    Spielfeld sp2 = new Spielfeld(groesse,groesse);
58    spieler[0] = new Mensch(sp1,sp2,c,null);
59    spieler[1] = new Computer(sp2,sp1,groesse,shipArray);
60    start();
61      }
62      /* public Spiel(int groesse, int port, Callback c){
63    konstruktor(groesse, port, "", c);
64      }
65      public Spiel(int groesse, int port, String ip, Callback c){
66    konstruktor(groesse, port, ip, c);
67      }
68      
69      private void konstruktor(int groesse, int port, String ip, Callback c) {
70      shipArray = new int[4];
71    this.groesse = groesse;
72    countShips();
73    start();
74    }*/
75      
76      public void countShips()
77      {
78    int ship2=2, ship3=1, ship4=1, ship8=0;
79    for(int i =1;i<=groesse-5;i++){
80        if(i%2==0) {
81      if(ship2==2){ship2=1;}
82      else{ship2=2;}
83      ship3=1;
84      ship4++;
85        }
86        else{ship3=2;}
87        if((i-2)%4==0) {
88      ship8++;
89        }
90    }
91    shipArray[0] = ship2;
92    shipArray[1] = ship3;
93    shipArray[2] = ship4;
94    shipArray[3] = ship8;
95      }
96      
97      public int[] getShipArray(){
98    int[] ship = new int[4];
99    ship[0] = shipArray[0];
100   ship[1] = shipArray[1];
101   ship[2] = shipArray[2];
102   ship[3] = shipArray[3];
103   return ship;
104     }
105     
106     //public Spielfeld getSpielfeld(int spieler){}
107     
108     //public int anzahlSchuss(int spieler){}
109     
110     //public int anzahlTreffer(int spieler){}
111     
112     //public int schuss(int x, int y){}
113     
114     public boolean setzenFertig() {
115   fertig--;
116   
117   if(fertig == 0) 
118       return true;
119   else
120       return false;
121     }
122     
123     public void run(){
124   SetzenThread st1 = new SetzenThread(spieler[0], this);
125   SetzenThread st2 = new SetzenThread(spieler[1], this);
126   fertig = 2;
127   synchronized(this) {
128       try {
129     this.wait();
130       }
131       catch(Exception e) {
132     System.out.println("Nicht handhabbare Exception.\nDas Programm wird beendet");
133     System.exit(-1);
134       }
135   }
136   while(true) {
137       spieler[0].schiessen();
138       if(spieler[0].dead()){
139     winner = 2;
140     break;
141       }
142       spieler[1].schiessen();
143       if(spieler[1].dead()){
144     winner = 1;
145     break;
146       }
147   }
148   if(winner == 1) {
149       spieler[0].spielBeendet(true);
150       spieler[1].spielBeendet(false);
151   }
152   else {
153       spieler[0].spielBeendet(false);
154       spieler[1].spielBeendet(true);
155   }      
156     }
157     
158     public void chatSend(String str){}
159     
160 }