• Games
  • TMNT
  • Игры
  • Игры
Главная
Всё для геймера: Обзоры игр, Игровые новости, Читы, Советы и пр.
Всё о компьютерных и консольных играх.
Приветствую Вас Гость
Меню геймера
Разделы каталога
Общие игровые статьи [160]
Игровая аналитика, обзоры серий игр с разных платформ, анализ игр, игровой индустрии и т.д.
Онлайн игры [231]
Статьи и обзоры онлайновых клиентских и браузерных игр
Флэш игры/Flash [11]
2D/3D игры любого жанра на технологии Adobe Flash для игры в плеере или в браузере.
Браузерные онлайн-игры [72]
Браузере игры разных жанров и типов, индивидуальные, а также для социальных сетей и пр.
Разработка игр [102]
Создание игр, программирование, игровые движки, Языки программирования
Моддинг [8]
Модификация игр, перевод, локализация, русификация, ромхакинг
Эмуляция [7]
Эмуляторы и эмуляция компьютеров, консолей, игровых автоматов и прочих систем
Игровые фанфики [2]
Художественная игровая литература, творчество поклонников игр, игровых систем и платформ.
Настольные игры и игрушки [32]
Настольные игры, карточные игры, игрушки и сувениры
Опрос геймеров
Сколько часов в сутки вы играете в игры?
Всего ответов: 17050
Главная » Статьи » Игровые статьи » Разработка игр

Подсчет очков и вывод текста на экран [XBOX 360]
Подсчет очков и вывод текста на экран

В этой главе мы добавим в игру несколько дополнительных игровых элементов, которые позволят улучшить качество игрового процесса, да и сама игра приобретет некоторую цель. Что касается цели, то по сюжету игры пользователь обязанлов ить и не ловить различные предметы, падающие с неба. В связи с этим в игре необходимо реализовать механизм, который будет вести простой подсчет набранных очков.
Прежде всего вы должны проработать стратегию начисления очков игроку.
Вариантов здесь много, и все зависит от самой цели игры. Например, можно подсчитывать очки только от тех предметов, которые действительно нужно ловить, а за пойманный предмет, который ловить было не нужно, уменьшать баллы или даже отнимать жизнь у игрока. Можно также весь игровой процесс поставить на счетчик и отводить игроку определенное количество времени, за которое надо набрать как можно больше очков. В этом случае за каждый пойманный предмет, который ловить было не нужно, отнимать у игрока очки или уменьшать игровое время. Система начисления очков в целом определяет всю игровую стратегию и саму цель игры.
В игре «Летящие в прерии» мы будем просто подсчитывать каждый пойманный объект, организовав для каждого предмета свой счетчик. Но в своих играх вам нужно придумать более изощренную систему подсчета очков, чтобы пользователю было действительно интересно играть в вашу игру, поскольку каждый игровой процесс должен иметь определенную конечную цель.
Сама глава разделена на три тематические части. В первой части главы мы
несколько отвлечемся от создания игры и рассмотрим проект MyFont. В этом
проекте вы изучите модель работы с текстом в XNA Game studio Express. В двух последних частях главы мы добавим в игру «Летящие в прерии» подсчет набранных очков и выведем необходимую информацию на экране телевизора.

11.1. Работа с текстом в XNA Game Studio Express

