Kontakt

Fakturační údaje

IČ: 87189224, BÚ: 1958653063/0800

Contact info in QR code

Siege (Obkličovačka)

Informace

Stáhni a hraj!

  • Spustitelný soubor hry si stáhnou oba hráči
  • Zakladatel hry
    • V nabídce "Game > Create" vytvoří novou hru
    • Pošle protihráči svou IP adresu (zjistí ji v levém dolním rohu okna)
  • Protihráč
    • Jakmile obdrží IP adresu zakladatele hry, v nabídce "Game > Join" se připojí ke hře
  • Cílem je zabrat co nejvíce soupeřových polí.
  • Pozn.: Síťové spojení funguje na LAN (lokální) síťi a na počítačích s veřejnou IP adresou.

Zdrojové kódy (zip)

Zdrojové kódy (prohlížení)

  1: package siege.gui.views;
  2: 
  3: import java.awt.Color;
  4: import siege.gui.*;
  5: import java.util.Observable;
  6: import java.awt.Graphics;
  7: import java.awt.Graphics2D;
  8: import java.awt.Polygon;
  9: import java.awt.RenderingHints;
 10: import java.util.HashSet;
 11: import java.util.LinkedList;
 12: import java.util.Observer;
 13: import javax.swing.JPanel;
 14: import siege.core.*;
 15: import siege.util.Log;
 16: 
 17: /**
 18:  * Territories view. Display valid territories
 19:  * @author Ondrej Macoszek, ondra@macoszek.cz
 20:  */
 21: public class TerritoriesView extends JPanel implements Observer
 22: {
 23:     HashSet<Territory> territories = new HashSet<Territory>();
 24: 
 25:     public TerritoriesView()
 26:     {
 27:         super();
 28:         setOpaque(true);
 29:         setPreferredSize(PlayboardView.size);
 30:     }
 31: 
 32:     /**
 33:      * Initialize territories view
 34:      */
 35:     public void initialize()
 36:     {
 37:         territories.clear();
 38: 
 39:         Playboard playboard = Game.getInstance().getPlayboard();
 40:         playboard.addObserver(this);
 41:     }
 42: 
 43:     /**
 44:      * Loads valid territories. If changes from prev state, repaint it.
 45:      */
 46:     public void refreshTerritories(Playboard playboard)
 47:     {
 48:         boolean changed = false;
 49:         for (Territory territory : playboard.getTerritories()) {
 50:             if(territory.isCaptured()==false) {
 51:                 if(territories.contains(territory)==false) {
 52:                     territories.add(territory);
 53:                     changed = true;
 54:                 }
 55:             } else {
 56:                 territories.remove(territory);
 57:                 changed = true;
 58:             }
 59:         }
 60:         if(changed) {
 61:             repaint();
 62:         }
 63:     }
 64: 
 65: 
 66:     @Override
 67:     public void paint(Graphics _g)
 68:     {
 69:         // graphic settings, turn on antialiasing
 70:         Graphics2D g = (Graphics2D) _g;
 71:         g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 72: 
 73: 
 74:         // delete old territories
 75:         g.setColor(Colors.backgroundPlayboard);
 76:         g.drawRect(0, 0, getWidth(), getHeight());
 77: 
 78:         // paint current valid territories
 79:         for (Territory territory : territories) {
 80:             LinkedList<PlayboardPoint> ll = territory.getBorderLine();
 81: 
 82:             Polygon p = new Polygon();
 83:             for (PlayboardPoint point : ll) {
 84:                 p.addPoint(10+12+point.getX()*27, 10+10+point.getY()*19);
 85:             }
 86:             //27*x+12, 19*y+10
 87: 
 88:             if(territory.getOwner().isChallenger()) {
 89:                 g.setColor(Colors.challengerSoft);
 90:             } else {
 91:                 g.setColor(Colors.participantSoft);
 92:             }
 93:             g.fillPolygon(p);
 94: 
 95:             if(territory.getOwner().isChallenger()) {
 96:                 g.setColor(Colors.challengerMedium);
 97:             } else {
 98:                 g.setColor(Colors.participantMedium);
 99:             }
100:             g.drawPolygon(p);
101:         }
102:         FrontView.getInstance().playboard.repaint();
103:     }
104: 
105:     /**
106:      * Update changes in playboard
107:      */
108:     public void update(Observable o, Object arg)
109:     {
110:         if(o instanceof Playboard) {
111:             Log.message(this, "update");
112:             refreshTerritories((Playboard)o);
113:         }
114:     }
115: }
116: