Сначала создаем пустой проект.
Нарисовали в GIMP фон ( 4 жердочки, трава, небо), а так же на отдельном листе сделали маленькое ядро,
которое будет ловить волк.
Разместили на форме картинку фона.
Свойства MainForm: -
BackgroundImage=Загружаем фон
Затем берем 2 компонента PictureBox. В первом поместим
нарисованное ядро.
Свойства:
- Image
= загружаем картинку ядра
- BackColor=Transparent
- Location=-100;-100 // убираем из поля видимости
- AutoSize=false;
- Size=12;12
- SizeMode=StretchImage // растягиваем по рамке
Во втором разместим Волка. Компонент должен располагаться
между жердочек. Это будет его зона работы.
Свойства:
Теперь нам нужно 5 Labels. Первый будет счетчиком.
Свойства:
Остальные Labels
нужны для памятки. В них укажем буквы, которые необходимо нажимать для
управления Волком. В частности выбраны буквы A,Z,K,M. Для того что бы понять, какая буква к
какой жердочке относится, разместим каждую label к соответствующей ей черте (предполагаю логика размещения
понятна). Таким образом, у игрока всегда будет подсказка перед глазами.
Свойства:
И последний компонент, который необходим - Timer.
Свойства:
В результате всех манипуляций, получим вот такую картинку
Теперь переходим к Событиям.
У компонента timer выберем событие Tick. Двойным щелчком откроется окно редактора.
- после следующих слов public partial class
MainForm : Form {
запишем такие строчки: Random rnd = new Random();
int
speedX; int
speedY; // глобальные переменные
int miKey; // для определения расположения волка
int rand;
// для хранения рандомного числа
Так же нам потребуется два своих обработчика
- после слов public MainForm() { InitializeComponent();
запишем uItemInit(); } // указали придуманное нами название,
// и инициировали его при запуске
- теперь создадим свой первый обработчик со следующим кодом:
void uItemInit() {
rand =
rnd.Next(0,4); // Запускаем генератор
speedY = 4;
switch (rand) {
case 0: // влево-вверх
pictureBox1.Left
= 10; // подбираем координаты для жердочки
pictureBox1.Top
= 60;
speedX
= 9; break;
case 1: // влево-вниз
pictureBox1.Left
= 10; pictureBox1.Top
= 126;
speedX
= 9; break;
case 2: // вправо-вверх
pictureBox1.Left
= 490; pictureBox1.Top
= 70;
speedX
= -9; break;
case 3:
pictureBox1.Left
= 490; pictureBox1.Top
= 130;
speedX
= -9; break;
} }
- второй обработчик для подсчета баллов
void miCatch() {
int sum=Convert.ToInt32(label1.Text)+1; // прибавляем счётчик
label1.Text=Convert.ToString(sum);
uItemInit(); } // прячем пойманное ядро
- пришло время обратить внимание на событии Tick у компонента Timer
//
Перемещение ядра
pictureBox1.Left = pictureBox1.Left + speedX;
pictureBox1.Top = pictureBox1.Top + speedY;
// Если ядро на центральной полосе, то оно должно
падать вниз
if (pictureBox1.Left > 135 &&
pictureBox1.Left < 365) { if (rand==(miKey-1)) {miCatch ();} //
проверка нахождения волка и ядра
else { if (speedX > 0) { speedX = 2; }
else { speedX = -2; }
speedY
= 8; } }
// Если упало ядро
if (pictureBox1.Top > 255) {
if (Convert.ToInt32(label1.Text)>0) // работа со счётчиком
label1.Text=Convert.ToString(Convert.ToInt32(label1.Text)-1);
uItemInit(); }
Теперь потребуются события формы. А в частности KeyDown.
- откроем окно редактора и запишем следующие строчки:
switch (e.KeyCode) {
case Keys.A: //
влево-вверх
pictureBox2.Top= 10; pictureBox2.Left=
125;
miKey=1; break;
case Keys.Z: // влево-вниз
pictureBox2.Top=
65; pictureBox2.Left=
125;
miKey=2; break;
case Keys.M: // вправо-вниз
pictureBox2.Top= 80; pictureBox2.Left=
215;
miKey=4; break;
case Keys.K: //вправо-вверх
pictureBox2.Top=
20; pictureBox2.Left=
215;
miKey=3; break; }
Вот и всё!!! Запускаем и играем.
|