Не знаешь, где сделать сайт???   [ на uCoz можно сделать любой, даже самый сложный сайт... ]
Как вести счет (Dark Basic) - Dark Basic - Программинг - Каталог статей - Развлекательный сайт для программистов-игроделов



Категории каталога

Программинг [35]
Программинг, уроки, формулы, туториалы
Dark Basic [30]
Помощь начинающим в Dark Basic (Статьи,учебники,книги)
Blitz 3d [7]
Статьи и уроки по Blitz 3d
C/C++ [7]
Статьи по C/C++
Delphi [12]
книги, уроки, статьи, программирование в Delphi
Game Maker [12]
Статьи, помощь для программистов игроделов на Game Maker
Ассемблер (Assembler) [5]
Стати по Ассемблеру для начинающих и продвинутых программистов
ВЕБ-ПРОГРАММИРОВАНИЕ [5]
Уроки и статьи по ВЕБ-программированию

Форма входа

Приветствую Вас Гость!

E-mail:
Пароль:

Поиск

Друзья сайта



    Случайное фото

    Счётчики



    Rambler's Top100 Seo анализ сайта оптимизация

    Статистика

    Онлайн всего: 2
    Гостей: 2
    Пользователей: 0

Поддержите наш проект

WebMoney:
R309699065243
U292079291240
Z373355457648

Наш опрос

Какая операционная система стоит на вашем компьютере?
Всего ответов: 81

Статистика

$COUNTERdiv>
Seven Quadrats of Hell

Каталог статей

Главная » Статьи » Программинг » Dark Basic

Как вести счет (Dark Basic)
РУКОВОДСТВО ПО СОЗДАНИЮ 3D-ИГР
III. ИГРА

11. Как вести счет
Цель урока: показать, как ведется счет игры.

В этом уроке мы покажем, как отслеживать счет игры для игрока и монстра, а также как перемещать игрока и монстра в новое положение, когда их поражает снаряд или ракета.
 

Gosub PlaceMonster
Gosub PlacePlayer

Мы поместили две команды "Gosub" до основного цикла. Соответствующие подпрограммы помещают игрока и монстра на случайные позиции матрицы.

PlaceMonster:
   mX#=X#
   mZ#=Z#
   mY#=Y#
   While Sqrt((X# - MX#)^2 + (Y#+25 - MY#)^2 + (Z# - MZ#)^2)<1600
     mX#=rnd(10000)
     mZ#=rnd(10000)
     mY#= get ground height(1,mX#,mZ#)
   EndWhile

   Position object 3,mX#,mY#,mZ#

Return

Подпрограмма "PlaceMonster", предназначенная для установки случайных координат монстра на матрице, первоначально устанавливает для монстра те же координаты, что и координаты игрока и затем проверяет, чтобы монстр и игрок находились на достаточном расстоянии друг от друга. Первоначальная установка одинаковых координат является необходимым условием для генерации случайной позиции. В тексте этой подпрограммы мы используем цикл "While", чтобы обеспечить определенное условие: цикл повторяется до тех пор, пока расстояние между игроком и монстром не станет больше 1600. Для вычисления расстояния между игроком и монстром мы используем формулу вычисления расстояний из урока по математическому столкновению. Если расстояние меньше 1600, снова выполняется код поиска позиции. Новая случайная позиция рассчитывается и сохраняется в переменных положения монстра. Когда расстояние между игроком и монстром становится больше 1600, цикл завершается и монстр помещается в новом месте.

PlacePlayer:

   While Sqrt((X# - mX#)^2 + (Y#+25 - mY#)^2 + (Z# - mZ#)^2)<1000
    X#=rnd(10000)
    Z#=rnd(10000)
    Y#= get ground height(1,X#,Z#)
    EndWhile

   Position camera X#,Y#,Z#
 
Return

Подпрограмма "PlacePlayer" аналогична подпрограмме "PlaceMonster". Различие только в том, что мы помещаем на матрицу игрока, а не монстра. Мы также направляем камеру в сторону монстра, чтобы его было легче найти.

 set cursor 550,20
 print "MScore: ",MonsterScore
 set cursor 550,40
 print "PScore: ",PlayerScore

Этот код помещается внутри основного цикла. Используя команду "Set cursor", помещаем текст в правой части экрана. В позиции курсора выводим слова "MScore" и "PScore", чтобы показать игровой счет монстра и игрока. Затем выводим значения переменных "MonsterScore" и "PlayerScore".

 if Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2) <20
   Gosub PlaceMonster
   inc PlayerScore
   MonsterBulletLife = 1
   BulletLife=0
  endif

Эта часть кода из подпрограммы "ShootBullet", которая проверяет, был ли монстр поражен снарядом игрока. Мы добавили в сравнение "If" две строки кода. Если монстр был поражен, вызывается подпрограмма "PlaceMonster", чтобы поместить его в новом месте. Затем мы увеличиваем счет игры в пользу игрока, изменяя переменную "PlayerScore" при помощи команды "Inc".
 

Pdist=Sqrt((X# - MbX#)^2 + (Y#+25 - MbY#)^2 + (Z# - MbZ#)^2)
  if  Pdist<50
   GoSub PlacePlayer
   MonsterBulletLife = 0
   inc MonsterScore
  endif

Эта часть кода из подпрограммы "MonsterShootBullet", которая, как и предыдущая, проверяет, был ли поражен игрок ракетой монстра. В случае поражения, вызывается подпрограмма "PlacePlayer", помещающая игрока в новом месте. После этого мы увеличиваем счет игры в пользу монстра при помощи команды "Inc" и возвращаемся в подпрограмму "MonsterShootBullet". 



Ресурсы к урокам на Dark Basic

Категория: Dark Basic | Добавил: quadrathell (29.10.2008)
Просмотров: 470 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email:
Код *:

Реклама




Новости от Radeant.com



Каталоги

Весь интернет в одном каталоге! Украинский портАл

Ещё

Весь интернет в одном каталоге!

Скрипт каталога ссылок

Партнёры Сайта

Все Партнёры

программирование:
LoBoSoFt Team - небольшая компания разрабатывающая разные игры и программки
игры софт mobile музыка:
Новости игр, новости hardware
разное - обо всём:
Сайт Эврика Моё смешное Огненный форум Phoenomix !!! Бесплатный софт - качать бесплатно Уроки фотошоп для начинающих Заработай с нами!

Стать Партнёром