Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 13:16, курсовая работа
Разрабатываемая игра “Домино” является компьютерным вариантом настольной игры, которая предназначена для парной игры за одним компьютером, имеет удобный и понятный пользовательский интерфейс с возможность перемещения костяшек по полю.
Каждый игрок получает по семь костяшек, остальные размещаются в закрытом резерве. Начинает тот игрок, у которого наибольшее значение (например 6-6). Далее игроки выставляют костяшки с соответствующими очками. Если подходящих костяшек нет, то приходится добирать из резерва. Игра заканчивается, когда один из игроков выложит последнюю костяшку.
ВВЕДЕНИЕ 4
1 ПОСТАНОВКА ЗАДАЧИ 5
2 ПРАКТИЧЕСКАЯ ЧАСТЬ 6
2.1 Выбор технических и программных средств 6
2.2 Описание классов, объектов, свойств и методов разрабатываемого программного средства 8
2.3 Блок-схема алгоритма работы программы 11
2.4 Описание функционирования программы 13
3 ТЕСТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА 15
3.1 Тестирование программного средства на различные входные данные и его реакция на них 15
3.2 Тестирование программного средства в различных аппаратных средах 15
4 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 16
4.1 Требования к установке программного обеспечения: 16
4.2 Руководство пользователя по работе с программным средством 16
ЗАКЛЮЧЕНИЕ 19
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 20
{
vrem = (dominoClass)arrayList2[
x = vrem.PicBox.Location.X;
cleaner(panel2);
vrem = null;
}
newSpisok(1, arrayList2, panel2, 2);
vrem = (dominoClass)arrayList2[
Point point = new Point(x += 60, 20);
vrem.size(true, point, panel2);
vrem.arrayList = arrayList2;
vrem.panel = panel2;
vrem.num = 2;
start_game(panel2, arrayList2);
over(arrayList2);
}
else
{
dominoClass vrem;
int x = 0;
if (arrayList3.Count != 0)
{
vrem = (dominoClass)arrayList3[
x = vrem.PicBox.Location.X;
cleaner(panel3);
vrem = null;
}
newSpisok(1, arrayList3, panel3, 3);
vrem = (dominoClass)arrayList3[
Point point = new Point(x += 60, 20);
vrem.size(true, point, panel3);
vrem.arrayList = arrayList3;
vrem.panel = panel3;
vrem.num = 3;
start_game(panel3, arrayList3);
over(arrayList3);
}
}
else
{
button1.BackColor = SystemColors.
button1.Enabled = false;
label2.Visible = false;
label8.Visible = true;
if (rezerv)
{
timer1.Stop();
cleaner(panel2);
cleaner(panel3);
start_game(panel2, arrayList2);
start_game(panel3, arrayList3);
if (MessageBox.Show(" Вы проиграли! \n Время игры: " + label5.Text + "\n Сделано ходов: " + label4.Text, "Конец игры", MessageBoxButtons.RetryCancel, MessageBoxIcon.Asterisk) == DialogResult.Retry)
{
newGameStart_Click(null, null);
}
else Application.Exit();
}
}
}
// Поиск доминошек
public int search(ArrayList list)
{
int vrem1 = -1;
int vrem2 = -1;
for (int i = 0; i < list.Count; i++)
{
dominoClass buf = (dominoClass)list[i];
if (buf.zn1 == buf.zn2)
if (buf.zn1 > vrem2)
{
vrem1 = i;
vrem2 = buf.zn1;
}
}
return vrem2;
}
// Блокирование хода игроку
public void stop_ppl(ArrayList list)
{
int x = 0;
for (int i = 0; i < list.Count; i++)
{
dominoClass buf = (dominoClass)list[i];
buf.PicBox.Click -= new System.EventHandler(buf.
}
}
// Маскировка доминошек
public void verh_stop(ArrayList list)
{
int x = 0;
for (int i = 0; i < list.Count; i++)
{
dominoClass buf = (dominoClass)list[i];
buf.PicBox.Click -= new System.EventHandler(buf.
buf.PicBox.Visible = false;
Point point = new Point(x += 60, 15);
verh_dmn[i].size(true, point, buf.panel);
verh_dmn[i].PicBox.Visible = true;
}
}
// РазБлокирование хода игроку
public void start_ppl(ArrayList list)
{
for (int i = 0; i < list.Count; i++)
{
dominoClass buf = (dominoClass)list[i];
buf.PicBox.Click += new System.EventHandler(buf.
buf.PicBox.Visible = true;
}
}
// Определение первого хода
ArrayList hod()
{
if (search(arrayList2) >= search(arrayList3))
return arrayList2;
else
return arrayList3;
}
// Определение первого игрока
int igr()
{
if (hod() == arrayList2)
return 2;
else
return 3;
}
// Нажатие на Panel1
public void panel1_Click(object sender, EventArgs e)
{
try
{
buf.PicBox.BackColor = SystemColors.
}
catch (Exception)
{ }
start_ppl(buf.arrayList);
buf = null;
panel1.Controls.Remove(verh1.
panel1.Controls.Remove(verh2.
}
// Задание размеров панели
private void panel1_SizeChanged(object sender, EventArgs e)
{
point1.X = panel1.Width / 2 - 26; point1.Y = panel1.Height / 2 - 135;
point2.X = panel1.Width / 2 - 26; point2.Y = panel1.Height / 2 - 135;
panel1.SizeChanged -= new System.EventHandler(panel1_
}
// передача управления
public ArrayList control()
{
if (buf.arrayList == arrayList2)
{
panel3.BackColor = SystemColors.ActiveCaption;
start_ppl(arrayList3);
igrok = 3;
over(arrayList3);
if (button1.Enabled == true)
over2();
listBox1.Items.Add("Игрок " + igrok); // log
return arrayList3;
}
else
{
panel2.BackColor = SystemColors.ActiveCaption;
start_ppl(arrayList2);
igrok = 2;
over(arrayList2);
if (button1.Enabled == true)
over2();
listBox1.Items.Add("Игрок " + igrok); // log
return arrayList2;
}
}
// Перебор доминошек-1
public void over(ArrayList list)
{
bool vremBool = true;
for (int i = 0; i < list.Count; i++)
{
dominoClass vrem = (dominoClass)list[i];
if (vrem.zn1 == value1 || vrem.zn1 == value2 || vrem.zn2 == value1 || vrem.zn2 == value2)
{
vremBool = false;
button1.BackColor = SystemColors.
label2.Visible = false;
break;
}
}
button1.Enabled = vremBool;
if (vremBool)
{
button1.BackColor = Color.Tomato;
label2.Visible = true;
}
}
// Перебор доминошек-2
public void over2()
{
bool vremBool2 = true;
for (int i = 0; i < arrayList1.Count; i++)
{
dominoClass vrem = (dominoClass)arrayList1[i];
if (vrem.zn1 == value1 || vrem.zn1 == value2 || vrem.zn2 == value1 || vrem.zn2 == value2)
{
listBox1.Items.Add("button1.
vremBool2 = false;
break;
}
}
rezerv = vremBool2;
}
private void newGameStart_Click(object sender, EventArgs e)
{
label7.Visible = true;
arrayList1.Clear();
arrayList2.Clear();
arrayList3.Clear();
cleaner(panel1);
cleaner(panel2);
cleaner(panel3);
panel1_SizeChanged(null, null);
rezerv = false;
startGame();
}
private void выходToolStripMenuItem_Click(
{
Application.Exit();
}
private void оПрограммеToolStripMenuItem_
{
Form2 f2 = new Form2();
f2.ShowDialog();
}
private void timer1_Tick(object sender, EventArgs e)
{
myTime = myTime.AddSeconds(1);
label5.Text = myTime.Minute.ToString() + ":" + myTime.Second.ToString();
}
}
}
Класс dominoClass
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing; // Bitmap
using System.Resources; // ResourceManager
using System.Windows.Forms; // PictureBox
using System.Collections; // ArrayList
namespace AppDomino
{
public class dominoClass
{
Form1 form; // Ссылка на форму
string name; // Имя
public int zn1; // Значение 1
public int zn2; // Значение 2
PictureBox pictureBox; // Контейнер для рисунка
public ArrayList arrayList; // Список, в котором расположен домино
public Panel panel; // Панель, на котором расположен домино
public int num; // Номер списка/панели
public bool rotate;
// Положение доминошки в
// Создание объекта "Доминошка"
public dominoClass(Form1 f1, ResourceManager resMan, string name)
{
form = f1;
this.name = name;
this.pictureBox = new PictureBox();
if (name != "verh")
{
if (name != "verh1")
{
this.zn1 = int.Parse(name.Substring(1, 1));
this.zn2 = int.Parse(name.Substring(3, 1));
this.pictureBox.Image = (Bitmap)resMan.GetObject(this.
}
else
this.pictureBox.Image = (Bitmap)resMan.GetObject("
}
else
{
this.pictureBox.BorderStyle = BorderStyle.FixedSingle;
this.pictureBox.BackColor = SystemColors.Control;
}
}
// Измененние размеров
public void size(bool rotate, Point point, Panel panel)
{
if (rotate)
{ // вертикальные размеры
this.pictureBox.Size = new Size(48, 87);
this.pictureBox.Location = point;
}
else
{ // горизонтальные размеры
this.pictureBox.Size = new Size(87, 48);
if (this.name != "verh")
this.pictureBox.Image.
point.Y = point.Y + 20;
this.pictureBox.Location = point;
}
this.pictureBox.SizeMode = PictureBoxSizeMode.
panel.Controls.Add(this.
}
// Добавить событие
public void addSob()
{
this.pictureBox.Click += new System.EventHandler(oneClick);
}
// Удалить событие
public void noSob()
{
this.pictureBox.Click -= new System.EventHandler(oneClick);
}
// Метод возвращающий PicturBox
public PictureBox PicBox
{
get
{
return this.pictureBox;
}
}
// Событие нажатия доминошек
public void oneClick(object sender, EventArgs e)
{
form.buf = this;
form.puf = true;
if (form.hoD == 0)
{
form.timer1.Start();
form.value1 = form.value2 = this.zn1;
form.label7.Visible = false;
}
else
{ // Задаю координаты для выделения (по левую сторону)
Point point2 = form.point2;
if (point2.X > 150 && form.povorot2 == 0)
{ // ПО ВЕРХНЕЙ ГОРИЗОНТАЛИ
if (this.zn1 == this.zn2)
point2.X = point2.X - 48;
else
point2.X = point2.X - 87;
form.verh2.size(this.zn1 == this.zn2, point2, form.panel1);
form.listBox1.Items.Add("hihi Oloolo");
form.puf = false;
}
else
{
if (point2.Y < 300 && form.povorot2 < 2)
{ // ПО ВЕРТИКАЛИ
if (form.povorot2 == 0)
pointPNT_300(point2);
else if (form.povorot2 == 1)
pointPNT_333(point2);
}
else
{ // ПО НИЖНЕЙ ГОРИЗОНТАЛИ
if (form.povorot2 == 2)
pointPNT_311(point2);
else if (form.povorot2 == 3)
pointPNT_322(point2);
}
}
}
// ------------------------------
Point point1 = form.point1;
if (point1.X < 1150 && form.povorot1 == 0)
{ // ПО ВЕРХНЕЙ ГОРИЗОНТАЛИ
form.verh1.size(this.zn1 == this.zn2, point1, form.panel1);
form.listBox1.Items.Add("
form.listBox1.Items.Add("
}
else
{
if (point1.Y < 300 && form.povorot1 < 2)
{ // ПО ВЕРТИКАЛИ
if (form.povorot1 == 0)
pointPNT_100(point1);
else if (form.povorot1 == 1)
pointPNT_111(point1);
}
else
Информация о работе Создание электронного варианта игры Домино