Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Требования к программно-аппаратным ресурсам

 

Требования к компьютеру и программному обеспечению помещены в таблице 3.1.1.

 

Процессор: 386 и выше
ОЗУ: 8Mb
Диск: 5Mb свободного пространства
ОC: Windows'95 и выше

Таблица 3.1.1 – Требования к аппаратно-программным ресурсам персонального компьютера

 

Дополнительных средств (принтер, сканер, дополнительные дисководы и т.д.) не требуется.

Для функционирования данного приложения на компьютере должна быть установлена ОС Windows 95 и выше. Программа написана на языке программирования C#.

 


 

Описание интерфейса для пользователя

 

При запуске программы появляется окно приложения, как показано на рисунке 3.2.1.

Рисунок 3.2.1 – Приложение «Судоку»

Слева расположено меню, на котором находятся cложность игры, новая игра, показать ответ, загрузить и сохранить игру, помощь и выход.

При нажатии на «Новая игра» приложение генерирует новое поле «Судоку» размером 9x9 (рисунок 3.2.2).

Рисунок 3.2.2 – Игровое приложение «Судоку», новая игра

Кнопка «Сохранить игру» сохранит вашу данную позицию в игре. (рисунок 3.2.3).

 

Рисунок 3.2.3 – Игровое приложение «Судоку», сохранить игру

 

Кнопка «Загрузить игру» загрузит вам ту карту, которую вы сохранили до операции загрузить (рисунок 3.2.4).

 

Рисунок 3.2.4 – Игровое приложение «Судоку», загрузить игру

Кнопка «Показать ответ» покажет вам на данный момент все элементы в игре, показ будет длится не более 5 секунд (рисунок 3.2.5).

 

Рисунок 3.2.5 – Игровое приложение «Судоку», показать ответ

При нажатии кнопки «Помощь» появится окно, с подсказкой как играть в игру cудоку и информация об авторе программы. (Рисунок 3.2.6)

 

 

Рисунок 3.2.6 – Игровое приложение «Судоку», помощь в игру cудоку

Выпадающий список сложности игры судоку (Рисунок 3.2.7), уровней:

− «Легкая» - легкие судоку для новичков, которые никогда не решали эту головоломку ну хотят с чего-то начать.

− «Средняя» - средней сложности для тех, кому легкий судоку уже не интересен, а сложные еще не под силу.

− «Тяжёлая» - что бы решить самые сложные судоку - Вам понадобиться хорошее логическое мышление, сосредоточенность и внимательность.

Рисунок 3.2.7 – Игровое приложение «Судоку», выпадающий список сложности.

 

При нажатии на «Выход» производится выход из программы.


Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
КПСПО31.08102.081ПЗ
Разраб.
Киман Е.А.
Провер.
Платонова Т.Ю
Реценз.
 
Н. Контр.
 
Утверд.
.
    ТЕСТИРОВАНИЕ
Лит.
Листов
 
НГАЭК, 2017  
4 Тестирование

 

Начинаем проверку с кнопки «Новая игра» (рис.3.2.2 ):

− Старое поле удаляется;

− Новое игровое поле генерируется;

Проверяем кнопку «Сохранение игры»:

Сохраняет данное игровое поле «Судоку» (рис.3.2.3 ) и генерируем новою игру(рис.4.1.).

 

Рисунок 4.1 – Игровое приложение «Судоку», сохранено и с генерирована новая игра

При вводе данных в ячейки игрового поля ошибок не обнаружено.

Кнопка «Загрузить игру»:

Загружает из памяти компьютера сохранённую (рис.4.2).

Рисунок 4.2 – Игровое приложение «Судоку», до и после загрузки игры

Далее тестируем кнопку «Показать ответ»:

Проверяет игровое поле на открытие всей карты «Судоку» (рисунок.4.3).

Рисунок 4.3 – Игровое приложение «Судоку», проверка открытия всей карты

Протестируем кнопку «Помощь»:

