Генерирование псевдослучайных чисел на примере создания игры "Сапер"
Основные подходы при создании 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