Судоку
История распространения "Судоку". Механизм решения и различия по уровню сложности в зависимости от размера квадрата данной головоломки. Освоение процесса создания программного продукта на Microsoft .NET Framework на языке C# на примере игры "Судоку".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.10.2011 |
Размер файла | 398,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Государственное образовательное учреждение
высшего профессионального образования московской области
Кафедра распределенных информационно-вычислительных систем
Кафедра информационных технологий
Курсовая работа
по программированию на языке высокого уровня
Тема: «Судоку»
Оглавление
- Введение
- История судоку
- Виды судоку
- Задание на работу
- Описание проекта
Глобальная блок-схема программы
- Описание программы
- Описание интерфейса
Код подпрограммы на языке C#
- Заключение
- Список литературы
- Введение
- Судомку (яп. ђ”“Ж су:доку) -- популярная головоломка-пазл с числами. В переводе с японского «су» -- «цифра», «доку» -- «стоящая отдельно». Иногда судоку называют «магическим квадратом», что, в общем-то, не верно, так как судоку является латинским квадратом 9-го порядка. Судоку активно публикуют газеты и журналы разных стран мира, сборники судоку издаются большими тиражами. Решение судоку -- популярный вид досуга.
- Игровое поле представляет собой квадрат размером 9x9, разделённый на меньшие квадраты со стороной в 3 клетки. Таким образом, всё игровое поле состоит из 81 клетки. В них, уже в начале игры, стоят некоторые числа (от 1 до 9), так как незаполненное игровое поле не имеет смысла. От количества пустых клеток зависит сложность данной игры.
История судоку
Все знают судоку как японское развлечение, но на самом деле Япония только приложила руку к глобальному распространению этих головоломок, а действительным прообразом судоку можно назвать головоломки, публикуемые с 1892 года во французской газете Le Siиcle. Эти «судоку» ещё не приобрели современный вид, но уже предполагали тот же механизм решения.
Далее «судоку» продолжила своё путешествие по миру и вот в 1979 году Говард Ганс из Индианы публикует в «Dell Magazines» головоломку «Number Place» -- это можно считать одним из первых выпусков современных судоку. Далее судоку была представлена японской публике японским же издателем Nikoli в своём ежемесячнике «Montly Nikolist» в апреле 1984 года и с этого момента можно начинать отсчёт судоку-мании. В конце 2004 года британская «Times» стала печатать судоку на своих страницах, чем прославила эту головоломку на всю Европу. Сегодня судоку -- обязательный компонент многих газет. Среди них много изданий с многомиллионными тиражами, например немецкая газета «Die Zeit», австрийский «Der Standard». Также публикует судоку российская газета «Труд».
Виды судоку
Судоку различаются по уровню сложности в зависимости от размера квадрата -- для профессионалов существуют судоку 15х15 и 16х16 клеток. Существуют судоку, в которых указываются не отдельные цифры для каждой клетки, а сумма цифр в той или иной группе клеток: судоку разбивается на несколько прямоугольных блоков разных размеров, а внутри каждого поля указывается сумма цифр, входящих в него.
Ещё одним вариантом головоломки является судоку, у которой внутренние блоки не квадратные, а произвольной формы, но при этом они, как правило, включают те же 9 клеток. Для маленьких любителей головоломок делаются судоку с полями 2х2 клетки, а для любителей судоку со стажем существуют цветные судоку, где нужно расставить цифры в каждом из цветных блоков по отдельности. Существуют также диагональные судоку, в которых нет мини-квадратов, а цифры не должны совпадать в каждой строке, каждом столбце и на двух максимальных диагоналях. Встречаются и комбинации всех этих видов судоку, например, судоку с мини-квадратами и двумя максимальными диагоналями.
Из всего многообразия судоку каждый сможет выбрать головоломку для себя. Судоку -- это отличная зарядка для мозгов.
Задание на работу
Целью выполнения курсовой работы является освоение процесса создания программного продукта на Microsoft .NET Framework на языке C# на примере игры «Судоку».
Задачами курсовой работы являются: формирование пользовательского интерфейса, синтезирование алгоритма игры, реализация, выполнение проверки правильности игрового результата.
судоку головоломка программный игра
Описание проекта
Описание программы
Создание игры судоку имеет несколько этапов:
· создание матрицы судоку
· создание игрового поля
· проверка результата
Наиболее интересным этапом программы является создание матрицы судоку. Матрица представляет собой двухмерный массив размерностью 9х9, заполненный числами от 1 до 9, таким образом, чтобы по горизонтали, по вертикали и в квадратах 3х3 числа не повторяются.
Глобальная блок-схема программы
Рис.1 Глобальная блок-схема
Описание интерфейса
При загрузке программы появляется интерфейс (рис. 2), с которого можно перейти к игре или выйти из программы, так же на нем рассказывается правило игры. На игровой форме (рис. 3) имеются кнопки: «Титульный лист», «Проверить результат», « Очистка поля», «Выход» и таймер. При нажатии кнопки «Титульный лист» вызывается форма с данными о программе и её производителе (рис. 4). Кнопка «Проверить результат» нажимается, когда пользователь заполнит полностью все пустые клетки, и после проверки программой ему выдается результат, правильно ли он заполнил поле. «Очистка поля» удаляет все цифры, поставленные пользователем на пустые ячейки. Таймер отсчитывает время, проведенное пользователем в игре. Кнопка «Выход» позволит пользователю по желанию выйти из программы.
Игровое поле представляет собой квадрат, состоящий из 81 клетки, который в свою очередь состоит из 9 квадратов по 9 клеток. С каждым новым запуском игры заполнение ячеек происходит рандомным образом. Для заполнения игрового поля необходимо поставить курсор в нужную ячейку и в появившемся окне выбрать либо число, которое пользователь хочет поставить, либо очистку ячейки (рис.5). Все введенные значения можно изменять в течение игры.
Рис.2 Начальная форма
Рис.3 Основное поле
Рис.4 Титульный лист
Рис.5 Основное окно с дополнительным окном предложения выбора действия
Код подпрограммы на языке C#
Рассмотрим код программы, выполняющий основную задачу, такую как прорисовку самого поля на игровой форме (рис.3), выполнения проверки и вывода данных.
namespace Судоку
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool first_start = false;
int second = 0; // для таймера
int minute = 0;
int x_move = -1; //для mousemove
int y_move = -1; // для mousemove
HelpForm helpform;
Random rnd;
char[] chr;
public Field f;
Sudoku sudok;
public int[,] matr = new int[9, 9];
int x = 1; // для наведения мыши
int y = 1;
private void Form1_Load(object sender, EventArgs e)
{
toolStripTextBox1.Enabled = false;
panel1.Hide();
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
x_move = e.X;
y_move = e.Y;
}
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
sudok.pointX = e.X / 41;
sudok.pointY = e.Y / 41;
if (f.matrix[sudok.pointY, sudok.pointX] == 0)
{
helpform = new HelpForm(ref f, ref sudok);
helpform.Show();
helpform.Location = new Point(this.Location.X + e.X - helpform.Width / 2, this.Location.Y + e.Y);
f.Visual();
if (helpform != null) f.DrawNumbers(sudok.new_matrix, Color.Black);
f.DrawNumbers(matr, Color.Red);
}
}
private void Form1_Shown(object sender, EventArgs e)
{
chr = new char[9];
string[] s = new string[9];
StreamReader sr = new StreamReader("судоку.txt");
for (int i = 0; i < 9; i++)
{
s[i] = sr.ReadLine(); // считали из файла судоку
for (int k = 0; k < 9; k++)
{
chr[k] = s[i][k];
}
}
sr.Close();
rnd = new Random();
sudok = new Sudoku(s);
panel1.Show();
f = new Field(panel1, 9, 40, 9, 9);
f.Visual();
matr = sudok.Separate(s, 9);
f.DrawNumbers(matr, Color.Red);
timer1.Start();
if(f!=null && helpform!=null)
f.pressed = helpform.rezult;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (helpform != null && helpform.closed)
{
f.DrawNumbers(matr, Color.Red);
f.DrawNumbers(sudok.new_matrix, Color.Black);
}
if (!first_start)
{
f.Visual();
f.DrawNumbers(matr, Color.Red);
first_start = true;
}
second++;
if (second == 6000) { minute++; second = 0; }
if (x_move!=-1 &&y_move!=-1)
{
if (Math.Abs((x - x % 41) - (x_move - x_move % 41)) > 39 || Math.Abs((y - y % 41) - (y_move - y_move % 41)) > 39)
{
f.Redraw_Clear(x / 41, y / 41);
f.Redraw_Busy(x_move / 41, y_move / 41, matr);
x = x_move;
y = y_move;
f.RedrawField();
if (helpform != null)
{
f.DrawNumbers(sudok.new_matrix, Color.Black);
}
f.DrawNumbers(matr, Color.Red);
x_move = -1;
y_move = -1;
}
}
if(second%100==0)
toolStripTextBox1.Text = minute.ToString() + " : " + ((int)second / 100).ToString();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit(); //кнопка выхода
}
private void toolStripLabel1_Click(object sender, EventArgs e)
{
About ab = new About();
ab.Show();
}
private void toolStripLabel2_Click(object sender, EventArgs e)
{
int i = 0;
int prov;
for (i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
prov = 0;
if (sudok.matrix[i, j] == sudok.matrix2[i, j]) prov = 1;
else
{
if (sudok.matrix[i, j] == sudok.new_matrix[i, j]) prov = 1;
}
if (prov == 0)
{ i = 11; MessageBox.Show("Имеются не правильно заполненные ячейки, либо не все ещё заполнены!"); j = 11; }
}
}
if (i != 12) MessageBox.Show("Вы всё правильно заполнили!");
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
sudok.new_matrix = new int[9, 9];
f.Visual();
f.DrawNumbers(matr, Color.Red);
}
}
}
Заключение
Рассмотрены принципы создания игровых интерфейсов, принципы создания игровых приложений на языке C# на примере игры «Судоку». Рассмотрен один из алгоритмов создания матрицы. В программе используются принципы объектно-ориентированного программирования. Также был создан интерфейс, позволяющий посмотреть информацию об авторе, и проверить правильность заполнения игрового поля.
Возможная разработка программы в будущем:
1) Создание таблицы рекордов.
2) Добавление выбора уровня сложности.
3) Ограничение времени игры.
4) Разработка дизайна программы.
Список литературы
1. Мельникова О.И. Лекции по программированию на языках высокого уровня.
2. http://ru.wikipedia.org/wiki/Судоку.
Размещено на Allbest.ru
Подобные документы
Разработка программного продукта на языке Delphi, предназначенного для решения японской головоломки "Судоку": ознакомление с правилами игры, выбор необходимых компонент, написание алгоритмов реализации задачи; описание пользовательского интерфейса.
курсовая работа [3,5 M], добавлен 25.06.2011История судоку, правила игры и цель головоломки. Разработка диаграммы классов. Реализация программы в объектно-ориентированном стиле по принципам модульности, иерархичности, ограничения доступа. Алгоритм генерации случайного игрового поля судоку.
курсовая работа [315,9 K], добавлен 01.02.2013Освоение метода аналитической иерархии на примере задачи о выборе автомобиля. Вычисление коэффициентов важности. Определение наилучшей альтернативы. Реализация задачи в виде программного продукта в Microsoft.NET Framework на языке C#, описание интерфейса.
курсовая работа [2,4 M], добавлен 13.02.2016Розробка програми GameBox, яка включає в себе дві гри, судоку та пятнашки. Опис структури даних та вимоги до них, процедур і функцій користувача, стандартних процедур і функцій, які використовувались в програмі, та файлів. Результати роботи програми.
курсовая работа [5,3 M], добавлен 12.11.2011Характеристика и состав Microsoft Solution Framework. Модель команды, её характеристики. Цели качества команды проекта. Модель процессов, её содержание. Принципы управления рисками. Утверждение целей и границ, плана проекта. Модель приложений MSF.
презентация [752,5 K], добавлен 10.05.2013Общие сведения о платформе Microsoft NET Framework. Разработка приложения "Поставка и реализация программного обеспечения", содержащего базу данных о каталогах адресов в Internet. Описание логической структуры. Требования к техническому обеспечению.
курсовая работа [2,4 M], добавлен 28.06.2011Формирование опыта создания программ с использованием программного продукта Turbo Assembler. Использование меньшего количества команд и обращений в память, увеличение скорости и уменьшение размера программы. Степень сложности совместной разработки.
реферат [15,4 K], добавлен 24.02.2010Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.
реферат [30,7 K], добавлен 01.03.2011История создания игры "Тетрис", смысл и правила данной головоломки. Разработка поля игры и фигур тетрамино. Процедуры и функции, используемые для реализации движения фигур, их поворота и складывания в ряды, удаления и подсчета количества целых рядов.
курсовая работа [87,0 K], добавлен 02.02.2013Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.
курсовая работа [1,3 M], добавлен 24.06.2013