«Помощь» изучаем постановку игры (рисунок.4.4).

Рисунок 4.4 – Игровое приложение «Судоку», проверка постановки игры

После проверки кнопок «Новая игра», «Показать ответ», «Загрузить игру», «Сохранить игру», «помощь» ошибок не обнаружено.

Программа показала свою функциональность. Взаимодействие программы с пользователем удовлетворительное. Ошибок в организации программы и пропущенных команд, ошибок управления потоком, ошибок передачи и интерпретации данных не обнаружено. Высоких требований к производительности компьютера у программы нет.


Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
КПСПО31.08102.081ПЗ
Разраб.
Киман Е.А.
Провер.
Платонова Т.Ю
Реценз.
 
Н. Контр.
 
Утверд.
.
  ЗАКЛЮЧЕНИЕ
Лит.
Листов
 
НГАЭК, 2017  
ЗАКЛЮЧЕНИЕ

 

Цель курсового проекта достигнута, все задачи выполнены в полном объеме.

В ходе написания курсового проекта были изучены и углублены теоретические знания по учебной дисциплине «Основы алгоритмизации и программирования», сформированы навыки работы с научной литературой, научился качественно использовать информацию из интернета, изучены особенности разработки базы данных, а также был создан проект на языке Pascal, представляющая собой графическую оболочку. Приобретены навыки проектирования, разработки и тестирования программных средств.

Данное игровое приложение могут использовать пользователи разных возрастов. Дети могут решать «Судоку» в свободное время, что в будущем им поможет на уроках. Так как приложение решить не легко даже для взрослого человека, то и развиваться смогут не только дети. Студенты имеют возможность использовать в перерывах на учёбе или же в автобусе, электричке, метро. Офисные работники в обеденных перерывах могут решать «Судоку». В домашних условиях пользователь сможет играть во время ожидания загрузки фильма, приложений, музыки.

В ходе выполнения курсового проекта были полностью реализованы поставленные цели и задачи, а именно:

− изучен алгоритм генерации игрового поля «судоку»;

− разработано игровое приложение;

− протестировано игровое приложение;

− описано игровое приложение.

 

 



Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
КПСПО31.08102.081ПЗ
Разраб.
Киман Е.А.
Провер.
Платонова Т.Ю
Реценз.
 
Н. Контр.
 
Утверд.
.
  СПИСОК ЛИТЕРАТУРЫ
Лит.
Листов
 
НГАЭК, 2017  
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

 

1. Архангельский А.Я. "Программирование в C# 5 – 2-е изд., переработ. и дополн.", "Издательство БИНОМ", 2000г. -1072 с

2. Микрюков, В.Ю. Алгоритмизация и программирование / В.Ю. Микрюков. — Ростов на/Д.: Феникс, 2007. — 304 с.

3. Пестриков, В.М. C # на примерах / В.М. Пестриков, А.Н. Маслобоев. - Петербург: БХВ, 2005. – 497 с.

4. Сорокин, А.В. C#. Разработка баз данных / А.В. Сорокин. — СПб.: Питер, 2005. — 473 с.

5. Фаронов, В.В. C #. Программирование на языке высокого уровня / В.В. Фаронов. — СПб.: Питер, 2003. — 640 с.

6. Фаронов, В.В. Программирование баз данных в С # / В.В. Фаронов. — СПб.: Питер, 2006. — 457 с.

7. Фленов, М. «Библия С#» / М. Фленов. – Петербург: БХВ, 2004. – 880 с.

8. Чиртик, А.А. Программирование в С # / А.А Чиртик. — СПб.: Питер, 2010. — 400 c.


 


 

ПРИЛОЖЕНИЕ А

 

БЛОК-СХЕМА

начало
конец
Ввод цифр на поле  
  вывод результата на экран монитора


 

Проверка поля

 

 


нет

 

да

 


ПРИЛОЖЕНИЕ Б


using System;

using System.Drawing;