В новую версию XNA Game Studio Express 1.0 Refresh добавлена упрощенная
функция по работе с текстом в играх. Ранее такой возможности не было и приходилось самому писать загрузчик шрифта или использовать сторонние наработки, как это было сделано в аналогичной книге по программированию игр для Windows. Теперь все стало намного проще, и главное – нет необходимости рисовать
собственные спрайтовые шрифты. Так как устроен механизм работы с текстом
в XNA Game Studio Express 1.0 Refresh?
В текущем проекте XNA Game Studio Express 1.0 Refresh необходимо создать
файл шрифта. Этот файл создается на базе встроенного шаблона в XNA Game
Studio Express 1.0 Refresh. После создания файла шрифта вы приступаете к его редакции и задаете, какой именно шрифт (установленный в системе) вы будете использовать. Затем в этом же файле шрифта указываете размер символов, межстрочный интервал, стиль, а также указываете, какие буквы и символы вы хотите задействовать в шрифте. Далее в проекте необходимо добавить исходный код, загружающий шрифт в игру, а также позаботиться о выводе текста на экран.
В момент компиляции проекта на базе установок файла шрифта студия XNA
Game Studio Express 1.0 Refresh, а в точности внутренний импортер Content Pipeline «вытащит» из системы указанный набор символов и букв и создаст отдельный файл шрифта с расширением XNB. Этот файл будет помещен в папку \bin\Xbox36\Debug или Release, откуда программа и прочитает данный шрифт в момент запуска на приставке.
Как видите, все достаточно просто и предельно ясно. Сейчас предлагаю вам
рассмотреть простейший проект MyFont, где мы проследим за всеми стадиями
создания, загрузки и вывода текста на экран телевизора, а затем вернемся к работе над игрой.

11.1.1. Создаем файл шрифта

Создайте новый проект под названием MyFont или используйте исходный код
с диска, который находится в папке Code\Chapter11\MyFont. В этом проекте нам необходимо добавить новый файл шрифта. Делается это следующим образом.
Щелкните правой кнопкой мыши в панели Solution Explorer на названии проекта и в контекстном меню выберите команды Add ⇒ New Item. Откроется диалоговое окно Add NewItem – MyFont (рис. 11.1). Выберите курсором мыши шаблон Sprite Font.
В диалоговом окне Add NewItem MyFont в поле Name необходимо задать название для будущего файла шрифта. Это название файла никак не связано с тем шрифтом, который вы собираетесь загружать в свою игру. Можно дать любое название файлу, но чтобы не путаться в дальнейшем (в проекте можно создать и десяток разных шрифтов), лучше дать название, схожее с самим шрифтом. Из рис. 11.1 видно, что в качестве названия файла было выбрано слово arial. Именно этот шрифт будет связан с данным файлом шрифта. После того как вы дадите название файлу и нажмете кнопку Add в окне Add NewItem MyFont, в проект добавится новый файл arial.spritefont.
Этот файл имеет специфическое расширение, но по сути представляет из себя
простой файл XML-формата. После создания файла шрифта необходимо обязательно его отредактировать и задать ряд установок, на базе которых, как мы выяснили, будет строиться шрифт в игре. Посмотрите в листинг 11.1, где приведен исходный код файла arial.spritefont. В коде жирным шрифтом выделены места редакции файла.

Рис. 11.1. Создание файла шрифта


<!-
* =========================================================================
* Листинг 11.1
* Файл: arial.spritefont
* Шрифт: Arial
* =========================================================================
—>
<?xml version=»1.0" encoding=»utf-8"?>
<!—
Шрифт
—>
<XnaContent
xmlns:Graphics=»Microsoft.Xna.Framework.Content.Pipeline.Graphics»>
<Asset Type=»Graphics:FontDescription»>
<!—
Название шрифта
—>
<FontName>arial
<!—
Определяем размер шрифта
—>
<Size>20
<!—
Задаем расстояние между буквами
—>
<Spacing>2
<!—
Указываем стиль шрифта. Можно использовать «Regular», «Bold» и «Italic».
—>
<Style>Bold
<!—
Выбираем символы и буквы в заданном диапазоне для формирования шрифта
—>
<CharacterRegions>
<CharacterRegion>
<!—
Это для латинских букв
—>
<Start>
<End>~
</CharacterRegion>
<CharacterRegion>
<!—
А это для кириллицы
—>
<Start>А
<End>я
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>


Начнем по порядку. Первым делом вам необходимо указать, какой шрифт вы
будете использовать в игре. Название шрифта задается в следующих полях.

<FontName>arial</FontName>

