Генерирование псевдослучайных чисел на примере создания игры "Сапер"

Основные подходы при создании Windows приложений. Изучение навыков работы с 2D графикой в Windows приложениях. Методы генерации псевдослучайных чисел. Разработка игры "Сапер" с расположением мин на основе нескольких методов генерации случайных чисел.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.02.2009
Размер файла 63,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

m[3].X = x + 12;

m[3].Y = y + 8;

m[4].X = x + 12;

m[4].Y = y + 14;

g.DrawLines(Pens.White, m);

}

public Form1()//конструктор главной формы

{

InitializeComponent();

//присваиваем начальные значения полям

MR = 10;

MC = 10;

NM = 10;

W = 40;

H = 40;

this.newGame(1);//вызов метода newGame(int r)

}

private void Form1_Paint(object sender, PaintEventArgs e)//обработчик события Paint

{

this.showPole(e.Graphics, status);//вызов метода showPole(Graphics g, int status)

}

private void справкаToolStripMenuItem_Click(object sender, EventArgs e)//щелчок на пункте меню Справка

{

Help.ShowHelp(this, this.helpProvider1.HelpNamespace);//вызов файла справки

}

private void Сапер_MouseDown(object sender, MouseEventArgs e)//нажатие кнопки мыши на игровом поле

{

//если игра завершена, ничего не происходит

if (status == 2)

return;

//первый щелчок

if (status == 0)

status = 1;

//преобразуем координаты мыши в индексы клетки, в которой был сделан щелчок

int row = (int)((e.Y - 25)/ H) + 1, col = (int)(e.X / W) + 1;

//координаты области вывода

int x = (col - 1) * W + 1, y = (row - 1) * H + 1 + 25;

//щелчок левой кнопки мыши

if (e.Button == MouseButtons.Left)

{

//открыта клетка, в которой есть мина

if (Pole[row, col] == 9)

{

Pole[row, col] += 100;

status = 2;//игра закончена

this.Invalidate();//перерисовать форму

}

else

{

if (Pole[row, col] < 9)

this.open(row, col);

}

}

//щелчок правой кнопки мыши

if (e.Button == MouseButtons.Right)

{

//в клетке не было флага, ставим его

if (Pole[row, col] <= 9)

{

nFlag += 1;

if (Pole[row, col] == 9)

nMin += 1;

Pole[row, col] += 200;

//все флаги расставлены

if ((nMin == NM) && (nFlag == NM))

{

status = 2;//игра закончена

this.Invalidate();//перерисовать форму

}

else

this.Invalidate(new Rectangle(x, y, W, H));//перерисовать клетку

}

else

{

//в клетке был флаг, убираем его

if (Pole[row, col] >= 200)

{

nFlag -= 1;

Pole[row, col] -= 200;

this.Invalidate(new Rectangle(x, y, W, H));//перерисовать клетку

}

}

}

}

//обработчики щелчков на пунктах меню, в которых указывается размер поля и кол-во мин

private void минToolStripMenuItem_Click(object sender, EventArgs e)

{

MR = 10;

MC = 10;

NM = 10;

W = 40;

H = 40;

this.newGame(1);

this.Invalidate();

}

private void минToolStripMenuItem1_Click(object sender, EventArgs e)

{

MR = 10;

MC = 10;

NM = 15;

W = 40;

H = 40;

this.newGame(1);

this.Invalidate();

}

private void минToolStripMenuItem2_Click(object sender, EventArgs e)

{

MR = 10;

MC = 10;

NM = 20;

W = 40;

H = 40;

this.newGame(1);

this.Invalidate();

}

private void минToolStripMenuItem3_Click(object sender, EventArgs e)

{

MR = 20;

MC = 20;

NM = 20;

W = 30;

H = 30;

this.newGame(1);

this.Invalidate();

}

private void минToolStripMenuItem4_Click(object sender, EventArgs e)

{

MR = 20;

MC = 20;

NM = 40;

W = 30;

H = 30;

this.newGame(1);

this.Invalidate();

}

private void минToolStripMenuItem5_Click(object sender, EventArgs e)

{

MR = 20;

MC = 20;

NM = 60;

W = 30;

H = 30;

this.newGame(1);

this.Invalidate();

}

private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)//щелчок на пункте меню О программе

{

AboutBox1 saper = new AboutBox1();//создание экземпляра формы О программе

saper.ShowDialog();//появление формы О программе

}

private void особыеToolStripMenuItem_Click(object sender, EventArgs e)//щелчок на пункте меню Особые

{

Form2 settings = new Form2();//создание экземпляра формы Настройки

settings.ShowDialog();//появление формы Настройки

//присваиваем значения полям на основе введенных пользователем на форме Настройки

MR = settings.MR;

MC = settings.MC;

NM = settings.NM;

W = 30;

H = 30;

this.newGame(1);

this.Invalidate();

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)//щелчок на пункте меню Выход

{

this.Close();

}

private void новаяИграToolStripMenuItem1_Click(object sender, EventArgs e)//щелчок на пункте меню Новая игра