using System.Data;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Threading;

 

namespace Sudoku

{

/// <summary>

/// Summary description for SudokuMainForm.

/// </summary>

public class SudokuMainForm: System.Windows.Forms.Form

{

private System.Windows.Forms.Button btnNewGame;

private System.Windows.Forms.Button btnAnswer;

private System.Windows.Forms.DataGrid dataGrid1;

private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn3;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn4;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn5;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn6;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn7;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn8;

private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn9;

private System.Windows.Forms.ComboBox cboGameLevel;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Timer timer1;

private System.Windows.Forms.Button btnLoad;

private System.Windows.Forms.Button btnSave;

private Button button1;

private Button button2;

private Label lblStatus;

private System.ComponentModel.IContainer components;

 

public SudokuMainForm()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

cboGameLevel.SelectedIndex=0;

InitialiseDataGrid("numberset");

// Create new Game with Simple Level.

NewGame(0);

 

}

 

/// <summary>

/// Handler method for data validations.

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void CurrentSet_ColumnChanging(object sender, System.Data.DataColumnChangeEventArgs e)

{

 

try

{

 

lblStatus.Text="";

int rowPos = dataGrid1.CurrentCell.RowNumber;

string currentNumber = e.ProposedValue as string;

 

int number =Int32.Parse(currentNumber);

if((number < 1)||(number >9))

{

string errorMessage="Number should be between 1 and 9";

e.Row.SetColumnError(e.Column,errorMessage);

}

else

{

int col =e.Column.Ordinal;

bool answerChanged = _newGame.CheckForAnswerChange(rowPos,col,number);

 

if(answerChanged)

{

lblStatus.Text="You can't change the answer";

e.ProposedValue = e.Row[e.Column];

 

}else if(_newGame.CheckForDuplicate(rowPos,col,number)){

e.Row.SetColumnError(e.Column,"Number is Duplicate");

e.Row.AcceptChanges();

 

 

}else

{

// Check before clearing that if there are more than one errors

DataColumn[] columns= e.Row.GetColumnsInError();

if(columns.Length ==1)

{

if(e.Column.Ordinal == columns[0].Ordinal)

{

e.Row.ClearErrors();

 

}

}

else

{

foreach(DataColumn column in columns)

{

if (e.Column.Ordinal == column.Ordinal)

{

e.Row.SetColumnError(e.Column,"");

}

}

}

 

bool answerComplete= IsSolutionComplete();

if(answerComplete)

{

lblStatus.Text= "Great!!! You have done it";

}

}

 

}

}

catch(Exception)

{

 

e.Row.SetColumnError(e.Column,"Enter valid Number between 1 & 9");

 

}

}

 

/// <summary>

/// Method:IsSolutionComplete

/// Checks whether all spots are filled correctly.

/// </summary>

/// <returns></returns>

private bool IsSolutionComplete()

{

 

foreach(DataRow row in _currentSet.Tables["numberset"].Rows)

{

 

foreach(DataColumn currentColumn in _currentSet.Tables["numberset"].Columns)

{

 

string currentValue= row[currentColumn] as string;

if(currentValue =="")

return false;

int currentNumber = Int32.Parse(currentValue);

 

 

if(currentNumber ==0)

{

return false;

}

 

}

}

return true;

}

 

/// <summary>

/// Method:NewGame

/// Populates datagrid with new game.

/// </summary>

/// <param name="index"></param>

private void NewGame(int index)

{

GameLevel [] levels = {GameLevel.SIMPLE,GameLevel.MEDIUM,GameLevel.COMPLEX};

 

 

if(index >-1)

{

_newGame.GenerateGame(levels[index]);

dataGrid1.Visible=false;

_currentSet =_newGame.GameSet;

_currentSet.Tables["numberset"].DefaultView.AllowNew =false;

if(_currentSet!=null)

{

_currentSet.Tables["numberset"].ColumnChanging += new DataColumnChangeEventHandler(this.CurrentSet_ColumnChanging);

 

}

dataGrid1.DataSource=_currentSet.Tables["numberset"];

 

dataGrid1.Visible=true;

 

}

 

 

}

static void Main()

{

Application.Run(new SudokuMainForm());

}

 

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose(bool disposing)

{

if(disposing)

{

if(components!= null)

{

components.Dispose();

}

}

base.Dispose(disposing);

}

 

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.components = new System.ComponentModel.Container();

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SudokuMainForm));

this.label1 = new System.Windows.Forms.Label();

this.cboGameLevel = new System.Windows.Forms.ComboBox();

this.btnAnswer = new System.Windows.Forms.Button();

this.btnNewGame = new System.Windows.Forms.Button();

this.dataGrid1 = new System.Windows.Forms.DataGrid();

this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();

this.dataGridTextBoxColumn1 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn2 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn3 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn4 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn5 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn6 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn7 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn8 = new System.Windows.Forms.DataGridTextBoxColumn();

this.dataGridTextBoxColumn9 = new System.Windows.Forms.DataGridTextBoxColumn();

this.lblStatus = new System.Windows.Forms.Label();

this.timer1 = new System.Windows.Forms.Timer(this.components);

this.btnLoad = new System.Windows.Forms.Button();

this.btnSave = new System.Windows.Forms.Button();

this.button1 = new System.Windows.Forms.Button();

this.button2 = new System.Windows.Forms.Button();

((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();

this.SuspendLayout();

//

// label1

//

this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

this.label1.Image = ((System.Drawing.Image)(resources.GetObject("label1.Image")));

this.label1.Location = new System.Drawing.Point(-3, 21);

this.label1.Name = "label1";

this.label1.Size = new System.Drawing.Size(70, 16);

this.label1.TabIndex = 4;

this.label1.Text = "Сложность:";

this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;

this.label1.Click += new System.EventHandler(this.label1_Click);

//

// cboGameLevel

//

this.cboGameLevel.BackColor = System.Drawing.SystemColors.Menu;

this.cboGameLevel.Cursor = System.Windows.Forms.Cursors.Hand;

this.cboGameLevel.Items.AddRange(new object[] {

"Легкая",

"Средняя",

"Сложная"});

this.cboGameLevel.Location = new System.Drawing.Point(73, 18);

this.cboGameLevel.Name = "cboGameLevel";

this.cboGameLevel.Size = new System.Drawing.Size(112, 24);

this.cboGameLevel.TabIndex = 3;

this.cboGameLevel.Text = "Легкая";

//

// btnAnswer

//

this.btnAnswer.Location = new System.Drawing.Point(60, 82);

this.btnAnswer.Name = "btnAnswer";

this.btnAnswer.Size = new System.Drawing.Size(125, 28);

this.btnAnswer.TabIndex = 2;

this.btnAnswer.Text = "Показать ответ ";

this.btnAnswer.Click += new System.EventHandler(this.btnAnswer_Click);

//

// btnNewGame

//

this.btnNewGame.BackColor = System.Drawing.SystemColors.AppWorkspace;

this.btnNewGame.Location = new System.Drawing.Point(60, 48);

this.btnNewGame.Name = "btnNewGame";

this.btnNewGame.Size = new System.Drawing.Size(125, 28);

this.btnNewGame.TabIndex = 0;

this.btnNewGame.Text = "Новая игра";

this.btnNewGame.UseVisualStyleBackColor = false;

this.btnNewGame.Click += new System.EventHandler(this.btnNewGame_Click);

//

// dataGrid1

//

this.dataGrid1.BackgroundColor = System.Drawing.SystemColors.Control;

this.dataGrid1.BorderStyle = System.Windows.Forms.BorderStyle.None;

this.dataGrid1.CaptionVisible = false;

this.dataGrid1.ColumnHeadersVisible = false;

this.dataGrid1.DataMember = "";

this.dataGrid1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

this.dataGrid1.ForeColor = System.Drawing.SystemColors.ScrollBar;

this.dataGrid1.GridLineColor = System.Drawing.SystemColors.ActiveCaption;

this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;

this.dataGrid1.Location = new System.Drawing.Point(191, 3);

this.dataGrid1.Name = "dataGrid1";

this.dataGrid1.PreferredColumnWidth = 50;

this.dataGrid1.PreferredRowHeight = 50;

this.dataGrid1.RowHeadersVisible = false;

this.dataGrid1.RowHeaderWidth = 50;

this.dataGrid1.Size = new System.Drawing.Size(388, 326);

this.dataGrid1.TabIndex = 0;

this.dataGrid1.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {

this.dataGridTableStyle1});

this.dataGrid1.Navigate += new System.Windows.Forms.NavigateEventHandler(this.dataGrid1_Navigate);

this.dataGrid1.Paint += new System.Windows.Forms.PaintEventHandler(this.DataGrid1_Paint);

//

// dataGridTableStyle1

//

this.dataGridTableStyle1.AlternatingBackColor = System.Drawing.Color.LightGray;

this.dataGridTableStyle1.ColumnHeadersVisible = false;

this.dataGridTableStyle1.DataGrid = this.dataGrid1;

this.dataGridTableStyle1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {

this.dataGridTextBoxColumn1,

this.dataGridTextBoxColumn2,

this.dataGridTextBoxColumn3,

this.dataGridTextBoxColumn4,

this.dataGridTextBoxColumn5,

this.dataGridTextBoxColumn6,

this.dataGridTextBoxColumn7,

this.dataGridTextBoxColumn8,

this.dataGridTextBoxColumn9});