Между словами FontName необходимо указать имя будущего шрифта. Здесь
есть нюансы. Для использования доступны все шрифты, установленные у вас
в системе. Посмотреть шрифты, установленные у вас на компьютере, можно по
выполнении команды Пуск ->Панель управления ->Шрифты. Выбрав из списка название одного из установленных шрифтов и записав это название между словами FontName, вы автоматически зададите шрифт для файла *.spritefont.
Нужно помнить о том, что не все шрифты распространяются на бесплатной основе. Если речь идет о шрифтах системы Windows, то большая часть этих шрифтов действительно бесплатна, а вот если вы установили в систему сторонние шрифты, то нужно точно знать, на каком виде лицензии эти шрифты распространяются. Возможно, вы не имеете права использовать понравившийся вам шрифт у себя в игре. К слову сказать, в Интернете можно найти массу различных программ (как платных, так и бесплатных), которые позволяют создавать свои шрифты. В этом случае можно нарисовать любой шрифт для игры, затем установить его на компьютер и загрузить в проект.
В поле 20 определяется размер будущего шрифта. В одном
файле можно выставить только один размер, поэтому если вам нужно несколько различных по размеру шрифтов, то вам нужно создать несколько различных файлов *.spritefont. Не забывайте о том, что для телевизора необходимо задавать более крупный размер шрифта (примерно от 18–20 pt), иначе текст будет очень мелкий и читабельность текста будет близка к нулю.
В следующем поле задается стиль шрифта, и здесь
возможно три варианта на выбор (с комбинациями):
* Regular – обычный системный шрифт;
* Bold – жирный шрифт;
* Italic – шрифт с наклоном.
Последняя и очень важная часть редакции файла шрифта заключается в определении символов и букв, которые вы хотите добавить в файл шрифта, а точнее в выборе диапазона символов и букв (от и до). Для латинских букв используется кодировка ASCII, и здесь диапазон возможных символов лежит от числа 32 до числа 126. Между этими числами в кодировке ASCII располагается весь латинский алфавит и наиболее известные символы.

<CharacterRegion>
<!—
Это для латинских букв
—>
<Start>
<End>~
</CharacterRegion>


А вот для кириллицы и других языков уже необходимо использовать Unicode,
и здесь диапазон чисел задается другими цифрами. Как узнать, какой диапазон чисел для определенного языка нужно выбирать?
Для этих целей вам понадобится любая программа, умеющая работать с установленными в систему шрифтами. В Интернете таких программ очень много, как платных, так и бесплатных. Посмотрите на рис. 11.2, где показано рабочее окно программы X-Font.
Открыв программу X-Font, выбрав нужный шрифт и перейдя на вкладку Char
Map Unicode, можно увидеть, что для шрифта Arial русские буквы лежат в диапазоне от 1040 до 1103. Вот именно эти цифры и нужно указать для определения диапазона букв из данного шрифта.

Рис. 11.2. Выбор диапазона символов и букв


<CharacterRegion>
<!—
Аrial для кириллицы
—>
<Start>А
<End>я
</CharacterRegion>


Самое интересное заключается в том, что на разных компьютерных системах
этот диапазон может изменяться. Например, на моем ноутбуке, работающем под управлением Windows XP Home, для шрифта Tahoma русские буквы определены в диапазоне от 1040 до 1103. Тогда как на компьютере под управлением Windows XP Professional этот диапазон уже задается от 1050 до 1190 (включая некоторые символы). Дополнительно для разных шрифтов может существовать свой диапазон чисел, поэтому при создании файла шрифта необходимо точно знать эти данные.
Что будет, если вы неправильно укажите диапазон чисел? Импортер Content
Pipeline в соответствии с вашими установками «выдернет» из шрифта именно те символы и буквы, которые лежат в заданном вами диапазоне, и на базе этих данных создаст шрифт в формате XNB. Здесь проблем нет, все будет нормально работать. А вот когда вы напишите в игре строку текста с не существующими в шрифте буквами, то ваше приложение элементарно не запустится или зависнет/закроется в момент вывода той или иной строки текста на экран, поскольку нет таких букв в созданном вами шрифте. Если у вас возникает именно такая ошибка, то, значит, вы неправильно задали в файле *.spritefont диапазон выбора символов и букв для используемого в игре шрифта.

Не путайте диапазон чисел (для той же кириллицы) в кодировке ASCII и
Unicode. Для ASCII это будут уже совсем другие числа. Например, в программе X_Font (рис. 11.2) для Unicode определена вкладка Char Map
Unicode, а для ASCII – вкладка Char Map ASCII. С нелатинским алфавитом нужно работать исключительно в кодировке Unicode.


