Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }