示例#1
0
        public void generateTiles(User u1, User u2)
        {
            battleshipContext context = new battleshipContext();

            //Create new users because of persistence.
            User user1, user2;

            user1 = context.Users.Where(r => r.Id == u1.Id).First();
            user2 = context.Users.Where(r => r.Id == u2.Id).First();

            Tile t = null;

            for (int i = 1; i <= Size; i++)
            {
                for (int j = 1; j <= Size; j++)
                {
                    t = new Tile(user1, i, j);
                    this.Tiles.Add(t);
                    context.Tiles.Add(t);

                    context.SaveChanges();
                    t = new Tile(user2, i, j);
                    this.Tiles.Add(t);
                    context.Tiles.Add(t);

                    context.SaveChanges();
                }
            }
            context.Boards.Where(board => board.Id == this.Id).First().Tiles = this.Tiles;
            context.SaveChanges();
        }
示例#2
0
        public GameBoard(Game game, User user)
        {
            battleshipContext context = new battleshipContext();

            this.Game = context.Games.Find(game.Id);
            if (Game.Board.HitsUser1 == 7 || Game.Board.HitsUser1 == 7)
            {
                MessageBox.Show("Dit spel is al geeindigd"); this.Close();
            }
            DispatcherTimer timer = new DispatcherTimer();

            timer.Tick    += Timer_Tick;
            timer.Interval = new TimeSpan(0, 0, 1);
            InitializeComponent();
            currentUser = user.Id;
            context.Configuration.LazyLoadingEnabled = true;
            this.Title = game.Id.ToString();
            this.Game  = context.Games.Find(game.Id);

            if (currentUser == Game.User1.Id)
            {
                otherUser = Game.User2.Id;
            }
            else
            {
                otherUser = Game.User1.Id;
            }
            disableFields();
            //generateField();
            timer.Start();
        }
