rendered paste bodypublic class Sali {
private Elokuva elokuva;
private boolean[][] paikat;
public Sali(int rivienMaara, int paikkojaRivilla) {
this.paikat = new boolean[rivienMaara][paikkojaRivilla];
}
public boolean varaaPaikka(int rivi, int paikkaRivilla) {
if(this.elokuva == null)
return false;
if (this.paikat[rivi-1][paikkaRivilla-1] == false) {
this.paikat[rivi-1][paikkaRivilla-1] = true;
return true;
}
else
return false;
}
public boolean onkoVarattu(int rivi, int paikkaRivilla) {
if (this.paikat[rivi - 1][paikkaRivilla - 1] == true)
return true;
else
return false;
}
public boolean varaaRyhmanPaikat(int ryhmanKoko) {
int varausrivi = 0, i, vierekkaisetVapaat = 0, j, merkki = 0, k;
boolean apumuuttuja = false;
int paikatRivilla = this.kerroPaikkojenMaaraRivilla();
int rivit = this.kerroRivienMaara();
if(this.elokuva == null || ryhmanKoko > paikatRivilla)
return false;
if (rivit % 2 == 0)
varausrivi = rivit / 2;
else
varausrivi = (rivit + 1) / 2 - 1;
for (j = 0; j < rivit; j++) {
if (apumuuttuja == false) {
for(i = 0; i < paikatRivilla; i++) {
if(this.onkoVarattu(varausrivi + 1, i + 1) == false) {
vierekkaisetVapaat++;
if (vierekkaisetVapaat == ryhmanKoko) {
merkki = i;
apumuuttuja = true;
}
}
else
vierekkaisetVapaat = 0;
}
}
else if (vierekkaisetVapaat < ryhmanKoko) {
if ((j + 1) % 2 == 0) {
if (varausrivi < rivit) {
varausrivi += (j + 1);
i = 0;
}
}
else if (varausrivi - (j + 1) > 0) {
varausrivi -= (j + 1);
i = 0;
}
else if (varausrivi == rivit - 1) {
varausrivi = 0;
i = 0;
}
else if (varausrivi - (j + 1) == -1) {
varausrivi = rivit - 1;
i = 0;
}
}
else
for(k = 0; k < ryhmanKoko; k++) {
this.paikat[varausrivi][merkki - k] = true;
}
}
return true;
}
public void asetaElokuva(Elokuva elokuva) {
this.elokuva = elokuva;
}
public boolean poistaElokuva() {
if (this.elokuva != null) {
this.elokuva = null;
return true;
}
else
return false;
}
public Elokuva kerroElokuva() {
return this.elokuva;
}
public int kerroRivienMaara() {
return this.paikat.length;
}
public int kerroPaikkojenMaaraRivilla() {
return this.paikat[0].length;
}
public int kerroVapaidenPaikkojenMaara() {
int i, j, vapaat = 0;
for (j = 0; j < this.paikat.length; j++) {
for (i = 0; i < this.paikat[0].length; i++) {
if (this.paikat[j][i] == false)
vapaat++;
}
}
return vapaat;
}
public int kerroPaikkojenKokonaismaara() {
int kokonaismaara;
kokonaismaara = this.paikat.length * this.paikat[0].length;
return kokonaismaara;
}
}