Таким нехитрым образом можно создать любое количество шрифтов в игре
для любых языков народов мира (рис. 11.3). Если вас не устраивают системные шрифты, то вы можете создать свои собственные или воспользоваться сторонними разработками, но не забывайте о лицензировании шрифтов.

Рис. 11.3. Азиатские иероглифы


11.1.2. Загружаем шрифт в игру и рисуем на экране текст

После того как файл шрифта создан, нужно написать исходный код для его загрузки в программу. Продолжим рассматривать виртуальный пример со шрифтом Arial. Первым делом в исходном коде программы необходимо создать объект класса SpriteFont. Этот системный класс как раз и дает возможность работать со шрифтом в новой версии XNA Game Studio Express 1.0 Refresh.

SpriteFont arial;

Затем необходимо загрузить шрифт в программу. Для этих целей, как вы знаете, имеется метод LoadGraphicsContent(), отвечающий за загрузку графического контента. Пишем в этом методе следующую строку.

arial = content.Load<SpriteFont>(«arial»);

Когда вы начнете компилировать созданное приложение, импортер Content
Pipeline на базе ваших установок (которые мы рассмотрели в разделе 11.1.1)
сформирует шрифт в формате XNB и положит этот файл в папку \bin\Xbox36\Debug(Release). В момент запуска программы менеджер загрузки графики
в лице объекта content подгрузит в программу шрифт. Посмотрите на рис. 11.4, где показан каталог \bin\Xbox36\Debug проекта MyFont, и вы увидите, что в папке Debug находятся три разных файла для трех разных шрифтов.

Рис. 11.4. Шрифты проекта MyFont

Теперь, чтобы вывести на экран текст, необходимо воспользоваться методом
DrawString(). Этот метод, а точнее три метода были добавлены в новой версии студии.

spriteBatch.DrawString(arial, «Текст», new Vector2(100, 400), Color.Black);

Первый параметр метода DrawString() – это загружаемый в программу шрифт. Второй параметр – это строка текста. Третий параметр определяет место вывода текста на экран (левый верхний угол всей строки текста), а последний параметр задает цвет для букв и символов. Вот и все!

В студии XNA Game Studio Express 1.0 Refresh, кроме рассмотренного метода DrawString(), имеются еще два дополнительных вида этого метода, которые позволяют задавать различные эффекты при выводе текста на экран. В справочной информации к студии вы найдете подробное описание двух оставшихся методов.

Запустите на приставке Xbox 360 демонстрационный пример MyFont из папки Code\Chapter11\MyFont и посмотрите работу этой программы в действии.
Исходный код класса Game1 приведен в листинге 11.2.

//=========================================================================
/// <summary>
/// Листинг 11.2
/// Исходный код к книге:
/// «Программирование игр для приставки Xbox 360 в XNA Game Studio Express»
/// Автор книги: Горнаков С. Г.
/// Глава 11
/// Проект: MyFont
/// Класс: Game1
/// Рисуем текст
/// <summary>
//=========================================================================
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion
namespace MyFont
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
ContentManager content;
SpriteBatch spriteBatch;
SpriteFont arial;
SpriteFont courier;
SpriteFont tahoma;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
graphics.PreferredBackBufferWidth = 1280;
graphics.PreferredBackBufferHeight = 720;
}
protected override void Initialize()
{
base.Initialize();
}
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
arial = content.Load<SpriteFont>(«arial»);
courier = content.Load<SpriteFont>(«Courier New»);
tahoma = content.Load<SpriteFont>(«tahoma»);
}
}
protected override void UnloadGraphicsContent(bool unloadAllContent)
{
if (unloadAllContent)
{
content.Unload();
}
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(new Color(159, 147, 207));
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
// Рисуем 31 букву алфавита. Буква ё не попала в диапазон выбора.
// Поскольку буква ё (строчная) в Arial шрифте идет под номером 1105
spriteBatch.DrawString(arial, «йцукенгшщзхъфывапролджэячсмитьбю\n» +
«ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБ->», new Vector2(100, 200),
Color.Black);
spriteBatch.DrawString(courier, «Уровень: 1 \nНабрано очков: « + 50,
new Vector2(100, 300), Color.Black);
spriteBatch.DrawString(tahoma, «Работа со шрифтом на Xbox 360»,
new Vector2(100, 400), Color.Black);
spriteBatch.End();
base.Draw(gameTime);
}
}
}