示例#3
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            battleshipContext dbContext = new battleshipContext();

            if (dbContext.Users.Any(t => t.UserName == txtUsername.Text))
            {
                MessageQueue msq = null;
                if (MessageQueue.Exists(@".\private$\" + txtUsername.Text))
                {
                    msq       = new MessageQueue(@".\private$\" + txtUsername.Text);
                    msq.Label = "testing";
                }
                else
                {
                    MessageQueue.Create(@".\private$\" + txtUsername.Text);
                    msq       = new MessageQueue(@".\private$\" + txtUsername.Text);
                    msq.Label = "new q";
                }

                msq.Send(new Message(new Invite(getSize(), user.UserName + " heeft u uitgedaagd voor een game! (Boardsize: " + getSize() + ")", user), formatter));
            }
            else
            {
                MessageBox.Show("Gebruiker bestaat niet!");
            }
        }
        private void loadListBox()
        {
            battleshipContext context = new battleshipContext();

            if (context.Games.Any(t => t.User1.Id == User.Id || t.User2.Id == User.Id))
            {
                lvGames.ItemsSource = context.Games.Where(t => t.User1.Id == User.Id || t.User2.Id == User.Id).ToList();
            }
        }
        private void btnRegister_Click(object sender, RoutedEventArgs e)
        {
            battleshipContext context = new battleshipContext();
            User user = new User(txtUsername.Text, txtPassword.Password);

            context.Users.Add(user);
            context.SaveChanges();
            lblMessage.Content = "Nieuwe gebruiker aangemaakt.";
        }
示例#6
0
        public Game(User user1, User user2, Board board)
        {
            battleshipContext context = new battleshipContext();

            this.User1 = user1;
            this.User2 = user2;
            this.Board = board;
            this.Turn  = getStarter();
        }
示例#7
0
        private void disableFields()
        {
            battleshipContext context = new battleshipContext();
            Tile t = null;

            for (int i = 1; i < 6; i++)
            {
                for (int j = 1; j < 6; j++)
                {
                    t = context.Tiles.SqlQuery("select * from Tiles where Board_Id = " + Game.Board.Id + " and Owner_Id = " + currentUser + " and x = " + j + " and y = " + i).FirstOrDefault();
                    if (t != null)
                    {
                        if (t.Piece != null)
                        {
                            foreach (Control c in gYou.Children)
                            {
                                if (c.Name == "btnY" + j + "_" + i)
                                {
                                    ((Button)c).Content = "x";
                                    c.IsEnabled         = false;
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            for (int i = 1; i < 6; i++)
            {
                for (int j = 1; j < 6; j++)
                {
                    t = context.Tiles.SqlQuery("select * from Tiles where Board_Id = " + Game.Board.Id + " and Owner_Id = " + otherUser + " and x = " + j + " and y = " + i).FirstOrDefault();
                    if (t != null)
                    {
                        if (t.IsHit)
                        {
                            foreach (Control c in gEnemy.Children)
                            {
                                if (c.Name == "btnE" + j + "_" + i)
                                {
                                    ((Button)c).Content = "x";
                                    c.IsEnabled         = false;
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        private void btnLogin_Click(object sender, RoutedEventArgs e)
        {
            battleshipContext context = new battleshipContext();

            if (context.Users.Any(t => t.UserName == txtUsername.Text && t.Password == txtPassword.Password))
            {
                RoomSelector rs = new RoomSelector(context.Users.Where(t => t.UserName == txtUsername.Text && t.Password == txtPassword.Password).FirstOrDefault());
                rs.Show();
                this.Close();
            }
            else
            {
                lblMessage.Content = "Failed to log in. :(";
            }
        }
        private void addGame(Invite inv)
        {
            battleshipContext context = new battleshipContext();
            Board             b       = new Board(inv.Size);

            context.Boards.Add(b);
            context.SaveChanges();
            User user1 = context.Users.Where(t => t.Id == User.Id).First();
            User user2 = context.Users.Where(t => t.Id == inv.User.Id).First();

            context.Games.Add(new Game(user1, user2, b));
            context.SaveChanges();

            b = context.Boards.Where(t => t.Id == b.Id).First();
            b.generateTiles(user1, user2);

            loadListBox();
        }
示例#10
0
        private void btnClickEnemy(object sender, RoutedEventArgs e)
        {
            battleshipContext context = new battleshipContext();

            if (Game.Board.setTilesUser1 != 0 && Game.Board.setTilesUser2 != 0)
            {
                MessageBox.Show("Niet alle velden zijn geset.");
                return;
            }

            if (context.Games.Find(Game.Id).Turn.Id != currentUser)
            {
                MessageBox.Show("U bent niet aan de beurt.");
                return;
            }
            context.Games.Find(Game.Id).Turn = null;
            context.SaveChanges();
            Button button = (Button)sender;

            sendMSMQ(new Move(Convert.ToInt32(button.Name[6]) - 48, Convert.ToInt32(button.Name[4]) - 48));
            button.IsEnabled = false;
        }
示例#11
0
        private void btnClickYou(object sender, RoutedEventArgs e)
        {
            battleshipContext context = new battleshipContext();

            if (currentUser == Game.User1.Id)
            {
                if (context.Boards.SqlQuery("select * from Boards where id = " + Game.Board.Id).First().setTilesUser1 == 0)
                {
                    return;
                }
            }
            else
            if (context.Boards.SqlQuery("select * from Boards where id = " + Game.Board.Id).First().setTilesUser2 == 0)
            {
                return;
            }

            Piece p = new Piece();

            p.pieceType = "Boat";
            context.Pieces.Add(p);
            Button button = (Button)sender;

            button.Content = "x";

            context.Tiles.SqlQuery("select * from Tiles where Board_Id = " + Game.Board.Id + " and Owner_Id = " + currentUser + " and x = " + button.Name[6] + " and y = " + button.Name[4]).First().Piece = p;
            if (currentUser == Game.User1.Id)
            {
                context.Boards.SqlQuery("select * from Boards where id = " + Game.Board.Id).First().setTilesUser1 -= 1;
            }
            else
            {
                context.Boards.SqlQuery("select * from Boards where id = " + Game.Board.Id).First().setTilesUser2 -= 1;
            }
            context.SaveChanges();
            button.IsEnabled = false;
            button.Content   = "x";
        }
示例#12
0
        private void Timer_Tick(object sender, EventArgs e)
        {
            battleshipContext context = new battleshipContext();
            MessageQueue      msq     = new MessageQueue(@".\private$\" + Game.Id + "/" + currentUser);

            try
            {
                Message[] messages = msq.GetAllMessages();
                foreach (Message m in messages)
                {
                    object o = formatter.Read(m);
                    try
                    {
                        Move move = (Move)o;
                        Tile t    = context.Tiles.SqlQuery("select * from Tiles where Board_Id = " + Game.Board.Id + " and Owner_Id = " + currentUser + " and x = " + move.x + " and y = " + move.y).First();
                        t.IsHit = true;
                        if (t.Piece != null)
                        {
                            MessageBox.Show("U bent geraakt.");
                            if (currentUser == Game.User1.Id)
                            {
                                context.Boards.Find(Game.Board.Id).HitsUser1 += 1;
                                if (context.Boards.Find(Game.Board.Id).HitsUser1 == 7)
                                {
                                    sendMSMQ(new Response(true, false)); MessageBox.Show("U heeft verloren!"); this.Close();
                                }
                                else
                                {
                                    sendMSMQ(new Response(true));
                                }
                            }
                            else
                            {
                                context.Boards.Find(Game.Board.Id).HitsUser2 += 1;
                                if (context.Boards.Find(Game.Board.Id).HitsUser2 == 7)
                                {
                                    sendMSMQ(new Response(true, false)); MessageBox.Show("U heeft verloren!"); this.Close();
                                }
                                else
                                {
                                    sendMSMQ(new Response(true));
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("U bent niet geraakt.");
                            sendMSMQ(new Response(false));
                        }
                        context.Games.Find(Game.Id).Turn = context.Users.Find(currentUser);
                        context.SaveChanges();
                    }
                    catch (Exception) {}
                    try
                    {
                        Response r = (Response)o;
                        MessageBox.Show(r.displayMessage());
                        if (!r.Continue)
                        {
                            MessageBox.Show("u heeft gewonnen!");
                            this.Close();
                        }
                    }
                    catch (Exception) {}
                }
                msq.Purge();
            }
            catch
            { }
        }