private void BackButtonClick(object sender, RoutedEventArgs e) { networkPeer.killPeer(); networkPeer = null; MultiplayerMode.ShouldBreakOut = true; Switcher.Switch(new MainPage()); }
private void BackButtonClick(object sender, RoutedEventArgs e) { networkPeer.killPeer(); networkPeer = null; MultiplayerMode.ShouldBreakOut = true; Switcher.Switch(new MainPage()); }
private void Disconnect() { if (networkPeer != null) { networkPeer.killPeer(); networkPeer = null; } connected = false; Switcher.Switch(new ConnectionLostPage()); }
private void yesButton_Click(object sender, RoutedEventArgs e) { checkConnect.Stop(); networkPeer.killPeer(); networkPeer = null; soundEffectPlayer.Stop(); soundEffectPlayer.Close(); soundTrackMediaPlayer.Stop(); soundTrackMediaPlayer.Close(); Switcher.Switch(new MainPage()); }
private async void NextButtonClick(object sender, RoutedEventArgs e) { soundEffectPlayer.ButtonSound(); string playerName = (string)LANPlayerNameTextBox.Text; if (playerName == "") { playerName = "Anonymous"; } LidgrenKulamiPeer.KulamiPeer networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); networkPeer.Start(); Switcher.Switch(new WaitingForConnectionPage(networkPeer)); await StartNetworkGame(playerName, networkPeer); }
public WaitingForConnectionPage(LidgrenKulamiPeer.KulamiPeer peer) { InitializeComponent(); networkPeer = peer; ImageBrush backgrnd = new ImageBrush(); backgrnd.ImageSource = new BitmapImage(new Uri(startupPath + "/images/SelectionPage.png", UriKind.Absolute)); ImageBrush backButtonib = new ImageBrush(); backButtonib.ImageSource = new BitmapImage(new Uri(startupPath + "/images/backButton.png", UriKind.Absolute)); Background.Background = backgrnd; BackButton.Background = backButtonib; //Task.Delay(6000); }
public WaitingForConnectionPage(LidgrenKulamiPeer.KulamiPeer peer) { InitializeComponent(); networkPeer = peer; ImageBrush backgrnd = new ImageBrush(); backgrnd.ImageSource = new BitmapImage(new Uri(startupPath + "/images/SelectionPage.png", UriKind.Absolute)); ImageBrush backButtonib = new ImageBrush(); backButtonib.ImageSource = new BitmapImage(new Uri(startupPath + "/images/backButton.png", UriKind.Absolute)); Background.Background = backgrnd; BackButton.Background = backButtonib; //Task.Delay(6000); }
public GamePage(bool easyLevel, GameType gType) { InitializeComponent(); string songPath = startupPath + "/sound/music/Soundtrack.mp3"; soundTrackMediaPlayer.Open(new Uri(songPath)); soundTrackMediaPlayer.MediaEnded += new EventHandler(Song_Ended); soundTrackMediaPlayer.Play(); if (gType == GameType.LANMultiplayer) { networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); //wait until connection is established } buttonNames = new Dictionary<string,Button>(); allButtons = GameBackground.Children.OfType<Button>(); foreach (Button b in allButtons) { buttonNames.Add(b.Name.ToString(), b); } int networkingBoardNum = 0; if (gType == GameType.LANMultiplayer) { Random rnd = new Random(); int myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); int opponentRandomBoardNum = Convert.ToInt32(networkPeer.getMove()); networkingBoardNum = (myRandomBoardNum + opponentRandomBoardNum)/2; while (myRandomBoardNum == opponentRandomBoardNum) { myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); opponentRandomBoardNum = Convert.ToInt32(networkPeer.getMove()); } if (myRandomBoardNum > opponentRandomBoardNum) player1turn = true; else player1turn = false; } engine = new KulamiEngine(); if (gType == GameType.LANMultiplayer) engine.StartGame(gType, networkingBoardNum); else engine.StartGame(gType); easyLevelAIOn = easyLevel; if (engine.CurrentGame.GameType != GameType.LANMultiplayer) { Random rndMoveFirst = new Random(); int playFirst = rndMoveFirst.Next(0, 2); if (playFirst == 1) player1turn = true; else player1turn = false; } if (engine.CurrentGame.GameType == GameType.LocalComputer) { if (easyLevelAIOn) easyAI = new EasyAI(engine.CurrentGame); else hardAI = new HardAI(engine.CurrentGame); } ImageBrush ib = new ImageBrush(); ib.ImageSource = new BitmapImage(new Uri(startupPath + "/images/GameBoard" + engine.GameBoardNumber + ".png", UriKind.Absolute)); BoardBackground.Background = ib; ImageBrush gb = new ImageBrush(); gb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/GameBackground.jpg", UriKind.Absolute)); backgroundButton.Background = gb; ImageBrush sb = new ImageBrush(); sb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/soundOnButton.png", UriKind.Absolute)); toggleSound_Btn.Background = sb; ImageBrush rb = new ImageBrush(); rb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/radarOnButton.png", UriKind.Absolute)); toggleRadar_Btn.Background = rb; ImageBrush mb = new ImageBrush(); mb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/musicOnButton.png", UriKind.Absolute)); toggleMusicBtn.Background = mb; ImageBrush ButtonImage = new ImageBrush(); ButtonImage.ImageSource = new BitmapImage(new Uri(startupPath + "/images/GenericPlan.png", UriKind.Absolute)); ApplyBackgroundButtons(ButtonImage); ImageBrush RedConquer = new ImageBrush(); RedConquer.ImageSource = new BitmapImage(new Uri(startupPath + "/images/PlanConquerRed.png", UriKind.Absolute)); planetConquerOne.Background = RedConquer; ImageBrush BlueConquer = new ImageBrush(); BlueConquer.ImageSource = new BitmapImage(new Uri(startupPath + "/images/PlanConquerBlue.png", UriKind.Absolute)); planetConquerTwo.Background = BlueConquer; DoubleAnimation fadeInAnimation = new DoubleAnimation(); fadeInAnimation.From = 0.0; fadeInAnimation.To = 1.0; fadeInAnimation.Duration = new Duration(TimeSpan.FromSeconds(2)); DoubleAnimation fadeOutAnimation = new DoubleAnimation(); fadeOutAnimation.From = 1.0; fadeOutAnimation.To = 0.1; fadeOutAnimation.Duration = new Duration(TimeSpan.FromSeconds(2)); DoubleAnimation planetConquerOneAnimation = new DoubleAnimation(); planetConquerOneAnimation.From = 0.0; planetConquerOneAnimation.To = 1.0; planetConquerOneAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.3)); planetConquerOneAnimation.AutoReverse = true; DoubleAnimation planetConquerTwoAnimation = new DoubleAnimation(); planetConquerTwoAnimation.From = 0.0; planetConquerTwoAnimation.To = 1.0; planetConquerTwoAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.3)); planetConquerTwoAnimation.AutoReverse = true; gameOverStoryboard = new Storyboard(); HumanConquerStoryboard = new Storyboard(); AIConquerStoryboard = new Storyboard(); gameOverStoryboard.Children.Add(fadeInAnimation); gameOverStoryboard.Children.Add(fadeOutAnimation); HumanConquerStoryboard.Children.Add(planetConquerOneAnimation); AIConquerStoryboard.Children.Add(planetConquerTwoAnimation); Storyboard.SetTargetName(fadeInAnimation, WinnerLabel.Name); Storyboard.SetTargetProperty(fadeInAnimation, new PropertyPath(Rectangle.OpacityProperty)); Storyboard.SetTargetName(fadeOutAnimation, GameBackground.Name); Storyboard.SetTargetProperty(fadeOutAnimation, new PropertyPath(Rectangle.OpacityProperty)); Storyboard.SetTargetName(planetConquerOneAnimation, planetConquerOne.Name); Storyboard.SetTargetProperty(planetConquerOneAnimation, new PropertyPath(Rectangle.OpacityProperty)); Storyboard.SetTargetName(planetConquerTwoAnimation, planetConquerTwo.Name); Storyboard.SetTargetProperty(planetConquerTwoAnimation, new PropertyPath(Rectangle.OpacityProperty)); soundEffectPlayer.PlayStartGameSound(); if (!player1turn && engine.CurrentGame.GameType == GameType.LocalComputer) { PlayerTurnLabel.Visibility = Visibility.Hidden; ComputerTurnLabel.Visibility = Visibility.Visible; MakeAIMove(); } else if (engine.CurrentGame.GameType == GameType.LocalMultiplayer) { PlayerTurnLabel.Visibility = Visibility.Hidden; ComputerTurnLabel.Visibility = Visibility.Hidden; if (player1turn) PlayerOneTurnLabel.Visibility = Visibility.Visible; else PlayerTwoTurnLabel.Visibility = Visibility.Visible; } }
private async Task StartNetworkGame(string playerName, LidgrenKulamiPeer.KulamiPeer networkPeer) { shouldBreakOut = false; bool shouldContinue = true; bool terminate = false; Random rnd = new Random(); DateTime start = DateTime.Now; DateTime end; bool keepWaiting; if (networkPeer.listener.connection == null) keepWaiting = true; else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.None) keepWaiting = true; else keepWaiting = (networkPeer.listener.connection.Status != Lidgren.Network.NetConnectionStatus.Connected); while (keepWaiting) { if(shouldBreakOut) { terminate = true; break; } await Task.Delay(1000); Console.WriteLine("Waiting for connection"); if (networkPeer.listener.connection == null) keepWaiting = true; else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.None) keepWaiting = true; else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Disconnected) { keepWaiting = true; networkPeer.killPeer(); networkPeer = null; Console.WriteLine("reconnecting..."); networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); networkPeer.Start(); } else keepWaiting = (networkPeer.listener.connection.Status != Lidgren.Network.NetConnectionStatus.Connected); end = DateTime.Now; if ((end - start).TotalSeconds > 20) { shouldContinue = false; networkPeer.killPeer(); networkPeer = null; break; } } if (terminate) { Console.WriteLine("No Longer Looking For Connections. Exiting to Main Menu"); } else if (!shouldContinue) { Switcher.Switch(new NoConnectionsFoundPage()); } else { bool connectionLost = false; networkPeer.sendMove(playerName); string opponentName = networkPeer.getMove(); while (opponentName == null) { await Task.Delay(1000); opponentName = networkPeer.getMove(); } Switcher.Switch(new OpponentNamePage(opponentName)); await Task.Delay(3000); int networkingBoardNum = 0; int myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); string move = networkPeer.getMove(); while (move == null) { if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Connected) { await Task.Delay(1000); move = networkPeer.getMove(); } else { connectionLost = true; break; } } if (!connectionLost) { int opponentRandomBoardNum = Convert.ToInt32(move); networkingBoardNum = (myRandomBoardNum + opponentRandomBoardNum) / 2; while (myRandomBoardNum == opponentRandomBoardNum) { myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); move = networkPeer.getMove(); while (move == null) { if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Connected) { await Task.Delay(1000); move = networkPeer.getMove(); } else { connectionLost = true; break; } } opponentRandomBoardNum = Convert.ToInt32(move); } if (!connectionLost) { bool meFirst; if (myRandomBoardNum > opponentRandomBoardNum) meFirst = true; else meFirst = false; Switcher.Switch(new LANGamePage(networkPeer, networkingBoardNum, meFirst, playerName, opponentName)); } else { Switcher.Switch(new ConnectionLostPage()); } } else { Switcher.Switch(new ConnectionLostPage()); } } }
private async void NextButtonClick(object sender, RoutedEventArgs e) { soundEffectPlayer.ButtonSound(); string playerName = (string) LANPlayerNameTextBox.Text; if (playerName == "") playerName = "Anonymous"; LidgrenKulamiPeer.KulamiPeer networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); networkPeer.Start(); Switcher.Switch(new WaitingForConnectionPage(networkPeer)); await StartNetworkGame(playerName, networkPeer); }
private async Task StartNetworkGame(string playerName, LidgrenKulamiPeer.KulamiPeer networkPeer) { shouldBreakOut = false; bool shouldContinue = true; bool terminate = false; Random rnd = new Random(); DateTime start = DateTime.Now; DateTime end; bool keepWaiting; if (networkPeer.listener.connection == null) { keepWaiting = true; } else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.None) { keepWaiting = true; } else { keepWaiting = (networkPeer.listener.connection.Status != Lidgren.Network.NetConnectionStatus.Connected); } while (keepWaiting) { if (shouldBreakOut) { terminate = true; break; } await Task.Delay(1000); Console.WriteLine("Waiting for connection"); if (networkPeer.listener.connection == null) { keepWaiting = true; } else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.None) { keepWaiting = true; } else if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Disconnected) { keepWaiting = true; networkPeer.killPeer(); networkPeer = null; Console.WriteLine("reconnecting..."); networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); networkPeer.Start(); } else { keepWaiting = (networkPeer.listener.connection.Status != Lidgren.Network.NetConnectionStatus.Connected); } end = DateTime.Now; if ((end - start).TotalSeconds > 20) { shouldContinue = false; networkPeer.killPeer(); networkPeer = null; break; } } if (terminate) { Console.WriteLine("No Longer Looking For Connections. Exiting to Main Menu"); } else if (!shouldContinue) { Switcher.Switch(new NoConnectionsFoundPage()); } else { bool connectionLost = false; networkPeer.sendMove(playerName); string opponentName = networkPeer.getMove(); while (opponentName == null) { await Task.Delay(1000); opponentName = networkPeer.getMove(); } Switcher.Switch(new OpponentNamePage(opponentName)); await Task.Delay(3000); int networkingBoardNum = 0; int myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); string move = networkPeer.getMove(); while (move == null) { if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Connected) { await Task.Delay(1000); move = networkPeer.getMove(); } else { connectionLost = true; break; } } if (!connectionLost) { int opponentRandomBoardNum = Convert.ToInt32(move); networkingBoardNum = (myRandomBoardNum + opponentRandomBoardNum) / 2; while (myRandomBoardNum == opponentRandomBoardNum) { myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); move = networkPeer.getMove(); while (move == null) { if (networkPeer.listener.connection.Status == Lidgren.Network.NetConnectionStatus.Connected) { await Task.Delay(1000); move = networkPeer.getMove(); } else { connectionLost = true; break; } } opponentRandomBoardNum = Convert.ToInt32(move); } if (!connectionLost) { bool meFirst; if (myRandomBoardNum > opponentRandomBoardNum) { meFirst = true; } else { meFirst = false; } Switcher.Switch(new LANGamePage(networkPeer, networkingBoardNum, meFirst, playerName, opponentName)); } else { Switcher.Switch(new ConnectionLostPage()); } } else { Switcher.Switch(new ConnectionLostPage()); } } }
private void Disconnect() { if (networkPeer != null) { networkPeer.killPeer(); networkPeer = null; } connected = false; Switcher.Switch(new ConnectionLostPage()); }
private async void planetBtn_Click(object sender, RoutedEventArgs e) { if (!engine.CurrentGame.IsGameOver() && connected) { Button btn = sender as Button; string btnName = btn.Name.ToString(); int row, col; row = Convert.ToInt32(btnName.Substring(6, 1)); col = Convert.ToInt32(btnName.Substring(7, 1)); Console.WriteLine(row + " " + col); if (engine.CurrentGame.IsValidMove(row, col)) { if (player1turn) { MakeHumanMove(btn, row, col, myColor); if (IsConnected()) { networkPeer.sendMove("R" + row.ToString() + col.ToString()); } else { Disconnect(); } PlayerTurnLabel.Visibility = Visibility.Hidden; OpponentTurnLabel.Visibility = Visibility.Visible; if (!engine.CurrentGame.IsGameOver() && connected) { if (!IsConnected()) { Disconnect(); } else { try { await MakeOpponentMove(); } catch { } } } } if (engine.CurrentGame.IsGameOver()) { DisableAllMovesOnBoard(); await Task.Delay(100); CaptureGameBoard(); soundTrackMediaPlayer.Close(); gameOverStoryboard.Begin(GameBackground); if (engine.CurrentGame.GameType != GameType.LocalMultiplayer) { if (engine.CurrentGame.GameStats.RedPoints > engine.CurrentGame.GameStats.BluePoints) { if (myColor == "Red") { WinnerLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); WinnerLabel.Content = "You Win!"; soundEffectPlayer.WinSound(); } else { WinnerLabel.Content = "You Lose!"; soundEffectPlayer.LostSound(); } } else if (engine.CurrentGame.GameStats.RedPoints < engine.CurrentGame.GameStats.BluePoints) { if (myColor == "Blue") { WinnerLabel.Content = "You Win!"; soundEffectPlayer.WinSound(); } else { WinnerLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); WinnerLabel.Content = "You Lose!"; soundEffectPlayer.LostSound(); } } else { WinnerLabel.Content = "It's a tie!"; } } checkConnect.Stop(); await Task.Delay(4000); gameOverStoryboard.Begin(GameBackground); soundEffectPlayer.Stop(); soundEffectPlayer.Close(); soundTrackMediaPlayer.Stop(); soundTrackMediaPlayer.Close(); networkPeer.killPeer(); networkPeer = null; if (myColor == "Blue") { Switcher.Switch(new Scores(engine.CurrentGame.GameStats, myName, opponentsName)); } else { Switcher.Switch(new Scores(engine.CurrentGame.GameStats, opponentsName, myName)); } } } } }
private void yesButton_Click(object sender, RoutedEventArgs e) { checkConnect.Stop(); networkPeer.killPeer(); networkPeer = null; soundEffectPlayer.Stop(); soundEffectPlayer.Close(); soundTrackMediaPlayer.Stop(); soundTrackMediaPlayer.Close(); Switcher.Switch(new MainPage()); }
public LANGamePage(LidgrenKulamiPeer.KulamiPeer nPeer, int boardNum, bool meFirst, string mName, string oName) { InitializeComponent(); networkPeer = nPeer; myName = mName; opponentsName = oName; if (meFirst) { PlayerTurnLabel.Visibility = System.Windows.Visibility.Visible; PlayerTurnLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); fuelIndicator1.Visibility = Visibility.Visible; OpponentTurnLabel.Visibility = System.Windows.Visibility.Hidden; player1turn = true; myColor = "Red"; opponentsColor = "Blue"; } else { PlayerTurnLabel.Visibility = System.Windows.Visibility.Hidden; fuelIndicator2.Visibility = System.Windows.Visibility.Visible; OpponentTurnLabel.Visibility = System.Windows.Visibility.Visible; OpponentTurnLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); player1turn = false; myColor = "Blue"; opponentsColor = "Red"; } string songPath = startupPath + "/sound/music/Soundtrack.mp3"; soundTrackMediaPlayer.Open(new Uri(songPath)); soundTrackMediaPlayer.MediaEnded += new EventHandler(Song_Ended); if (!SoundSetting.MusicOn) soundTrackMediaPlayer.IsMuted = true; soundTrackMediaPlayer.Play(); buttonNames = new Dictionary<string, Button>(); allButtons = GameBoard.Children.OfType<Button>(); foreach (Button b in allButtons) { buttonNames.Add(b.Name.ToString(), b); } engine = new KulamiEngine(); engine.StartGame(GameType.LANMultiplayer, boardNum); soundEffectPlayer.PlayStartGameSound(); InitializeImages(boardNum); if (!meFirst) { if (!IsConnected()) { Disconnect(); } else { try { MakeOpponentMove(); } catch { } } } checkConnect.Elapsed += new ElapsedEventHandler(IfConnecting); checkConnect.AutoReset = true; checkConnect.Enabled = true; }
private async void planetBtn_Click(object sender, RoutedEventArgs e) { if (!engine.CurrentGame.IsGameOver() && connected) { Button btn = sender as Button; string btnName = btn.Name.ToString(); int row, col; row = Convert.ToInt32(btnName.Substring(6, 1)); col = Convert.ToInt32(btnName.Substring(7, 1)); Console.WriteLine(row + " " + col); if (engine.CurrentGame.IsValidMove(row, col)) { if (player1turn) { MakeHumanMove(btn, row, col, myColor); if (IsConnected()) networkPeer.sendMove("R" + row.ToString() + col.ToString()); else Disconnect(); PlayerTurnLabel.Visibility = Visibility.Hidden; OpponentTurnLabel.Visibility = Visibility.Visible; if (!engine.CurrentGame.IsGameOver() && connected) { if (!IsConnected()) { Disconnect(); } else { try { await MakeOpponentMove(); } catch { } } } } if (engine.CurrentGame.IsGameOver()) { DisableAllMovesOnBoard(); await Task.Delay(100); CaptureGameBoard(); soundTrackMediaPlayer.Close(); gameOverStoryboard.Begin(GameBackground); if (engine.CurrentGame.GameType != GameType.LocalMultiplayer) { if (engine.CurrentGame.GameStats.RedPoints > engine.CurrentGame.GameStats.BluePoints) { if (myColor == "Red") { WinnerLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); WinnerLabel.Content = "You Win!"; soundEffectPlayer.WinSound(); } else { WinnerLabel.Content = "You Lose!"; soundEffectPlayer.LostSound(); } } else if (engine.CurrentGame.GameStats.RedPoints < engine.CurrentGame.GameStats.BluePoints) { if (myColor == "Blue") { WinnerLabel.Content = "You Win!"; soundEffectPlayer.WinSound(); } else { WinnerLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); WinnerLabel.Content = "You Lose!"; soundEffectPlayer.LostSound(); } } else { WinnerLabel.Content = "It's a tie!"; } } checkConnect.Stop(); await Task.Delay(4000); gameOverStoryboard.Begin(GameBackground); soundEffectPlayer.Stop(); soundEffectPlayer.Close(); soundTrackMediaPlayer.Stop(); soundTrackMediaPlayer.Close(); networkPeer.killPeer(); networkPeer = null; if(myColor == "Blue") Switcher.Switch(new Scores(engine.CurrentGame.GameStats, myName, opponentsName)); else Switcher.Switch(new Scores(engine.CurrentGame.GameStats, opponentsName, myName)); } } } }
public LANGamePage(LidgrenKulamiPeer.KulamiPeer nPeer, int boardNum, bool meFirst, string mName, string oName) { InitializeComponent(); networkPeer = nPeer; myName = mName; opponentsName = oName; if (meFirst) { PlayerTurnLabel.Visibility = System.Windows.Visibility.Visible; PlayerTurnLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); fuelIndicator1.Visibility = Visibility.Visible; OpponentTurnLabel.Visibility = System.Windows.Visibility.Hidden; player1turn = true; myColor = "Red"; opponentsColor = "Blue"; } else { PlayerTurnLabel.Visibility = System.Windows.Visibility.Hidden; fuelIndicator2.Visibility = System.Windows.Visibility.Visible; OpponentTurnLabel.Visibility = System.Windows.Visibility.Visible; OpponentTurnLabel.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFE85252")); player1turn = false; myColor = "Blue"; opponentsColor = "Red"; } string songPath = startupPath + "/sound/music/Soundtrack.mp3"; soundTrackMediaPlayer.Open(new Uri(songPath)); soundTrackMediaPlayer.MediaEnded += new EventHandler(Song_Ended); if (!SoundSetting.MusicOn) { soundTrackMediaPlayer.IsMuted = true; } soundTrackMediaPlayer.Play(); buttonNames = new Dictionary <string, Button>(); allButtons = GameBoard.Children.OfType <Button>(); foreach (Button b in allButtons) { buttonNames.Add(b.Name.ToString(), b); } engine = new KulamiEngine(); engine.StartGame(GameType.LANMultiplayer, boardNum); soundEffectPlayer.PlayStartGameSound(); InitializeImages(boardNum); if (!meFirst) { if (!IsConnected()) { Disconnect(); } else { try { MakeOpponentMove(); } catch { } } } checkConnect.Elapsed += new ElapsedEventHandler(IfConnecting); checkConnect.AutoReset = true; checkConnect.Enabled = true; }
public GamePage(bool easyLevel, GameType gType) { InitializeComponent(); string songPath = startupPath + "/sound/music/Soundtrack.mp3"; soundTrackMediaPlayer.Open(new Uri(songPath)); soundTrackMediaPlayer.MediaEnded += new EventHandler(Song_Ended); soundTrackMediaPlayer.Play(); if (gType == GameType.LANMultiplayer) { networkPeer = new LidgrenKulamiPeer.KulamiPeer(3070); //wait until connection is established } buttonNames = new Dictionary <string, Button>(); allButtons = GameBackground.Children.OfType <Button>(); foreach (Button b in allButtons) { buttonNames.Add(b.Name.ToString(), b); } int networkingBoardNum = 0; if (gType == GameType.LANMultiplayer) { Random rnd = new Random(); int myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); int opponentRandomBoardNum = Convert.ToInt32(networkPeer.getMove()); networkingBoardNum = (myRandomBoardNum + opponentRandomBoardNum) / 2; while (myRandomBoardNum == opponentRandomBoardNum) { myRandomBoardNum = rnd.Next(1, 8); networkPeer.sendMove(myRandomBoardNum.ToString()); opponentRandomBoardNum = Convert.ToInt32(networkPeer.getMove()); } if (myRandomBoardNum > opponentRandomBoardNum) { player1turn = true; } else { player1turn = false; } } engine = new KulamiEngine(); if (gType == GameType.LANMultiplayer) { engine.StartGame(gType, networkingBoardNum); } else { engine.StartGame(gType); } easyLevelAIOn = easyLevel; if (engine.CurrentGame.GameType != GameType.LANMultiplayer) { Random rndMoveFirst = new Random(); int playFirst = rndMoveFirst.Next(0, 2); if (playFirst == 1) { player1turn = true; } else { player1turn = false; } } if (engine.CurrentGame.GameType == GameType.LocalComputer) { if (easyLevelAIOn) { easyAI = new EasyAI(engine.CurrentGame); } else { hardAI = new HardAI(engine.CurrentGame); } } ImageBrush ib = new ImageBrush(); ib.ImageSource = new BitmapImage(new Uri(startupPath + "/images/GameBoard" + engine.GameBoardNumber + ".png", UriKind.Absolute)); BoardBackground.Background = ib; ImageBrush gb = new ImageBrush(); gb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/GameBackground.jpg", UriKind.Absolute)); backgroundButton.Background = gb; ImageBrush sb = new ImageBrush(); sb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/soundOnButton.png", UriKind.Absolute)); toggleSound_Btn.Background = sb; ImageBrush rb = new ImageBrush(); rb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/radarOnButton.png", UriKind.Absolute)); toggleRadar_Btn.Background = rb; ImageBrush mb = new ImageBrush(); mb.ImageSource = new BitmapImage(new Uri(startupPath + "/images/musicOnButton.png", UriKind.Absolute)); toggleMusicBtn.Background = mb; ImageBrush ButtonImage = new ImageBrush(); ButtonImage.ImageSource = new BitmapImage(new Uri(startupPath + "/images/GenericPlan.png", UriKind.Absolute)); ApplyBackgroundButtons(ButtonImage); ImageBrush RedConquer = new ImageBrush(); RedConquer.ImageSource = new BitmapImage(new Uri(startupPath + "/images/PlanConquerRed.png", UriKind.Absolute)); planetConquerOne.Background = RedConquer; ImageBrush BlueConquer = new ImageBrush(); BlueConquer.ImageSource = new BitmapImage(new Uri(startupPath + "/images/PlanConquerBlue.png", UriKind.Absolute)); planetConquerTwo.Background = BlueConquer; DoubleAnimation fadeInAnimation = new DoubleAnimation(); fadeInAnimation.From = 0.0; fadeInAnimation.To = 1.0; fadeInAnimation.Duration = new Duration(TimeSpan.FromSeconds(2)); DoubleAnimation fadeOutAnimation = new DoubleAnimation(); fadeOutAnimation.From = 1.0; fadeOutAnimation.To = 0.1; fadeOutAnimation.Duration = new Duration(TimeSpan.FromSeconds(2)); DoubleAnimation planetConquerOneAnimation = new DoubleAnimation(); planetConquerOneAnimation.From = 0.0; planetConquerOneAnimation.To = 1.0; planetConquerOneAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.3)); planetConquerOneAnimation.AutoReverse = true; DoubleAnimation planetConquerTwoAnimation = new DoubleAnimation(); planetConquerTwoAnimation.From = 0.0; planetConquerTwoAnimation.To = 1.0; planetConquerTwoAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.3)); planetConquerTwoAnimation.AutoReverse = true; gameOverStoryboard = new Storyboard(); HumanConquerStoryboard = new Storyboard(); AIConquerStoryboard = new Storyboard(); gameOverStoryboard.Children.Add(fadeInAnimation); gameOverStoryboard.Children.Add(fadeOutAnimation); HumanConquerStoryboard.Children.Add(planetConquerOneAnimation); AIConquerStoryboard.Children.Add(planetConquerTwoAnimation); Storyboard.SetTargetName(fadeInAnimation, WinnerLabel.Name); Storyboard.SetTargetProperty(fadeInAnimation, new PropertyPath(Rectangle.OpacityProperty)); Storyboard.SetTargetName(fadeOutAnimation, GameBackground.Name); Storyboard.SetTargetProperty(fadeOutAnimation, new PropertyPath(Rectangle.OpacityProperty)); Storyboard.SetTargetName(planetConquerOneAnimation, planetConquerOne.Name); Storyboard.SetTargetProperty(planetConquerOneAnimation, new PropertyPath(Rectangle.OpacityProperty)); Storyboard.SetTargetName(planetConquerTwoAnimation, planetConquerTwo.Name); Storyboard.SetTargetProperty(planetConquerTwoAnimation, new PropertyPath(Rectangle.OpacityProperty)); soundEffectPlayer.PlayStartGameSound(); if (!player1turn && engine.CurrentGame.GameType == GameType.LocalComputer) { PlayerTurnLabel.Visibility = Visibility.Hidden; ComputerTurnLabel.Visibility = Visibility.Visible; MakeAIMove(); } else if (engine.CurrentGame.GameType == GameType.LocalMultiplayer) { PlayerTurnLabel.Visibility = Visibility.Hidden; ComputerTurnLabel.Visibility = Visibility.Hidden; if (player1turn) { PlayerOneTurnLabel.Visibility = Visibility.Visible; } else { PlayerTwoTurnLabel.Visibility = Visibility.Visible; } } }