11.2. Подсчет очков

Вернемся к игре и продолжим ее улучшать. В качестве базового проекта используем последний проект из десятой главы. Все изменения при подсчете очков касаются только основного класса Game1. Как всегда, исходный код этого проекта вы найдете на компакт-диске в папке Code\Chaper11\Font.
Как мы уже выяснили, любой подсчет очков определяет всю игровую стратегию. В нашем случае за каждый пойманный объект будет начисляться одно очко, иначе говоря, мы будем вести простой подсчет пойманных предметов. Для подсчета очков по каждому падающему объекту нам понадобится отдельная целочисленная переменная.
Переходим к работе над проектом и в классе Game1 в области глобальных переменных класса Game1 объявим пять новых переменных.

int score0, score1, score2, score3, score4;

Все пять переменных пока не имеют никаких значений, и нам необходимо
инициализировать их. В методе Initialize() зададим каждой переменной нулевое значение, поскольку игрок еще не поймал ни одного объекта.

// Обнуляем имеющиеся очки
score0 = 0;
score1 = 0;
score2 = 0;
score3 = 0;
score4 = 0;


Теперь мы имеем пять переменных для каждого падающего объекта. Чтобы
начислить одно очко за каждый пойманный объект или подсчитать количество пойманных объектов, нам необходимо при столкновении ковраамолета с одним из объектов увеличить соответствующую переменную. Посмотрите на исходный код обработки столкновения для падающего объекта под номером два.

if (bbplatform.Intersects(bb[2]))
{
sprite[2].spritePosition = new Vector2(rand.Next(50, screenWidth -
sprite[2].spriteTexture.Width / 12 - 50), -500);
score2 += 1;
}


В этом коде видно, что как только ковер-самолет ловит объект или происходит пересечение двух ограничивающих прямоугольников, значение переменной score2 увеличивается на единицу. Для этого используется упрощенный вариант увеличения значения на единицу, но если развернуть эту строку кода, то она будет выглядеть вот так:

score2 = score2 + 1;

Точно такой же подход при подсчете очков необходимо использовать и для
оставшихся четырех объектов (см. листинг 11.3). В том случае если вашей целью является только подсчет падающих предметов, то в коде можно создать массив данных для подсчета очков (если нужно считать очки по каждому объекту) или выделить одну переменную для общего подсчета всех очков.


// очки по каждому объекту в массиве данных
score[i] += 1;
// подсчет общего количества очков для всех объектов разом
score += 1;


Здесь все определяет общая стратегия игры. Например, при столкновении ковра-самолета и объекта (который ловить не нужно) можно отнимать набранные баллы как по каждой переменной отдельно, так и по общему количеству очков:

Score2 -= 1;

или

score -= 1;

При этом если вы ведете подсчет жизней игрока, то за каждое ненужное столкновение ковра и объекта, кроме уменьшения очков, можно также уменьшать игровую жизнь пользователя или даже уменьшать время, отведенное на игру. Повторюсь, все определяет игровая стратегия, которую необходимо очень тщательно продумать.
Все, что касается подсчета очков, мы выяснили, и, как оказалось, дело это совсем не сложное, поэтому переходим к третьей части главы, цель которой состоит в том, чтобы нарисовать на экране набранные пользователем очки и другую сопутствующую информацию.

11.3. Выводим на экран телевизора подсчет очков

На этом этапе создания игры на экран телевизора мы будем выводить простой подсчет пойманных объектов. Вот как это делается в методе Draw() класса Game1.