this.dataGridTableStyle1.GridLineColor = System.Drawing.SystemColors.ActiveCaption;

this.dataGridTableStyle1.HeaderForeColor = System.Drawing.SystemColors.ControlText;

this.dataGridTableStyle1.PreferredColumnWidth = 30;

this.dataGridTableStyle1.PreferredRowHeight = 30;

this.dataGridTableStyle1.RowHeadersVisible = false;

//

// dataGridTextBoxColumn1

//

this.dataGridTextBoxColumn1.Format = "";

this.dataGridTextBoxColumn1.FormatInfo = null;

this.dataGridTextBoxColumn1.MappingName = "col0";

this.dataGridTextBoxColumn1.Width = 50;

//

// dataGridTextBoxColumn2

//

this.dataGridTextBoxColumn2.Format = "";

this.dataGridTextBoxColumn2.FormatInfo = null;

this.dataGridTextBoxColumn2.MappingName = "col1";

this.dataGridTextBoxColumn2.Width = 50;

//

// dataGridTextBoxColumn3

//

this.dataGridTextBoxColumn3.Format = "";

this.dataGridTextBoxColumn3.FormatInfo = null;

this.dataGridTextBoxColumn3.MappingName = "col2";

this.dataGridTextBoxColumn3.Width = 50;

//

// dataGridTextBoxColumn4

//

this.dataGridTextBoxColumn4.Format = "";

this.dataGridTextBoxColumn4.FormatInfo = null;

this.dataGridTextBoxColumn4.MappingName = "col3";

this.dataGridTextBoxColumn4.Width = 50;

//

// dataGridTextBoxColumn5

//

this.dataGridTextBoxColumn5.Format = "";

this.dataGridTextBoxColumn5.FormatInfo = null;

this.dataGridTextBoxColumn5.MappingName = "col4";

this.dataGridTextBoxColumn5.Width = 50;

//

// dataGridTextBoxColumn6

//

this.dataGridTextBoxColumn6.Format = "";

this.dataGridTextBoxColumn6.FormatInfo = null;

this.dataGridTextBoxColumn6.MappingName = "col5";

this.dataGridTextBoxColumn6.Width = 50;

//

// dataGridTextBoxColumn7

//

