public void Print(SnakeModel model) { var sb = new StringBuilder(); for (var j = 0; j < model.NumRows; j++) { for (var i = 0; i < model.NumColumns; i++) { sb.AppendFormat("{0,4}", model.Array[i, j]); } sb.AppendLine(); } try { using (var w = new StreamWriter(Path)) { w.WriteLine(sb.ToString()); MessageBox.Show("Данные успешно сохранены", "Сохранение файла", MessageBoxButtons.OK, MessageBoxIcon.None); logger.Info("Массив успешно сохранен в файл."); } } catch (IOException ex) { logger.Info("Ошибка сохранения в файл. " + ex.ToString()); MessageBox.Show("Произошла ошибка \n" + ex.ToString(), "Печать в файл", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public SnakeViewModel(SnakeModel model) { _model = model; _model.GameOver += Model_GameOver; _model.SnakeMoved += RefreshTable; Fields = new ObservableCollection <ViewField>(); NewGame = new DelegateCommand(OnNewGame); Control = new DelegateCommand(KeyHandler); LoadGameOpenCommand = new DelegateCommand(param => { Games = new ObservableCollection <SaveEntry>(_model.List()); OnLoadGameOpen(); }); LoadGameCloseCommand = new DelegateCommand( param => SelectedGame != null, param => { OnLoadGameClose(SelectedGame.Name); }); SaveGameOpenCommand = new DelegateCommand(param => { Games = new ObservableCollection <SaveEntry>(_model.List()); OnSaveGameOpen(); }); SaveGameCloseCommand = new DelegateCommand( param => NewName.Length > 0, param => { OnSaveGameClose(NewName); }); //MakeGameTable(); }
public void Print(SnakeModel model) { try { DataGrid.Rows.Clear(); DataGrid.ColumnCount = model.NumColumns; DataGrid.RowCount = model.NumRows; for (var j = 0; j < model.NumRows; j++) { for (var i = 0; i < model.NumColumns; i++) { DataGrid.Rows[j].Cells[i].Value = model.Array[i, j]; } } logger.Info("Массив успешно отображен в DataGrid."); } catch (InvalidOperationException ex) { logger.Warn("Ошибка отображения массива в DataGrid. " + ex.ToString()); MessageBox.Show(ex.ToString()); } catch (ArgumentException ex) { logger.Warn("Ошибка отображения массива в DataGrid. " + ex.ToString()); MessageBox.Show(ex.ToString()); } catch (IndexOutOfRangeException ex) { logger.Warn("Ошибка отображения массива в DataGrid. " + ex.ToString()); MessageBox.Show(ex.ToString()); } }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var model = new SnakeModel(10, 10); Form1 view = new Form1(); view.InitView(10, 10); view.SetTextureMap(new Dictionary <SnakeTile, Image>() { { SnakeTile.Blank, Image.FromFile(@"C:\Users\xiwyu\Pictures\blank.bmp") }, { SnakeTile.Snake, Image.FromFile(@"C:\Users\xiwyu\Pictures\snake.bmp") }, { SnakeTile.Food, Image.FromFile(@"C:\Users\xiwyu\Pictures\food.bmp") }, { SnakeTile.Grass, Image.FromFile(@"C:\Users\xiwyu\Pictures\grass.bmp") } }); view.KeyPreview = true; var controller = new WinFormController <SnakeTile>(model, view); view.KeyDown += controller.HandelUserInput; controller.InitView(); controller.BindSelfToTimer(view.Timer1); Application.Run(view); }
public SnakeBlockController(Coordinate _blockCoordinate, SnakeBlockController _nextBlock, GameObject _blockPrefab, SnakeModel _model) { blockCoordinate = _blockCoordinate; nextBlock = _nextBlock; model = _model; block = GameObject.Instantiate(_blockPrefab, UtilityFunctions.GetTransformsForCoordinatesOnBoardPlane(blockCoordinate, 0.6f), Quaternion.identity); }
public Snake(SnakeModel snakeModel) { Id = snakeModel.Id; Name = snakeModel.Name; Health = snakeModel.Health; Body = snakeModel.Body.AsPoints(); }
public void Start() { // find the model m_Model = FindObjectOfType <SnakeModel>(); // create the 3 initial blocks var obj = Instantiate(blockReference, Vector3.zero, Quaternion.identity); m_Model.SnakeBlocks.Add(obj); obj = Instantiate(blockReference, new Vector3(-1, 0, 0), Quaternion.identity); m_Model.SnakeBlocks.Add(obj); obj = Instantiate(blockReference, new Vector3(-2, 0, 0), Quaternion.identity); m_Model.SnakeBlocks.Add(obj); // fruit m_Fruit = Instantiate( blockReference, new Vector3( UnityEngine.Random.Range(-10, 10), UnityEngine.Random.Range(-10, 10), 0), Quaternion.identity); StartCoroutine(Move()); }
private void Initialize() { ChangeDirectionCommand = new PlayerControlCommnad(ChangeDirection, CanChangeDirection); SnakeObj = new SnakeModel(SnakeBodyPart.GetDefaultBodyPart()); PointObj = new PointModel(); SnakeTimer = new DispatcherSnakeTime(UpdateBoard); }
// Use this for initialization public void Start() { snake = gameManager.GameData.Snake; foodController = gamePanel.GetComponent <FoodController> (); snakeView.Start(); InstantiateSnake(); direction = snake.Direction; StartMoving(); }
private const int panelSize = 12; //The size of individual field panels. #endregion #region Constructors /// <summary> /// Constructor for the Form window. Creates a new model and subscribes to its events. /// </summary> public SnakeForm() { InitializeComponent(); model = new SnakeModel(new TextFilePersistence()); model.MapChanged += new EventHandler <MapChangedEventArgs>(Model_MapChanged); model.TileChanged += new EventHandler <TileChangedEventArgs>(Model_TileChanged); model.GameOver += new EventHandler <GameOverEventArgs>(Model_GameOver); }
public static void ChanceOtherFoodToAppear(List <FoodModel> foods, SnakeModel snake) { if (Random.Next(0, 20) == 10 && !IsGoldenFoodShown) { foods.Add(CreateGoldenFood(snake)); } else if (Random.Next(0, 4) == 2 && !IsSpecialFoodShown) { foods.Add(CreateSpecialFood(snake)); } }
private static FoodModel CreateGoldenFood(SnakeModel snake) { FoodModel food = new FoodModel(); food.Type = FoodType.Gold; food.NewPosition(snake); IsGoldenFoodShown = true; return(food); }
private static FoodModel CreateSpecialFood(SnakeModel snake) { FoodModel food = new FoodModel(); food.Type = FoodType.Special; food.NewPosition(snake); IsSpecialFoodShown = true; return(food); }
private static Scorer GetScorer() { SnakeModel model = SnakeApplication.GetInstance().model; if (model != null && model.scorer != null) { return(model.scorer); } else { return(new Scorer()); } }
public void Initialize() { mock = new Mock <IPersistence>(); mock.Setup(x => x.LoadLevel(It.IsAny <string>())); mock.SetupGet(x => x.MapSize).Returns(7); mock.SetupGet(x => x.Walls).Returns(new System.Collections.Generic.List <Tuple <int, int> >() { new Tuple <int, int>(0, 0) }); model = new SnakeModel(mock.Object); wrappedModel = new PrivateObject(model); }
private bool IsInsideSnakeBody(SnakeModel snake) { foreach (var bodyPart in snake.BodyParts) { Point pos = new Point(bodyPart.CurrentPosition.X, bodyPart.CurrentPosition.Y); if (pos.X == Position.X && pos.Y == Position.Y) { return(true); } } return(false); }
/// <summary> /// Startup eventhandler. Creates components, hooks up events. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void App_Startup(object sender, StartupEventArgs e) { dataAccess = new TextFilePersistence(); model = new SnakeModel(dataAccess); model.GameOver += new EventHandler <GameOverEventArgs>(Model_GameOver); viewModel = new SnakeViewModel(model); viewModel.ExitGame += new EventHandler(ViewModel_Exit); viewModel.LoadLevel += new EventHandler(ViewModel_LoadLevel); window = new SnakeWindow(); window.DataContext = viewModel; window.Show(); }
static void Main() { IModel <SnakeTile> model = new SnakeModel(20, 15); SimpleConsoleView <SnakeTile> simpleConsoleView = new SimpleConsoleView <SnakeTile>(); ColorfulConsoleView <SnakeTile> colorful = new ColorfulConsoleView <SnakeTile>(); simpleConsoleView.SetTextureMap(new Dictionary <SnakeTile, string> { { SnakeTile.Grass, "w" }, { SnakeTile.Blank, " " }, { SnakeTile.Snake, "@" }, { SnakeTile.Food, "*" } }); colorful.SetTextureMap(new Dictionary <SnakeTile, string> { { SnakeTile.Grass, "w" }, { SnakeTile.Blank, " " }, { SnakeTile.Snake, "@" }, { SnakeTile.Food, "*" } }); colorful.SetTextureMap(new Dictionary <SnakeTile, ConsoleColor> { { SnakeTile.Grass, ConsoleColor.Green }, { SnakeTile.Snake, ConsoleColor.White }, { SnakeTile.Food, ConsoleColor.Red }, { SnakeTile.Blank, ConsoleColor.Black } }); IView <SnakeTile> view; Console.WriteLine("你想要:A.黑白电视 B.彩色电视:"); string input = Console.ReadLine(); if (input.StartsWith("B")) { view = colorful; } else { view = simpleConsoleView; } Controller <SnakeTile> controller = new Controller <SnakeTile>(model, view); controller.GameMain(); }
public void NewPosition(SnakeModel snake) { AsRectangle = new Rectangle(); switch (Type) { case FoodType.Normal: AsRectangle.Fill = Settings.FoodColor; break; case FoodType.Gold: AsRectangle.Fill = Brushes.Gold; break; case FoodType.Special: AsRectangle.Fill = Brushes.Pink; break; } AsRectangle.Width = Size; AsRectangle.Height = Size; while (true) { Position = new Point(Random.Next(0, 500 / Size) * Size, Random.Next(0, 500 / Size) * Size); if (IsInsideSnakeBody(snake)) { continue; } if (MainWindow.CanShowWalls) { if (IsInsideWalls()) { continue; } } break; } Canvas.SetLeft(AsRectangle, Position.X); Canvas.SetTop(AsRectangle, Position.Y); }
public SnakeManager() { playField = new PlayFieldModel(); fruit = new FruitModel(); snake = new SnakeModel { Bodyes = new LinkedList <SnakeBodyPartModel>() }; snake.Bodyes.AddFirst(new SnakeBodyPartModel { Сoordinates = new СoordinatesModel(110, 110) }); snake.Bodyes.AddFirst(new SnakeBodyPartModel { Сoordinates = new СoordinatesModel(100, 110) }); snake.Bodyes.AddFirst(new SnakeBodyPartModel { Сoordinates = new СoordinatesModel(90, 110) }); }
private void App_StartUp(object sender, StartupEventArgs e) { DbPersistence _dataAccess = new DbPersistence("name=SnakeModel"); _model = new SnakeModel(_dataAccess); _viewmodel = new SnakeViewModel(_model); _viewmodel.LoadGameOpen += new EventHandler(ViewModel_LoadGameOpen); _viewmodel.LoadGameClose += new EventHandler <String>(ViewModel_LoadGameClose); _viewmodel.SaveGameOpen += new EventHandler(SaveGameOpen); _viewmodel.SaveGameClose += new EventHandler <String>(SaveGameClose); _view = new MainWindow(); _view.DataContext = _viewmodel; _view.Show(); }
public IViewModel Construct(SnakeStruct str, Vector2 positionForSpawn) { var snakeGo = new GameObject("Snake").AddComponent <SnakeView>(); var snakeTransform = snakeGo.transform; snakeTransform.position = positionForSpawn; var model = new SnakeModel(str, snakeTransform); for (int i = 0; i < str.BodyCount; i++) { model.AddingNewPiece(); } if (snakeGo.TryGetComponent <Rigidbody2D>(out var rigidbody2D)) { rigidbody2D.gravityScale = 0.0f; } return(new SnakeViewModel(model, snakeGo, snakeGo.gameObject)); }
public event EventHandler LoadLevel; //Event for loading a new level. #endregion #region Constructors /// <summary> /// SnakeViewModel constructor /// </summary> /// <param name="model"></param> public SnakeViewModel(SnakeModel model) { //Set the model. this.model = model; //Subscribe to the events of the model. model.MapChanged += new EventHandler <MapChangedEventArgs>(Model_MapChanged); model.TileChanged += new EventHandler <TileChangedEventArgs>(Model_TileChanged); //Define the commands. UpCommand = new DelegateCommand(param => model.Direction = Direction.Up); DownCommand = new DelegateCommand(param => model.Direction = Direction.Down); LeftCommand = new DelegateCommand(param => model.Direction = Direction.Left); RightCommand = new DelegateCommand(param => model.Direction = Direction.Right); ExitCommand = new DelegateCommand(param => OnExit()); RestartCommand = new DelegateCommand(param => model.RestartLevel()); PauseCommand = new DelegateCommand(param => OnPause()); LoadCommand = new DelegateCommand(param => OnLoad()); //Initialize the fields collection. Fields = new ObservableCollection <ViewField>(); }
public void ChangeModel(SnakeModel model) { this.model = model; }
public ActionResult KeyPush(KeyModel model) { LobbyModel lobby = lobbies[getIndex(model.Username)]; SnakeModel hostPieceAdded = null; SnakeModel memPieceAdded = null; if (lobby.lost != "no") { return(Json(lobby, JsonRequestBehavior.AllowGet)); } int x; int y; bool isHost = false; if (lobby.Host == model.Username) { isHost = true; x = lobby.HostSnake.X; y = lobby.HostSnake.Y; } else { x = lobby.MemberSnake.X; y = lobby.MemberSnake.Y; } string key = model.Key; if (model.Drop) { if (isHost) { lobby.HostWalls.AddRange(lobby.HostBody); lobby.HostBody = new List <SnakeModel>(); } else { lobby.MemWalls.AddRange(lobby.MemBody); lobby.HostBody = new List <SnakeModel>(); } } if (key.CompareTo("w") == 0) { y = y - 1; if (y < 0) { y = 0; } } else if (key.CompareTo("a") == 0) { x = x - 1; if (x < 0) { x = 0; } } else if (key.CompareTo("s") == 0) { y = y + 1; if (y > MAXHEIGHT) { y = MAXHEIGHT; } } else if (key.CompareTo("d") == 0) { x += 1; if (x > MAXWIDTH) { x = MAXWIDTH; } } if (isHost) { lobby.HostBody.Add(new SnakeModel { X = lobby.HostSnake.X, Y = lobby.HostSnake.Y }); hostPieceAdded = lobby.HostSnake; lobby.HostBody.RemoveAt(0); lobby.HostSnake.X = x; lobby.HostSnake.Y = y; lobby.Board[x, y] = "hHead"; } else { lobby.MemBody.Add(new SnakeModel { X = lobby.MemberSnake.X, Y = lobby.MemberSnake.Y }); memPieceAdded = lobby.MemberSnake; lobby.MemBody.RemoveAt(0); lobby.MemberSnake.X = x; lobby.MemberSnake.Y = y; lobby.Board[x, y] = "hHead"; } if (lobby.MemberSnake.X == lobby.Fruit.X && lobby.MemberSnake.Y == lobby.Fruit.Y) { lobby.MemSize += 1; lobby.MemBody.Add(memPieceAdded); lobby.Fruit = newFruitLocation(lobby); } else if (lobby.HostSnake.X == lobby.Fruit.X && lobby.HostSnake.Y == lobby.Fruit.Y) { lobby.HostSize += 1; lobby.HostBody.Add(hostPieceAdded); lobby.Fruit = newFruitLocation(lobby); } if (checkWin(lobby, isHost)) { if (isHost) { lobby.lost = lobby.Member; } else { lobby.lost = lobby.Host; } } lobbies[getIndex(model.Username)] = lobby; return(Json(lobby, JsonRequestBehavior.AllowGet)); }
public SnakeController(SnakeManager _snakeManger) { model = new SnakeModel(); snakeManger = _snakeManger; }
public void SetModel(SnakeModel model) { this.model = model; }
public GameData() { snake = new SnakeModel(); food = new FoodModel(); }