int y = 60; // отступ от верхней части экрана
int y1 = 25; // расстояние между строками
spriteBatch.DrawString(courier, «Девушка: « + score0,
new Vector2(screenWidth - 250, y), Color.Black);
spriteBatch.DrawString(courier, «Чемодан: « + score1,
new Vector2(screenWidth - 250, y += y1), Color.Black);


Здесь, думается, все понятно. Единственное, что нужно обязательно учитывать при работе с текстом в телевизионных системах, – это возможность искажения данных, рисуемых вблизи краев экрана. Дело в том, что телевизор по сравнению с монитором в своих крайних точках (углы и все четыре кромки экранов) может иметь большое искажение. Посмотрите на рис. 11.5, где показана зона возможного искажения экрана телевизора. В связи с этим, рисуя статическую игровую графику на экране телевизора (текст, очки…), необходимо обязательно отступать некоторое количество пикселей от краев экрана, чтобы избежать видимых искажений.
Исходный код всего класса Game1 проекта Font приведен в листинге 11.3.
Полный исходный код проекта Font вы найдете на компакт-диске в папке
Code\Chapter11\Font.


Рис. 11.5. Зоны искажения телевизора


//=========================================================================
/// <summary>
/// Листинг 11.3
/// Исходный код к книге:
/// «Программирование игр для приставки Xbox 360 в XNA Game Studio Express»
/// Автор книги: Горнаков С. Г.
/// Глава 11
/// Проект: Font
/// Добавляем текст и подсчет очков
/// <summary>
//=========================================================================
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion
namespace Font
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
ContentManager content;
SpriteBatch spriteBatch;
Sprite[] sprite = new Sprite[5];
private Texture2D background;
Random rand = new Random();
int screenWidth, screenHeight;
int j = 0;
Sprite platform;
private bool paused = false;
private bool pauseKeyDown = false;
public BoundingBox bbplatform;
public BoundingBox[] bb = new BoundingBox[5];
SpriteFont courier;
int score0, score1, score2, score3, score4;
///

/// Конструктор
///

public Game1()
{

}
/// <summary>
/// Инициализация
/// <summary
protected override void Initialize()
{

score0 = 0;
score1 = 0;
score2 = 0;
score3 = 0;
score4 = 0;
base.Initialize();
}
/// <summary>
/// Загрузка компонентов игры
/// <summary>
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{

courier = content.Load<SpriteFont>(«tahoma»);
}
}
/// <summary>
/// Освобождаем ресурсы
/// <summary>
protected override void UnloadGraphicsContent(bool unloadAllContent)
{

}
/// <summary>
/// Обновляем состояние игры
/// <summary>
protected override void Update(GameTime gameTime)
{

}
/// <summary>
/// Движение спрайта по вертикали
/// <summary>
public void MoveSprite()
{

}
/// <summary>
/// Движение платформы по экрану
/// <summary>
public void MovePlatform()
{

}
/// <summary>
/// Пауза в игре
/// <summary>
public void Pause()
{

}
/// <summary>
/// Столкновения
/// <summary>
public void Collisions()
{
bbplatform.Min = new Vector3(platform.spritePosition.X,
platform.spritePosition.Y + 45, 0);
bbplatform.Max = new Vector3(platform.spritePosition.X +
platform.spriteTexture.Width, platform.spritePosition.Y +
45 + platform.spriteTexture.Height, 0);
for (int i = 0; bb.Length > i; i++)
{
bb[i].Min = new Vector3(sprite[i].spritePosition.X,
sprite[i].spritePosition.Y, 0);
bb[i].Max = new Vector3(sprite[i].spritePosition.X +
sprite[i].spriteTexture.Width / 12,
sprite[i].spritePosition.Y + sprite[i].spriteTexture.Height, 0);
}
if (bbplatform.Intersects(bb[0]))
{
sprite[0].spritePosition = new Vector2(rand.Next(50, screenWidth -
sprite[0].spriteTexture.Width / 12 - 50), -500);
score0 += 1;
}
if (bbplatform.Intersects(bb[1]))
{
sprite[1].spritePosition = new Vector2(rand.Next(50, screenWidth -
sprite[1].spriteTexture.Width / 12 - 50), -500);
score1 += 1;
}
if (bbplatform.Intersects(bb[2]))
{
sprite[2].spritePosition = new Vector2(rand.Next(50, screenWidth -
sprite[2].spriteTexture.Width / 12 - 50), -500);
score2 += 1;
}
if (bbplatform.Intersects(bb[3]))
{
sprite[3].spritePosition = new Vector2(rand.Next(50, screenWidth -
sprite[3].spriteTexture.Width / 12 - 50), -500);
score3 += 1;
}
if (bbplatform.Intersects(bb[4]))
{
sprite[4].spritePosition = new Vector2(rand.Next(50, screenWidth -
sprite[4].spriteTexture.Width / 12 - 50), -500);
score4 += 1;
}
}
/// <summary>
/// Рисуем на экране
/// <summary>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(background, new Vector2(0, 0), Color.White);
for (int i = 0; sprite.Length > i; i++)
{
sprite[i].DrawAnimationSprite(spriteBatch);
}
platform.DrawSprite(spriteBatch);
if (paused == true)
{
spriteBatch.DrawString(courier, «ПАУЗА\nнажмите START»,
new Vector2(600, 300), Color.Black);
}
int y = 60;
int y1 = 25;
spriteBatch.DrawString(courier, «Девушка: « + score0,
new Vector2(screenWidth - 250, y), Color.Black);
spriteBatch.DrawString(courier, «Чемодан: « + score1,
new Vector2(screenWidth - 250, y += y1), Color.Black);
spriteBatch.DrawString(courier, «Парень: « + score2,
new Vector2(screenWidth - 250, y += y1), Color.Black);
spriteBatch.DrawString(courier, «Обломки: « + score3,
new Vector2(screenWidth - 250, y += y1), Color.Black);
spriteBatch.DrawString(courier, «Тетя: « + score4, new Vector2(screenWidth
- 250, y += y1), Color.Black);
spriteBatch.End();
base.Draw(gameTime);
}
}
}