this.dataGridTextBoxColumn7.Format = "";

this.dataGridTextBoxColumn7.FormatInfo = null;

this.dataGridTextBoxColumn7.MappingName = "col6";

this.dataGridTextBoxColumn7.Width = 50;

//

// dataGridTextBoxColumn8

//

this.dataGridTextBoxColumn8.Format = "";

this.dataGridTextBoxColumn8.FormatInfo = null;

this.dataGridTextBoxColumn8.MappingName = "col7";

this.dataGridTextBoxColumn8.Width = 50;

//

// dataGridTextBoxColumn9

//

this.dataGridTextBoxColumn9.Format = "";

this.dataGridTextBoxColumn9.FormatInfo = null;

this.dataGridTextBoxColumn9.MappingName = "col8";

this.dataGridTextBoxColumn9.Width = 50;

//

// lblStatus

//

this.lblStatus.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)

| System.Windows.Forms.AnchorStyles.Left)

| System.Windows.Forms.AnchorStyles.Right)));

this.lblStatus.BackColor = System.Drawing.SystemColors.WindowFrame;

this.lblStatus.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

this.lblStatus.Font = new System.Drawing.Font("Times New Roman", 19.8F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(204)));

this.lblStatus.ForeColor = System.Drawing.SystemColors.GradientActiveCaption;

this.lblStatus.Location = new System.Drawing.Point(10, 325);

this.lblStatus.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);

this.lblStatus.Name = "lblStatus";

this.lblStatus.Size = new System.Drawing.Size(587, 195);

this.lblStatus.TabIndex = 1;

this.lblStatus.Text = "Процесс";

this.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

this.lblStatus.Click += new System.EventHandler(this.lblStatus_Click);

//

// timer1

//

this.timer1.Interval = 3000;

this.timer1.Tick += new System.EventHandler(this.timer1_Tick);

//

// btnLoad

//

this.btnLoad.Location = new System.Drawing.Point(60, 116);

this.btnLoad.Name = "btnLoad";

this.btnLoad.Size = new System.Drawing.Size(125, 28);

this.btnLoad.TabIndex = 5;

this.btnLoad.Text = "Загрузить игру";

this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click);

//

// btnSave

//

this.btnSave.Location = new System.Drawing.Point(60, 150);

this.btnSave.Name = "btnSave";

this.btnSave.Size = new System.Drawing.Size(125, 28);

this.btnSave.TabIndex = 6;

this.btnSave.Text = "Сохранить игру";

this.btnSave.Click += new System.EventHandler(this.btnSave_Click);

//

// button1

//

this.button1.Location = new System.Drawing.Point(60, 219);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(125, 26);

this.button1.TabIndex = 7;

this.button1.Text = "Выход";

this.button1.UseVisualStyleBackColor = true;

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// button2

//

this.button2.Location = new System.Drawing.Point(60, 184);

this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(125, 29);

this.button2.TabIndex = 8;

this.button2.Text = "Помощь";

this.button2.UseVisualStyleBackColor = true;

this.button2.Click += new System.EventHandler(this.button2_Click);

//

// SudokuMainForm

//

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;

this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));

this.ClientSize = new System.Drawing.Size(582, 553);

this.Controls.Add(this.button2);

this.Controls.Add(this.button1);

this.Controls.Add(this.btnSave);

this.Controls.Add(this.btnLoad);

this.Controls.Add(this.lblStatus);

this.Controls.Add(this.dataGrid1);

this.Controls.Add(this.btnNewGame);

this.Controls.Add(this.btnAnswer);

this.Controls.Add(this.label1);

this.Controls.Add(this.cboGameLevel);

this.Cursor = System.Windows.Forms.Cursors.Arrow;

this.KeyPreview = true;

this.Name = "SudokuMainForm";

this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;

this.Text = "Игра Судоку";

this.TransparencyKey = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(128)))));

this.Load += new System.EventHandler(this.SudokuMainForm_Load);

