Программирование для мобильных платформ. Windows Phone. Иван Трещев. Читать онлайн. Newlib. NEWLIB.NET

Автор: Иван Трещев
Издательство: Издательские решения
Серия:
Жанр произведения: Прочая образовательная литература
Год издания: 0
isbn: 9785449368690
Скачать книгу
игрового поля была использована следующая последовательность действий:

      Первая строка заполняется случайными неповторяющимися числами от 1 до 9. Далее для каждой следующей строки происходит особая перестановка элементов из первой строки такая, что судоку имеет решение и является верным. Затем в каждом блоке из трех строк (1—3, 4—6, 7—9) происходит случайная перестановка двух строк, если программа выбрала одинаковую строку, то перестановка не происходит, тоже самое делается и с столбцами. Далее переставляем местами 2 случайных блока по горизонтали и по вертикали, по тому же принципу как и строки со столбцами. Затем удаляются лишние клетки. В итоге получается уникальное судоку.

      Ниже приведен код из файла Game1:

      using System;

      using System.Collections.Generic;

      using System.Linq;

      using Microsoft.Xna.Framework;

      using Microsoft.Xna.Framework.Audio;

      using Microsoft.Xna.Framework.Content;

      using Microsoft.Xna.Framework.GamerServices;

      using Microsoft.Xna.Framework.Graphics;

      using Microsoft.Xna.Framework.Input;

      using Microsoft.Xna.Framework.Input.Touch;

      using Microsoft.Xna.Framework.Media;

      using System.IO.IsolatedStorage;

      using System.IO;

      namespace Sudoku

      {

      // Класс Field

      public class Field

      {

      // Квадрат

      public short Square {get; set;}

      // Значение

      public short Value {get; set;}

      // Стандартное

      public bool Standard {get; set;}

      // Повтор

      public bool Repeat {get; set;}

      }

      public class Game1: Microsoft.Xna.Framework.Game

      {

      GraphicsDeviceManager graphics;

      SpriteBatch spriteBatch;

      // Объявление переменных

      // Текстуры:

      Texture2D gameField;

      Texture2D doublePoint;

      Texture2D standartNumbers, errorNumbers;

      Texture2D menuUpdate, menuRecord;

      Texture2D [] numbersTexture = new Texture2D [10];

      // Массив элементов поля

      Field [,] field = new Field [9,9];

      // Массив чисел

      short [] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};

      // Время текущей игры, рекордное время

      int time, tempTime, recordTime;

      // Выбранная цифра

      byte chouseNum;

      // Время в представлении ЧЧ: ММ: СС

      string timeString;

      bool menuUp, menuRec;

      public Game1 ()

      {

      graphics = new GraphicsDeviceManager (this);

      Content.RootDirectory = " Content ";

      // Ориектация экрана

      graphics.SupportedOrientations = DisplayOrientation. Portrait;

      // Разрешение экрана

      graphics.PreferredBackBufferWidth = 480;

      graphics.PreferredBackBufferHeight = 800;

      // На полный экран

      graphics.IsFullScreen = true;

      // Частота кадра на Windows Phone по умолчанию – 30 кадров в секунду.

      TargetElapsedTime = TimeSpan.FromTicks (333333);

      // Дополнительный заряд аккумулятора заблокирован.

      InactiveSleepTime = TimeSpan.FromSeconds (1);

      // Тип жестов – нажатие

      TouchPanel. EnabledGestures = GestureType. Tap;

      }

      protected override void Initialize ()

      {

      base.Initialize ();

      }

      // Загрузка контента

      protected override void LoadContent ()

      {

      spriteBatch = new SpriteBatch (GraphicsDevice);

      // Загрузка текстур – фон, двоеточие, выделение стандартных и выбранных чисел, выделение ошибок,

      // сообщение об обновлении и информация о рекорде

      gameField = Content. Load <Texture2D> («GameField»);

      doublePoint = Content. Load <Texture2D> («d»);

      standartNumbers = Content. Load <Texture2D> («s»);

      errorNumbers = Content. Load <Texture2D> («error»);

      menuUpdate = Content. Load <Texture2D> («MenuUpdate»);

      menuRecord = Content. Load <Texture2D> («MenuRecord»);

      // Загрузка текстур цифр

      for (short i = 0; i <10; i++)

      {

      numbersTexture [i] = Content.Load<Texture2D>(i.ToString ());

      }

      // Созданние массиива объектов класса Field

      for (short i = 0; i <9; i++)

      {

      for