Категория: Разработка игр | Добавил: G-GURU (05.07.2011)
Просмотров: 5027 | Рейтинг: 5.0/2 |
Вы можете отправить сообщение на e-mail друга:

Интересное геймерам:

Смотрите другие материалы по темам: вывод текста, Xbox, Text, 360, Xbox 360, Подсчет очков.

Также вам предлагаются схожие с «Подсчет очков и вывод текста на экран [XBOX 360]» материалы:

Если понравился материал «Подсчет очков и вывод текста на экран [XBOX 360]» и вы можете обсудить его ниже.

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск информации
Игровые братья
Создание игр, Конструкторы игр, Игровые движки Перевод консольных игр Разработка игр в СНГ Пранк - телефонные шутки
10 новых описаний
Disney и Epic Games: Слияние Миров и Рождение Новой Эры Развлечений
Oculus Quest2\Pro используется для обучения огнемётчиков на войну
Про Starforce, Cadmus сервер, Браузерные игры
Ставки на спорт: основные и альтернативные площадки MostBet
Будьте в курсе всех требований к монетизации блога в 2024 году
Взгляд на игровые новинки: от бесплатной раздачи в Steam до перемен в PlayStation
Импортозамещение государственных машин процессорами Baikal
Криптовалюта: какую выбрать для вложения и заработка
Онлайн игра World of Sea Battle для настоящих морских волков
Лучшие подкасты для максимальной монетизации вашего блога
Что означает Закон ЕС о цифровых рынках (DMA) для разработчиков игр
Время превратить вашу страсть в прибыль! Монетизируйте свой блог
Как пополнить баланс игрового аккаунта Steam в России
Лучшие настольные игры: Зомбицид, Колонизаторы, Монополия и др.
Премиум-резидент прокси – С неограниченной пропускной способностью
Все права сохранены за сайтом GFAQ.ru © 2024. Games Frequently Asked Questions
Полные прохождения, Секреты, Коды, Пароли, Советы, Уловки, Читы, Описания для Компьютерных и Консольных Игр. Хостинг от uCoz
Обращаем особое внимание на то, что при цитировании и размещении данных текстовых материалов, обязательно прикрепляйте ссылку на официальный сайт "GFAQ.ru".