((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();

this.ResumeLayout(false);

 

}

#endregion

 

/// <summary>

/// Handler to create new game.

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnNewGame_Click(object sender, System.EventArgs e)

{

 

lblStatus.Text="Начало новой игры";

 

int index = cboGameLevel.SelectedIndex;

NewGame(index);

 

 

}

 

private void InitialiseDataGrid(string mappingTable)

{

// Initialise Custom Table and Custom columnStyle for DataGrid

 

DataGridTableStyle tableStyle= new DataGridTableStyle();

tableStyle.PreferredColumnWidth=PREFERRED_COLUMN_WIDTH;

 

tableStyle.PreferredRowHeight=PREFERRED_ROW_HEIGHT;

tableStyle.BackColor=Color.Lavender;

tableStyle.AlternatingBackColor=Color.Ivory;

tableStyle.ColumnHeadersVisible=false;

tableStyle.RowHeadersVisible=false;

tableStyle.GridLineColor=Color.Blue;

tableStyle.MappingName=mappingTable;

 

tableStyle.ForeColor= Color.Black;

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

{

DataGridSpinnerColumn columnID = new DataGridSpinnerColumn();

columnID.MappingName="col"+i.ToString().TrimEnd();

columnID.HeaderText=columnID.MappingName;

columnID.SpinnerWidth=SPINNER_BUTTON_WIDTH;

columnID.ScrollMaximum=MAX_ROWS;

columnID.Game =_newGame;

columnID.ScrollMinimum=1;

columnID.ScrollSmallChange=1;

columnID.TextBox.TextAlign= HorizontalAlignment.Right;

 

tableStyle.GridColumnStyles.Add(columnID);

//

 

}

dataGrid1.PreferredColumnWidth=PREFERRED_COLUMN_WIDTH;

dataGrid1.PreferredRowHeight=PREFERRED_ROW_HEIGHT;

dataGrid1.Size = new Size(PREFERRED_COLUMN_WIDTH*MAX_COLS,PREFERRED_ROW_HEIGHT*MAX_ROWS);

dataGrid1.TableStyles.Add(tableStyle);

 

}

Sudoku _newGame = new Sudoku();

 

/// <summary>

/// Handler showing the answer.

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnAnswer_Click(object sender, System.EventArgs e)

{

_showAnswer = false;

ShowAnswer();

timer1.Enabled = true;

{

lblStatus.Text = "Вот так выглядит карта";

}

 

}

 

/// <summary>

/// Method:ShowAnswer

/// </summary>

private void ShowAnswer()

{

 

DataSet tempSet= new DataSet();

dataGrid1.Visible=false;

_currentSet.Tables["answerset"].DefaultView.AllowNew =false;

 

 

dataGrid1.DataSource= _currentSet.Tables["answerset"];

dataGrid1.TableStyles.Clear();

InitialiseDataGrid("answerset");

 

dataGrid1.Visible=true;

 

}

 

/// <summary>

/// Method:ShowProblem

/// </summary>

private void ShowProblem()

{

dataGrid1.Visible=false;

dataGrid1.DataSource=_currentSet.Tables["numberset"];

dataGrid1.TableStyles.Clear();

InitialiseDataGrid("numberset");

 

dataGrid1.Visible=true;

 

 

}

 

DataSet _currentSet;

 

/// <summary>

/// Timer Handler

/// </summary

/// <param name="sender"></param>

/// <param name="e"></param>

 

private void timer1_Tick(object sender, System.EventArgs e)

{

if(_showAnswer)

{

ShowAnswer();

_showAnswer=false;

 

}

else

{

ShowProblem();

_showAnswer=true;

timer1.Enabled=false;

 

}

}

 

private bool _showAnswer=true;

 

/// <summary>

/// DataGrid Paint overriden to paint border

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

 

private void DataGrid1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

 

 

// Override this handler to do custom painting.

Point currentPoint = new Point(0,0);

Size size = new Size(PREFERRED_COLUMN_WIDTH*3,PREFERRED_ROW_HEIGHT*3);

Pen myPen = new Pen(Color.Red,3);

 

for(int i=0;i<3;i++)

{

for(int j=0;j<3;j++)

{

currentPoint.X = i*PREFERRED_ROW_HEIGHT*3;

currentPoint.Y = j*PREFERRED_ROW_HEIGHT*3;

Rectangle rect = new Rectangle(currentPoint,size);

e.Graphics.DrawRectangle(myPen,rect);

 

}

}

 

}

 

