Размещение помидоров
Размещение помидоров
Нужно создать массив помидоров для размещения на экране, как показано в листинге 11.25.
Листинг 11.25
/// <summary>
/// Расстояние между помидорами.
/// Устанавливаем один раз для игры
/// </summary>
private int tomatoSpacing = 4;
/// <summary>
/// Высота, на которой рисуется помидор
/// Высота может меняться в процессе игры
/// Начинаем с верхней части экрана
/// </summary>
private int tomatoDrawHeight = 4;
/// <summary>
/// Количество помидоров на экране.
/// Устанавливается при старте игры
/// методом initialiseTomatoes.
/// </summary>
private int noOfTomatoes;
/// <summary>
/// Позиции всех помидоров на экране
/// </summary>
private tomato[] tomatoes;
При усложнении игры помидоры должны отображаться все ниже и ниже, заставляя пользователя действовать интуитивно. Переменная tomatoDrawHeight будет отвечать за эту задачу. Для инициализации местоположения помидоров нужно создать функцию initialiseTomatos, которая использует размеры помидоров и экрана. Ее код приведен в листинге 11.26.
Листинг 11.26
/// <summary>
/// Вызывается один раз для установки всех помидоров
/// </summary>
private void initialiseTomatoes() {
noOfTomatoes =
(this.ClientSize.Width - tomatoSpacing) /
(tomatoImage.Width + tomatoSpacing);
// создаем массив, содержащий позиции помидоров
tomatoes = new tomato[noOfTomatoes];
// Координата x каждого помидора
int tomatoX = tomatoSpacing / 2;
for (int i = 0; i < tomatoes.Length; i++) {
tomatoes[i].rectangle =
new Rectangle(tomatoX, tomatoDrawHeight,
tomatoImage.Width, tomatoImage.Height);
tomatoX = tomatoX + tomatoImage.Width + tomatoSpacing;
}
}
Вызов этого метода следует разместить в конструкторе формы. Метод подсчитывает количество помидоров, создает массив структур и задает прямоугольники, определяющие позицию каждого помидора на экране. Теперь их надо разместить на форме в один ряд. Код, отвечающий за эти действия, приведен в листинг 11.27.
Листинг 11.27
/// <summary>
/// Вызывается для создания ряда помидоров.
/// </summary>
private void placeTomatoes() {
for (int i = 0; i < tomatoes.Length; i++) {
tomatoes[i].rectangle.Y = tomatoDrawHeight;
tomatoes[i].visible = true;
}
}
Этот метод вызывается один раз при старте игры, а после этого он запускается после уничтожения очередного ряда томатов. Метод обновляет высоту с новым значением и делает изображения томатов видимыми. Вызов данного метода также размещается в конструкторе формы.
Итак, сейчас позиции всех томатов определены. Нужно вывести их изображения помидоров на экран. Код, приведенный в листинге 11.28, встраивается в обработчик события Form1_Paint.
Листинг 11.28
for (int i = 0; i < tomatoes.Length; i++) {
if (tomatoes[i].visible) {
g.DrawImage(tomatoImage, tomatoes[i].rectangle.X, tomatoes[i].rectangle.Y);
}
}
Каждый раз, когда страница перерисовывается, этот код перерисовывает все видимые томаты. Естественно, для отображения всех томатов используется одно и то же изображение.
Чтобы сделать игру реалистичнее, нужно переместить начальную высоту батона чуть ниже, чтобы игрок мог сразу играть в игру с более подходящей позиции. Этот код приведен в листинге 11.29.
Листинг 11.29
breadRectangle = new Rectanglе(
(this.ClientSize.Width - breadImage.Width) / 2,
this.ClientSize.Height — breadImage.Height,
breadImage.Width, breadImage.Height);
Теперь игра выглядит так, как показано на рис. 11.7
Рис. 11.7. Внешний вид игры
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Размещение рисунков
Размещение рисунков pdf_open_gifОткрытие рисунка GIF.Синтаксис:void pdf_open_gif(int pdf_document, string filename)Используйте функцию pdf_open_image_file().<?php$im = pdf_open_gif($pdf, "test.gif");pdf_place_image($pdf, $im, 100, 100, 1);pdf_close_image($pdf, $im);?>pdf_open_pngОткрытие рисунка PNG.Синтаксис:void pdf_open_png(int pdf_document, string filename)Используйте функцию
6.2.3 Размещение ядра
6.2.3 Размещение ядра Несмотря на то, что ядро работает в контексте процесса, отображение виртуальных адресов, связанных с ядром, осуществляется независимо от всех процессов. Программы и структуры данных ядра резидентны в системе и совместно используются всеми процессами.
Размещение
Размещение Закончив работу над сайтом, самое время подумать о том, где его разместить. Разумеется, можно сделать так, чтобы все желающие просматривали ваши вебстраницы на вашем же компьютере. Для этого необходимо всего-навсего обладать высокоскоростным каналом доступа в
Размещение резюме
Размещение резюме Размещение резюме на досках объявлений, посвященных работе, может принести пользу только в том случае, если вы оставили информацию о себе не на двух-трех, а на 20—30 сайтах. Причем свое резюме нужно будет периодически обновлять, и чем популярнее сайт, тем
12.11.2 Размещение серверов DNS
12.11.2 Размещение серверов DNS Многие организации предпочитают иметь в своей внутренней сети один комплект из первичного и вторичного серверов, даже если сеть разделена на отдельные зоны. Вполне допустимо использовать один сервер для множества зон (или для нескольких
Размещение публикаций в сетевых СМИ
Размещение публикаций в сетевых СМИ Размещение различных информационных материалов (новостей, репортажей, интервью, обзоров, аналитических статей и т. д.) в сетевых изданиях – весьма эффективный метод продвижения в Интернете. Многие организации прибегают к нему, даже не
Размещение пресс-релизов[26]
Размещение пресс-релизов[26] Пресс-релизы представляют собой короткие (одна-две страницы) официальные информационные сообщения для прессы, рассказывающие о различных мероприятиях, событиях в жизни компании, новых услугах, товарах и т. д. (подробнее узнать о том, что такое
Размещение сайта в Интернете
Размещение сайта в Интернете Наверняка многие читатели уже подумали, что создать сайт – мало, нужно еще предпринять некоторые действия, направленные на то, чтобы этот сайт могли видеть другие. Действительно, пока файлы, составляющие сайт, находятся на компьютере
Размещение информации в переменных
Размещение информации в переменных После того как переменная объявлена, первым шагом в ее использовании обычно бывает наполнение ее информацией (первое размещение информации в переменной называется инициализацией переменной). Чтобы поместить информацию в переменную,
Размещение на диске по умолчанию
Размещение на диске по умолчанию Таблицы в этом разделе описывают размещение компонентов для Windows и Linux на диске по умолчанию. Информация дается в контексте двух версий:* версии, предшествующие Firebird 1.5;* версии Firebird 1.5 и последующие.Разница является существенной. Версии,
Размещение
Размещение До создания базы данных вы должны знать, где собираетесь ее создавать. Это не столь глупо, как звучит. Оператор CREATE DATABASE (альтернатива- CREATE SCHEMA) будет создавать файл или файлы с указанными вами именами, однако он не может создать каталоги и не может изменить
Размещение пустых значений
Размещение пустых значений По умолчанию Firebird помещает сортируемые столбцы, имеющие NULL, В конец выходного набора. Начиная с версии 1.5, вы можете использовать ключевое слово NULLS FIRST для указания того, что строки с NULL будут помещаться в начало набора, как показано в примере
Размещение и переименование библиотеки
Размещение и переименование библиотеки Для встроенного сервера- распространяемого как fbembed.dll- нет проблем с переименованием этой библиотеки в имя gds32.dll или fbclient.dll, или любое другое нужное имя. Для того чтобы пакет встроенного сервера был самодостаточным, эта библиотека
На что влияет сетевое размещение?
На что влияет сетевое размещение? На то, как компьютеры локальной сети могут обмениваться данными и получать доступ к ресурсам друг друга, влияют несколько настроек. Все они доступны на странице, которая открывается по ссылке Изменить дополнительные параметры общего
Как выбрать сетевое размещение?
Как выбрать сетевое размещение? Когда компьютер с Windows 7 подключается к новой сети, вы должны выбрать один из трех вариантов сетевого размещения. От этого выбора зависит, будет ли ваш нетбук «видеть» другие компьютеры сети и «увидят» ли они ваш компьютер.По умолчанию