public Game createGame() { Game game = new Game(); game.Gamefield = new Gamefield(); game.Gamefield.Field = new List<Field>(); game.Highscoretable = new List<Highscores>(); for (int i = 0; i < 16; i++) { Field field = new Field(); field.Id = i; field.Value = ""; game.Gamefield.Field.Add(field); } for (int i = 0; i < 2; i++) { Random rnd = new Random(); int id = rnd.Next(0, 16); if (game.Gamefield.Field[id].Value == "") game.Gamefield.Field[id].Value = "3"; else i = i - 1; ; } game = setHighscores(game); return game; }
public ActionResult DownArrow() { Game game = (Game)Session["game"]; game.oldGamefield = new Gamefield(); game.oldGamefield.Field = new List<Field>(); for (int i = 0; i < 16; i++) { Field field = new Field(); field.Color = game.Gamefield.Field[i].Color; field.Id = game.Gamefield.Field[i].Id; field.Movement = game.Gamefield.Field[i].Movement; field.Value = game.Gamefield.Field[i].Value; game.oldGamefield.Field.Add(field); } bool verschiebt = false; for (int i = 0; i < 16; i++) { game.oldGamefield.Field[i].Movement = 0; game.Gamefield.Field[i].Movement = 0; } //Verschiebung--------- for (int i = 12; i > 0; i = i - 4) { for (int j = 0; j < 4; j++) { int id = i + j; if (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id - 4].Value != "") { verschiebt = true; while (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id - 4].Value != "") { game.oldGamefield.Field[i + j - 4].Movement = game.oldGamefield.Field[i + j - 4].Movement + 1; game.Gamefield.Field[id].Value = game.Gamefield.Field[id - 4].Value; game.Gamefield.Field[id - 4].Value = ""; if (id < 12 && game.Gamefield.Field[id + 4].Value == "") { id = id + 4; } } } } } //--------------------- //Addition------------- for (int i = 12; i > 0; i = i - 4) { for (int j = 3; j >= 0; j--) { if (game.Gamefield.Field[i + j].Value == game.Gamefield.Field[i + j - 4].Value && game.Gamefield.Field[i + j].Value != "") { game.oldGamefield.Field[i + j - 4].Movement = game.oldGamefield.Field[i + j - 4].Movement + 1; verschiebt = true; game.Gamefield.Field[i + j].Value = (int.Parse(game.Gamefield.Field[i + j].Value) * 2).ToString(); game.Gamefield.Field[i + j - 4].Value = ""; } } } //--------------------- //2. Verschiebung--------- for (int i = 12; i > 0; i = i - 4) { for (int j = 0; j < 4; j++) { int id = i + j; if (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id - 4].Value != "") { verschiebt = true; while (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id - 4].Value != "") { game.oldGamefield.Field[i + j - 4].Movement = game.oldGamefield.Field[i + j - 4].Movement + 1; game.Gamefield.Field[id].Value = game.Gamefield.Field[id - 4].Value; game.Gamefield.Field[id - 4].Value = ""; if (id < 12 && game.Gamefield.Field[id + 4].Value == "") { id = id + 4; } } } } } //--------------------- bool rnd_possible = false; for (int i = 0; i < 15; i++) { if (game.Gamefield.Field[i].Value == "") { rnd_possible = true; break; } else { rnd_possible = false; } } if (rnd_possible == true && verschiebt == true) { for (int i = 0; i < 1; i++) { Random rnd = new Random(); int id = rnd.Next(0, 16); if (game.Gamefield.Field[id].Value == "") game.Gamefield.Field[id].Value = "3"; else i = i - 1; ; } } game = setColors(game); var jsonSerialiser = new JavaScriptSerializer(); var json = jsonSerialiser.Serialize(game.Gamefield.Field); Session.Remove("game"); Session.Add("game", game); checkWin(game); return Json(json, JsonRequestBehavior.AllowGet); }
public ActionResult LeftArrow() { //Objekt Game aus der Session holen Game game = (Game)Session["game"]; game.oldGamefield = new Gamefield(); game.oldGamefield.Field = new List<Field>(); for (int i = 0; i < 16; i++) { Field field = new Field(); field.Color = game.Gamefield.Field[i].Color; field.Id = game.Gamefield.Field[i].Id; field.Movement = game.Gamefield.Field[i].Movement; field.Value = game.Gamefield.Field[i].Value; game.oldGamefield.Field.Add(field); } bool verschiebt = false; for (int i = 0; i < 16; i++) { game.oldGamefield.Field[i].Movement = 0; game.Gamefield.Field[i].Movement = 0; } //Verschiebung--------- for (int i = 0; i < 16; i = i + 4)//Zeile { for (int j = 0; j < 3; j++)//Spalte { int id = i + j; //Zeile 0 + Spalte 0 = Feld 0 oder Zeile 1 (Wert 4, da i+4) + Spalte 3 (Wert 3) = Feld 7 (Felder gehen von 0-15) if (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id + 1].Value != "") { verschiebt = true; while (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id + 1].Value != "")//Falls links immernoch frei ist weiter schieben { game.oldGamefield.Field[i + j + 1].Movement = game.oldGamefield.Field[i + j + 1].Movement + 1; game.Gamefield.Field[id].Value = game.Gamefield.Field[id + 1].Value; game.Gamefield.Field[id + 1].Value = ""; if (id % 4 != 0 && id != 0)//Vermeidet, das Zahlen die Zeilen welchseln { id = id - 1; } } } } } //--------------------- //Addition------------- for (int i = 0; i < 16; i = i + 4) { for (int j = 0; j < 3; j++) { int id = i + j; if (game.Gamefield.Field[id].Value == game.Gamefield.Field[id + 1].Value && game.Gamefield.Field[id].Value != "") { game.oldGamefield.Field[i + j + 1].Movement = game.oldGamefield.Field[i + j + 1].Movement + 1; verschiebt = true; game.Gamefield.Field[id].Value = (int.Parse(game.Gamefield.Field[id].Value) * 2).ToString(); game.Gamefield.Field[id + 1].Value = ""; } } } //--------------------- //2. Verschiebung--------- for (int i = 0; i < 16; i = i + 4)//Zeile { for (int j = 0; j < 3; j++)//Spalte { int id = i + j; //Zeile 0 + Spalte 0 = Feld 0 oder Zeile 1 (Wert 4, da i+4) + Spalte 3 (Wert 3) = Feld 7 (Felder gehen von 0-15) if (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id + 1].Value != "") { verschiebt = true; while (game.Gamefield.Field[id].Value == "" && game.Gamefield.Field[id + 1].Value != "")//Falls links immernoch frei ist weiter schieben { game.oldGamefield.Field[i + j + 1].Movement = game.oldGamefield.Field[i + j + 1].Movement + 1; game.Gamefield.Field[id].Value = game.Gamefield.Field[id + 1].Value; game.Gamefield.Field[id + 1].Value = ""; if (id % 4 != 0 && id != 0)//Vermeidet, das Zahlen die Zeilen welchseln { id = id - 1; } } } } } //--------------------- //Überprüft, ob es noch Platz hat um ein Feld zu generieren--- bool rnd_possible = false; for (int i = 0; i < 15; i++) { if (game.Gamefield.Field[i].Value == "") { rnd_possible = true; break; } else { rnd_possible = false; } } //------------------------------------------------------------ //Falls Platz vorhanden ist, wird ein Feld erzeugt------------ if (rnd_possible == true && verschiebt == true) { for (int i = 0; i < 1; i++) { Random rnd = new Random(); int id = rnd.Next(0, 16); if (game.Gamefield.Field[id].Value == "") game.Gamefield.Field[id].Value = "3"; else i = i - 1; ; } } //------------------------------------------------------------ //setzt Farbcodes der Felder nach Inhalt game = setColors(game); //Formatiert das Objekt Game zu einem JSON-String Format um, für den Response an jQuery var jsonSerialiser = new JavaScriptSerializer(); var json = jsonSerialiser.Serialize(game.Gamefield.Field); Session.Remove("game"); Session.Add("game", game); checkWin(game); return Json(json, JsonRequestBehavior.AllowGet); }