{

this.newGame(1);

this.Invalidate();

}

//обработчики щелчков на пунктах меню, в которых указывается способ расстановки мин

private void randomToolStripMenuItem_Click(object sender, EventArgs e)

{

this.newGame(1);

this.Invalidate();

}

private void линейныйКонгруентныйМеоToolStripMenuItem_Click(object sender, EventArgs e)

{

this.newGame(2);

this.Invalidate();

}

private void алгоритмToolStripMenuItem_Click(object sender, EventArgs e)

{

this.newGame(3);

this.Invalidate();

}

}

public partial class Form2 : Form //форма настроек игрового поля

{

public int MR,MC,NM;

public Form2()//конструктор формы настроек поля

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)//нажатие кнопки ОК

{

// не все текстовые поля заполнены, выводится предупреждение

if (((textBox1.Text == "") || (textBox2.Text == "")) || (textBox3.Text == ""))

{

MessageBox.Show("Заполните все поля!");

}

// все текстовые поля заполнены, задаются кол-ва клеток и мин

else

{

MR = Convert.ToInt32(textBox1.Text);

MC = Convert.ToInt32(textBox2.Text);

NM = Convert.ToInt32(textBox3.Text);

this.Close();

}

}

}

partial class AboutBox1 : Form //форма «О программе»

{

public AboutBox1()//конструктор формы «О программе»

{

InitializeComponent();

// Initialize the AboutBox to display the product information from the assembly information.

// Change assembly information settings for your application through either:

// - Project->Properties->Application->Assembly Information

// - AssemblyInfo.cs

//задается текст компонентов формы О программе

this.Text = String.Format("О программе");

this.labelProductName.Text = "Cапер";

this.labelVersion.Text = String.Format("Версия {0}", AssemblyVersion);

this.labelCopyright.Text = "Автор Темерев Кирилл";

this.labelCompanyName.Text = "КФ МГТУ им.Н.Э.Баумана, группа САПР-31";

this.textBoxDescription.Text = "Программа создана в Microsoft Visual Studio 2005 для платформы .NET Framework";

}

}


Подобные документы

  • Разработка программы "Сапер", удовлетворяющей необходимым требованиям эффективности в интегрированной среде программирования Microsoft Visual C++. Специфика создания Windows-приложений. Применение логической игры для развития интереса к обучению у детей.

    курсовая работа [511,1 K], добавлен 01.06.2013

  • Характеристика вероятностного алгоритма и особенности его использования. Принцип работы и назначение генератора случайных чисел, сущность псевдослучайных чисел. Рассмотрение и реализация метода середины квадрата, разработка алгоритма и его кодирование.

    курсовая работа [50,3 K], добавлен 18.09.2009

  • Написание программы для генерации случайных чисел, в которой реализуются возможности генерации абсолютно случайных чисел. Приложение на языке С/С++. Описание узла, содержащего данные; функций и методов работы; чтения данных из памяти и вывода их на экран.

    курсовая работа [172,4 K], добавлен 23.05.2012

  • Формирование устойчивой последовательности псевдослучайных чисел с использованием метода "середины квадрата". Разработка программы для определения среднего значения чисел, среднего значения квадратов чисел и дисперсии для последовательности из 20 чисел.

    лабораторная работа [1,4 M], добавлен 21.01.2015

  • Программа для формирования и просмотра команды для олимпиады по программированию. Генератор случайных чисел в Borland C++, методы их получения. Линейный конгруэнтный метод. Метод Фибоначчи, вихря Мерсенна. Тестирование псевдослучайных последовательностей.

    курсовая работа [93,5 K], добавлен 27.09.2014

  • Разработка приложения на WinAPI с реализацией логической структуры в игре "Сапер". Реализация графической части приложения. Проверка на корректность поведения интерфейса программы, работы логической части игры, корректности записи и чтения файла.

    курсовая работа [1,1 M], добавлен 17.10.2012

  • Анализ способов построения генераторов случайных чисел для криптографических задач. Анализ генератора случайных чисел на основе магнитометров. Анализ статистических свойств двоичных последовательностей, полученных путем квантования данных магнитометра.

    дипломная работа [2,5 M], добавлен 06.05.2018

  • Разработка программы, моделирующей игру "Кости". Использование в программе генератора псевдослучайных чисел. Схема иерархии модулей. Описание работы программы. Регистрация игрока, окно программы. Определение языка программирования, основные операторы.

    курсовая работа [3,2 M], добавлен 29.07.2010

  • Способы получения случайных чисел в программировании и их использование для решения ряда задач. Принцип действия и тестирование работы генератора случайных чисел в Borland C++, его преимущества. Генерация одномерной и двумерной случайной величины.

    лабораторная работа [105,4 K], добавлен 06.07.2009

  • Методика решения задачи по выбору подмножества, состоящего из нескольких компонент. Характеристики, порядок записи и листинг программ по генерации множества всех подмножеств из N элементов и генерации последовательности чисел в лексикографическом порядке.

    реферат [22,4 K], добавлен 07.03.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.