#region constants

private const int PREFERRED_COLUMN_WIDTH=30;

private const int PREFERRED_ROW_HEIGHT=30;

private const int SPINNER_BUTTON_WIDTH=30;

 

private const int MAX_ROWS=9;

private const int MAX_COLS=9;

#endregion constants

 

 

/// <summary>

/// Method:Initialise Game

/// Purpose:This is called once we load game from file to initiliase

/// _newGame attributes.

/// </summary>

/// <param name="ds"></param>

/// <returns></returns>

private bool InitialiseGame(DataSet ds)

{

bool initSuccess = _newGame.InitiliseExistingGame(ds);

 

if(initSuccess)

{

dataGrid1.Visible=false;

_currentSet =ds;

_currentSet.Tables["numberset"].DefaultView.AllowNew =false;

if(_currentSet!=null)

{

_currentSet.Tables["numberset"].ColumnChanging += new DataColumnChangeEventHandler(this.CurrentSet_ColumnChanging);

 

}

dataGrid1.DataSource=_currentSet.Tables["numberset"];

dataGrid1.TableStyles.Clear();

InitialiseDataGrid("numberset");

 

dataGrid1.Visible=true;

}

return initSuccess;

 

}

 

/// <summary>

/// Hanlder to Load Game from file

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnLoad_Click(object sender, System.EventArgs e)

{

string fileName= "game.xml";

string path = AppDomain.CurrentDomain.BaseDirectory;

string file = path+fileName;

DataSet tempSet = new DataSet();

try

{

tempSet.ReadXml(file);

bool initSuccess = InitialiseGame(tempSet);

if(initSuccess)

{

lblStatus.Text = "Игра загружена успешно!";

}

else

{

lblStatus.Text = "Не удалось инициализировать игру";

}

}

catch(Exception ex)

{

lblStatus.Text = "Ошибка при загрузке файла xml";

Console.WriteLine(ex.Message);

}

}

 

/// <summary>

/// Hanlder to save game.

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

 

private void btnSave_Click(object sender, System.EventArgs e)

{

string fileName= "game.xml";

string path = AppDomain.CurrentDomain.BaseDirectory;

string file = path+fileName;

 

try

{

_currentSet.WriteXml(file);

lblStatus.Text = "Игра успешно сохранена!";

 

}

catch(Exception ex)

{

lblStatus.Text = "Ошибка при сохранении xml-файла";

Console.WriteLine(ex.Message);

}

}

 

private void label1_Click(object sender, EventArgs e)

{

 

}

 

private void SudokuMainForm_Load(object sender, EventArgs e)

{

 

}

 

private void dataGrid1_Navigate(object sender, NavigateEventArgs ne)

{

 

}

 

private void lblStatus_Click(object sender, EventArgs e)

{

 

 

}

 

private void button1_Click(object sender, EventArgs e)

{

this.Close();

}

 

private void button2_Click(object sender, System.EventArgs e)

{

DialogResult result = MessageBox.Show("От вас требуется заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждом малом квадрате 3×3 каждая цифра встречалась бы только один раз. Сложность судоку зависит от количества изначально заполненных клеток и от методов, которые нужно применять для её решения.\n \n Об авторе:\n\nИгровое приложение Судоку\nРазработал Киман Е.А.\nУчащийся группы 31 СПО\nНовопольский ГАЭК", "Помощь", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

}

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...