home *** CD-ROM | disk | FTP | other *** search
- function steinFarbe()
- {
- var _loc1_ = Math.round(Math.random() * 6);
- return _loc1_;
- }
- function baueSpielfeld()
- {
- var _loc3_ = 0;
- while(_loc3_ < spielfeld.zeilen)
- {
- var _loc2_ = 0;
- while(_loc2_ < spielfeld.spalten)
- {
- var _loc1_ = _loc3_ * spielfeld.spalten + _loc2_;
- this.mc_feld.attachMovie("mc_stein",_loc1_,_loc1_ + spielfeld.tiefe,{_x:_loc2_ * stein.breite,_y:_loc3_ * stein.hoehe,feldnr:_loc1_});
- spielfeld.feld[_loc1_] = 0;
- _loc2_ = _loc2_ + 1;
- }
- _loc3_ = _loc3_ + 1;
- }
- }
- function baueVorschau()
- {
- var _loc3_ = 0;
- while(_loc3_ < vorschau.zeilen)
- {
- var _loc1_ = 0;
- while(_loc1_ < vorschau.spalten)
- {
- var _loc2_ = _loc3_ * vorschau.spalten + _loc1_;
- this.mc_vorschau.attachMovie("mc_stein",_loc2_,_loc2_ + vorschau.tiefe,{_x:_loc1_ * stein.breite,_y:_loc3_ * stein.hoehe,feldnr:_loc2_});
- _loc1_ = _loc1_ + 1;
- }
- _loc3_ = _loc3_ + 1;
- }
- this.mc_vorschau._visible = vorschau.aktiv;
- if(!vorschau.aktiv)
- {
- this.bg_vorschau.gotoAndStop("ohneVorschau");
- vorschau.zusatzPunkte = 0.5;
- }
- else
- {
- this.bg_vorschau.gotoAndStop("mitVorschau");
- vorschau.zusatzPunkte = 0;
- }
- }
- function vStein(vPos, vFarbe)
- {
- this.mc_vorschau[vPos].gotoAndStop(vFarbe + 1);
- }
- function zeigeVorschau()
- {
- stein.farbe = stein.vFarbe;
- loescheVorschau();
- stein.vFarbe = steinFarbe();
- var _loc1_ = 0;
- while(_loc1_ < 4)
- {
- vPos = stein.formation[stein.vFarbe * vorschau.anzahlFelder + _loc1_];
- vorschau.pos[_loc1_] = vPos;
- vStein(vorschau.pos[_loc1_],stein.vFarbe + 1);
- _loc1_ = _loc1_ + 1;
- }
- }
- function loescheVorschau()
- {
- var _loc1_ = 0;
- while(_loc1_ < vorschau.posLaenge)
- {
- vStein(vorschau.pos[_loc1_],0);
- _loc1_ = _loc1_ + 1;
- }
- }
- function steinF(pos, farbe)
- {
- this.mc_feld[pos].gotoAndStop(farbe + 1);
- spielfeld.feldFarbe[pos] = farbe;
- }
- function zeigeSteine()
- {
- var _loc1_ = 0;
- while(_loc1_ < 4)
- {
- stein.pos[_loc1_] = stein.formation[stein.farbe * vorschau.anzahlFelder + _loc1_ + 4 * stein.rotation];
- spielfeld.pos[_loc1_] = stein.pos[_loc1_] + int(stein.pos[_loc1_] / 4) * spielfeld.feldDiff + stein.posY + stein.posX;
- steinF(spielfeld.pos[_loc1_],stein.farbe + 1);
- _loc1_ = _loc1_ + 1;
- }
- }
- function loescheSteine()
- {
- var _loc1_ = 0;
- while(_loc1_ < vorschau.posLaenge)
- {
- steinF(spielfeld.pos[_loc1_],0);
- spielfeld.feldFarbe[spielfeld.pos[_loc1_]] = 0;
- _loc1_ = _loc1_ + 1;
- }
- }
- function stopFallen()
- {
- if(spielfeld.pos[3] > spielfeld.anzahlFelder - spielfeld.spalten - 1)
- {
- return true;
- }
- var _loc1_ = 0;
- while(_loc1_ < 4)
- {
- if(spielfeld.feld[spielfeld.pos[_loc1_] + spielfeld.spalten] == 1)
- {
- return true;
- }
- _loc1_ = _loc1_ + 1;
- }
- }
- function startPos()
- {
- stein.posX = stein.startPosX;
- stein.posY = stein.startPosY;
- stein.rotation = stein.startRotation;
- zeigeVorschau();
- zeigeSteine();
- spiel.level = spiel.zeilen < spiel.levelWechsel[spiel.level - 1] ? spiel.level : spiel.level + 1;
- punkteZeigen();
- }
- function fallen()
- {
- var _loc2_ = _root;
- stein.sprungBereit = true;
- var _loc3_ = stopFallen();
- if(!_loc3_)
- {
- stein.posY += spielfeld.spalten;
- loescheSteine();
- zeigeSteine();
- }
- else
- {
- var _loc1_ = 0;
- while(true)
- {
- if(_loc1_ >= 4)
- {
- ganzeZeile();
- if(stein.zeilen == 0)
- {
- startPos();
- }
- break;
- }
- spielfeld.feld[spielfeld.pos[_loc1_]] = 1;
- if(spielfeld.pos[_loc1_] < spielfeld.spalten * 2)
- {
- trace("SPIELSTOPP");
- _loc2_.gotoAndStop("ende");
- break;
- }
- _loc1_ = _loc1_ + 1;
- }
- }
- }
- function drehen(richtung)
- {
- tempRotation = stein.rotation;
- if(richtung == "rechts")
- {
- if(tempRotation < 3)
- {
- tempRotation++;
- }
- else
- {
- tempRotation = 0;
- }
- }
- else if(richtung == "links")
- {
- if(tempRotation > 0)
- {
- tempRotation--;
- }
- else
- {
- tempRotation = 3;
- }
- }
- var _loc1_ = 0;
- while(true)
- {
- if(_loc1_ >= 4)
- {
- stein.rotation = tempRotation;
- loescheSteine();
- zeigeSteine();
- break;
- }
- tempStein = stein.formation[stein.farbe * vorschau.anzahlFelder + _loc1_ + 4 * tempRotation];
- tempPosition = tempStein + (int(tempStein / 4) * spielfeld.feldDiff + stein.posY + stein.posX);
- if(tempPosition > spielfeld.anzahlFelder - spielfeld.spalten - 1)
- {
- break;
- }
- if(spielfeld.feld[tempPosition] == 1)
- {
- break;
- }
- tempAussen = tempPosition - stein.posY - int(tempStein / 4) * spielfeld.spalten;
- if(tempAussen > spielfeld.spalten - 1)
- {
- stein.posX--;
- }
- else if(tempAussen < 0)
- {
- stein.posX = stein.posX + 1;
- }
- _loc1_ = _loc1_ + 1;
- }
- }
- function schieben(richtung)
- {
- if(richtung == "links")
- {
- var _loc1_ = 0;
- while(true)
- {
- if(_loc1_ < 4)
- {
- tempPosition = stein.pos[_loc1_] + (int(stein.pos[_loc1_] / 4) * spielfeld.feldDiff + stein.posY + stein.posX - 1);
- if(spielfeld.feld[tempPosition] != 1)
- {
- if(spielfeld.pos[_loc1_] - stein.posY - int(stein.pos[_loc1_] / 4) * spielfeld.spalten > 0)
- {
- continue;
- }
- }
- }
- else
- {
- stein.posX--;
- loescheSteine();
- zeigeSteine();
- }
- }
- }
- else if(richtung == "rechts")
- {
- _loc1_ = 0;
- while(true)
- {
- if(_loc1_ >= 4)
- {
- stein.posX = stein.posX + 1;
- loescheSteine();
- zeigeSteine();
- break;
- }
- tempPosition = stein.pos[_loc1_] + (int(stein.pos[_loc1_] / 4) * spielfeld.feldDiff + stein.posY + stein.posX + 1);
- if(spielfeld.feld[tempPosition] == 1)
- {
- break;
- }
- if(spielfeld.pos[_loc1_] - stein.posY - int(stein.pos[_loc1_] / 4) * spielfeld.spalten >= spielfeld.spalten - 1)
- {
- break;
- }
- _loc1_ = _loc1_ + 1;
- }
- }
- }
- function sprungZeile()
- {
- i = stein.posY;
- while(i < spielfeld.anzahlFelder)
- {
- var _loc3_ = i + spielfeld.spalten;
- var _loc2_ = _loc3_ - stein.posY;
- var _loc1_ = 0;
- while(_loc1_ < 4)
- {
- if(spielfeld.feld[spielfeld.pos[_loc1_] + _loc2_] == 1)
- {
- return i;
- }
- if(spielfeld.pos[_loc1_] + _loc2_ >= spielfeld.anzahlFelder)
- {
- return i;
- }
- _loc1_ = _loc1_ + 1;
- }
- i += spielfeld.spalten;
- }
- }
- function sprung()
- {
- spielStop();
- stein.sprungBereit = false;
- stein.sprungZeile = sprungZeile();
- var _loc1_ = (stein.sprungZeile - stein.posY) * spiel.level / 10 + spiel.punktDiff;
- _loc1_ = Math.floor(_loc1_ + _loc1_ * vorschau.zusatzPunkte);
- spiel.punkte += _loc1_;
- stein.posY = stein.sprungZeile;
- stein.sprungZeile = 0;
- loescheSteine();
- zeigeSteine();
- ganzeZeile();
- if(stein.zeilen == 0)
- {
- spielen();
- }
- }
- function ganzeZeile()
- {
- stein.zeilen = 0;
- var i = 0;
- while(i < spielfeld.zeilen)
- {
- var belegteFelder = 0;
- var _loc2_ = 0;
- while(_loc2_ < spielfeld.spalten)
- {
- var _loc3_ = i * spielfeld.spalten + _loc2_;
- belegteFelder += spielfeld.feld[_loc3_];
- if(belegteFelder == spielfeld.spalten)
- {
- spielStop();
- stein.zeilen = stein.zeilen + 1;
- var _loc1_ = 0;
- while(_loc1_ < spielfeld.spalten)
- {
- _loc3_ = i * spielfeld.spalten + _loc1_;
- this.mc_feld[_loc3_].gotoAndStop("treffer");
- _loc1_ = _loc1_ + 1;
- }
- }
- _loc2_ = _loc2_ + 1;
- }
- i++;
- }
- spiel.zeilen += stein.zeilen;
- }
- function rueckeSteine()
- {
- for(var steinName in stein.treffer)
- {
- var _loc1_ = stein.treffer[steinName];
- while(_loc1_ >= 0)
- {
- var _loc2_ = spielfeld.feldFarbe[_loc1_ - spielfeld.spalten];
- steinF(_loc1_,_loc2_);
- if(_loc2_ > 0)
- {
- spielfeld.feld[_loc1_] = 1;
- spielfeld.feldFarbe[_loc1_] = _loc2_;
- }
- else
- {
- spielfeld.feld[_loc1_] = 0;
- spielfeld.feldFarbe[_loc1_] = 0;
- }
- steinF(_loc1_ - spielfeld.spalten,0);
- spielfeld.feld[_loc1_ - spielfeld] = 0;
- _loc1_ -= spielfeld.spalten;
- }
- if(steinName == 0)
- {
- stein.treffer.splice(0,stein.treffer.length);
- var _loc3_ = spiel.level * spiel.zeilenPunkte[stein.zeilen - 1];
- _loc3_ += _loc3_ * vorschau.zusatzPunkte;
- spiel.punkte += _loc3_;
- stein.zeilen = 0;
- punkteZeigen();
- startPos();
- spielen();
- }
- }
- }
- function geschwindigkeit()
- {
- return spiel.geschwindigkeit[spiel.level - 1];
- }
- function punkteZeigen()
- {
- var _loc1_ = this;
- _loc1_.punkte = spiel.punkte;
- _loc1_.level = spiel.level;
- _loc1_.zeilen = spiel.zeilen;
- }
- function spielen()
- {
- stein.sprungBereit = true;
- interval = setInterval(fallen,geschwindigkeit());
- }
- function spielStop()
- {
- stein.sprungBereit = false;
- clearInterval(interval);
- }
- function spielPause()
- {
- spielStop();
- spiel.pause = true;
- _root.mc_feld.attachMovie("mc_abdecker","abd_pause",1000);
- }
- function spielWeiter()
- {
- spiel.pause = false;
- removeMovieClip(_root.mc_feld.abd_pause);
- spielen();
- }
- function spielAbbrechen()
- {
- spielStop();
- removeMovieClip(mc_feld);
- removeMovieClip(mc_vorschau);
- }
- spiel = {};
- spiel.punkte = 0;
- spiel.zeilen = 0;
- spiel.punktDiff = 2;
- spiel.level = 1;
- spiel.levelWechsel = [20,40,60,80,10000];
- spiel.zeilenPunkte = [20,50,150,600];
- spiel.geschwindigkeit = [500,450,350,250,150];
- vorschau = {};
- vorschau.posX = 370;
- vorschau.posY = 90;
- vorschau.zeilen = 4;
- vorschau.spalten = 4;
- vorschau.tiefe = 400;
- vorschau.anzahlFelder = vorschau.zeilen * vorschau.spalten;
- vorschau.pos = [0,0,0,0];
- vorschau.posLaenge = vorschau.pos.length;
- vorschau.aktiv = true;
- vorschau.zusatzPunkte = 0;
- spielfeld = {};
- spielfeld.posX = 156;
- spielfeld.posY = 90;
- spielfeld.zeilen = 20;
- spielfeld.spalten = 10;
- spielfeld.tiefe = 100;
- spielfeld.feld = new Array();
- spielfeld.feldFarbe = new Array();
- spielfeld.anzahlFelder = spielfeld.zeilen * spielfeld.spalten;
- spielfeld.feldDiff = spielfeld.spalten - vorschau.spalten;
- spielfeld.pos = [0,0,0,0];
- spielfeld.posLaenge = spielfeld.pos.length;
- stein = {};
- stein.breite = 15;
- stein.hoehe = 15;
- stein.startPosX = 0;
- stein.startPosY = -10;
- stein.startRotation = 0;
- stein.fallen = true;
- stein.treffer = new Array();
- stein.pos = [0,0,0,0];
- stein.formation = [5,6,9,10,5,6,9,10,5,6,9,10,5,6,9,10,4,5,6,9,1,4,5,9,1,4,5,6,1,5,6,9,4,5,9,10,1,4,5,8,4,5,9,10,1,4,5,8,5,6,8,9,0,4,5,9,5,6,8,9,0,4,5,9,4,5,6,8,0,1,5,9,2,4,5,6,1,5,9,10,4,5,6,10,1,5,8,9,0,4,5,6,1,2,5,9,4,5,6,7,1,5,9,13,4,5,6,7,1,5,9,13];
- stein.rotation = stein.startRotation;
- stein.posY = stein.startPosY;
- stein.posX = stein.startPosX;
- stein.zeilen = 0;
- stein.intervalSchieben = 0;
- stein.intervalRechts = 0;
- stein.maxSchieben = 2;
- stein.intervalDrehen = 0;
- stein.maxDrehen = 4;
- stein.intervalRunter = 0;
- stein.maxRunter = 1;
- stein.sprungBereit = true;
- stein.intervalSprung = 0;
- this.createEmptyMovieClip("mc_feld",0);
- with(mc_feld)
- {
- _x = spielfeld.posX;
- _y = spielfeld.posY;
- }
- this.createEmptyMovieClip("mc_vorschau",1);
- with(mc_vorschau)
- {
- _x = vorschau.posX;
- _y = vorschau.posY;
- }
- this.b_impressum.onPress = function()
- {
- this.onPressEvent();
- _root.gotoAndStop("impressum");
- spielAbbrechen();
- };
- this.b_hilfe.onPress = function()
- {
- this.onPressEvent();
- _root.gotoAndStop("hilfe");
- spielAbbrechen();
- };
- this.b_start.onPress = function()
- {
- this.onPressEvent();
- _root.gotoAndStop("start");
- };
- this.b_spielen.onPress = function()
- {
- this.onPressEvent();
- _root.gotoAndStop("spielen");
- };
- tastenEvent.addListener(spielTasten);
- Key.addListener(tasten);
- stop();
-