грами
private void btnStart_KeyPress (object sender, KeyPressEventArgs e)? процедура, що здійснює для користувача управління блоком в програмі.
private void btnStart_Click (object sender, EventArgs e)? процедура, що встановлює швидкість падіння блоків (інтервал таймера)
Клас «Поле» має методи-процедури:
public bool Zanyato (int x, int y, int l)? функція, що визначає, чи зайнята осередок поля, з даними координатами.
public Image Print ()? процедура, промальовує поле на формі
public void Gracia (ref int point, int n)? процедура, що забирає повний рядок з номером n і нараховується 1000 очок до point
Клас «Блок», а разом з ним і всі фігури-нащадки містять:
public Image Draw (Image Img)? малює фігуруImage Del (Image Img)? стирає фігуру void shag (Pole p)? опускає фігуру в поле на 1 крок
public void left (Pole p)? здійснює 1 крок влевоvoid right (Pole p)? здійснює 1 крок вправо virtual bool Is_V (int len)? визначає можливість опускатися
public virtual void povorot ()? робить поворот фігури навколо своєї осі
8. Тестування
Перший підводний камінь очікує ще до запуску гри. Це вибір швидкості. Так як поле компонента TextBox містить рядок, а далеко не кожен рядок є числом, то при перекладі рядка в число може виникнути помилка невідповідності типів даних. Тому користувач позбавляється можливості вводити в поле TextBox а які-небудь символи, він може тільки вибрати (рис. 9):
Рис. 9. Вибір швидкості
Аналогічна ситуація може статися і з вибором прибирається лінії. Запобігання помилки аналогічне? вибір номера лінії із списку (мал. 10).
Рис. 10. Вибір прибирається лінії
З можливостей користувача в даному додатку залишилося лише управління самою фігурою. Помилка може виникнути, тільки якщо фігура вийде за межі ігрового поля і межі масиву (програмної реалізації поля). У цьому випадку може виникнути помилка запису в масив. Можливість виникнення цієї помилки реалізовано програмно так, що при спробі переміщення фігури в неможливе місце, запит користувача ігнорується, фігура не реагує на команди користувача. Наприклад, при виході за праву межу ігрового поля (рис. 11).
Рис. 11. Запобігання виведення фігури з ігрового поля
Висновок
У результаті проведеної роботи була створена програма, що надає наступні можливості:
. розвивати у користувача вправність і увагу
. провести вільний час за захоплюючою грою
Список літератури
1. Повний довідник по С #./Г. Шілдт/Пер. з англ.- М.: Видавничий дім Вільямові raquo ;, 2010. - 752 с.:Ил.- Парал. тит. англ.
2. Beginning C #/Karl! Watson, Marco Bellinaso, Ollie Comes, David Espinosa/Видавництво Лорі raquo ;, 2009. - 864 с.
3. Програмування на мові C #./Фаронов В./- Спб .: Питер. 2007. - 240 с.
. Visual С # 2008: базовий курс./Уотсон, Карл і, Нейгел, Крістіан, Педерсен/Пер. з англ.- М.: ТОВ ??laquo; И.Д. Вільямс raquo ;, 2011. - +1216 с.
Додаток
Лістинг програми
Основні структурні частини програми:
Модуль Pole.csSystem.Collections.Generic;System.Data;System.Drawing;System.Linq;System.Text;Вторая
{Pole//ігрове поле
{bool [] [] pole;// логічний двовимірний масив-таблиця ігриint X;// ширина, int Y;// висота поля Pole (int a, int b)//20-25 конструктор із завданням розмірності поля
{= a;=b;=new bool [a] [];// виділення пам'яті під масив (int i=0; i lt; a; i=i + 1)
{[i]=new bool [b];
}
} void Zap (Block fig)//запис фігури в полі
{Koor=new Point ();=fig.K (); (int i=0; i lt; fig.smes.Length; i ++)
{[(Koor.X + 15 * fig.smes [i] .X)/15] [(Koor.Y + 15 * fig.smes [i] .Y)/15]= true;
}
} bool Zanyato (int x, int y, int l)//визначення, вільності клітини поля
{((pole [x] [y]));
} Image Print ()//малювання поля на малюнку
{
Bitmap btm=new Bitmap (400,400);// ...