Реклама
AllBasic
Искать на Озоне



Стабилизация Скорости:

`скорость игры: 
fps_UPS=60 
fps_period=1000/fps_UPS
fps_time=timer()-fps_period
do
  Repeat
     fps_elapsed=timer()-fps_time
  Until fps_elapsed
  fps_ticks=fps_elapsed/fps_period
  For fps_f=1 To fps_ticks
     fps_time=fps_time+fps_period
     `Отводит на основной цикл: 
     gosub CiklGames
  Next fps_f
  sync
loop
`Здесь код игры:
CiklGames:
return

Эффект волн:

Make matrix 1,1000,1000,40,40
do
 w=w+1
 for wx=0 to 30
   for wz=0 to 30
   set matrix height 1,wx,wz,sin((wx*10+w)*12)
   next wz
 next wx
 if w=30 then w=0
 update matrix 1
loop

Определение координат матрицы под курсором:

Вот функция для определения точки матрицы под курсором:
CODE
function mmcoord(object,scrx#,scry#,matnum,msizex#,msizez#,r#,FOV#)
 ax#=camera angle x()
 ay#=camera angle y()
 scrw#=screen width()
 scrh#=screen height()
 hmax# = r#*tan(FOV#/2)
 mh#   = (((scrh#/2-scry#)*2)/scrh#)*hmax#
 wmax# = r#*scrw#/scrh#*tan(FOV#/2)
 mw#   = (((scrx#-scrw#/2)*2)/scrw#)*wmax#
 cl#   = r#*cos(ax#)
 ch#   = (-1*r#)*sin(ax#)
 sl#   = mh#*cos(90-ax#)
 sh#   = mh#*sin(90-ax#)
 ox#    = camera position x() + (cl#+sl#)*sin(ay#) + mw#*cos(ay#)
 oy#    = camera position y() + (ch#+sh#)
 oz#    = camera position z() + (cl#+sl#)*cos(ay#) - mw#*sin(ay#)
 i#=0
  while i#<1
   x# = camera position x() + (ox#-camera position x())*i#
   y# = camera position y() + (oy#-camera position y())*i#
   z# = camera position z() + (oz#-camera position z())*i#
   mpx# = matrix position x(matnum)
   mpz# = matrix position z(matnum)
   mpy# = matrix position y(matnum)
   if x#>=mpx# and x#<=mpx#+msizex# and z#>=mpz# and z#<=mpz#+msizez#
      if y#-mpy#+get ground height(matnum,x#,z#)<=0.0
      position object object, x#,get matrix height(matnum, x#, z#), z#
      exitfunction
     endif
   ENDIF
  i#=i#+(1.0/r#)
 endwhile
endfunction

В этой функции:Object - номер объекта, который ставится под курсор
scrx# - Координата курсора по оси X
scry# - Координата курсора по оси Y
matnum - Номер матрицы, на которой определяются координаты
msizex# - Размер матрицы, но которой определяются координаты, по оси X
msizez# - Размер матрицы, но которой определяются координаты, по оси Z
r# - Дальность рендеринга камеры
FOV# - Вроде бы угол обзора камеры.

Надо учитывать, что при использовании этой функции в ДБклассик, все передаваемые значения должны строго соответствовать по типу с объявленными в переменной. Т.е. координаты курсора по оси X и Y должны быть вещественными. Эту функции можно использовать и в ДБпро, там не обязательно строгое соответствие параметров функции. Примечание: При большом удалении точки от камеры (например вид от 1-го лица при большой дистанции обзора камеры) функция начинает тормозить. В ДБпро это не сильно влияет на производительность, но в ДБклассик заметно.

Загрузка шрифта из картинки:

`========================
================= Загружает шрифты из 'изображения 
`FontNum - номер шрифта,
'FontFile$ - название файла
function LoadImageFont(FontNum,FontFile$)
load image FontFile$,29999
paste image 29999,0,0
StartImage=30000+(FontNum*256)
x=0
y=0
for a=StartImage to StartImage+223
  get image a,x,y,x+32,y+32
  x=x+32
  if x=512 then y=y+32:x=0
next a
cls
delete image 29999
endfunction
`====================
`Создает текст из шрифтов-изображений 
`Texture - номер создаваемой текстуры, 
'Text$ - текст, FontNum - номер шрифта, 
'Distance - 'расстояние между символами
`Center - центрировать текст, 
'XSize,Ysize - размеры создаваемой текстуры
function MakeTFIF(Texture,Text$,FontNum,Distance,Center,XSize,YSize)
StartImage=30000+(FontNum*256)
x=0:y=0
for a=1 to len(Text$)
Symbol=asc(mid$(Text$,a))
if Symbol=32 then Width=8:`
if Symbol=33 then Width=4:`!
if Symbol=34 then Width=10:`"
if Symbol=35 then Width=15:`#
if Symbol=36 then Width=12:`$
if Symbol=37 then Width=22:`%
if Symbol=38 then Width=18:`&
if Symbol=39 then Width=4:`'
if Symbol=40 then Width=7:`(
if Symbol=41 then Width=7:`)
if Symbol=42 then Width=10:`*
if Symbol=43 then Width=14:`+
if Symbol=44 then Width=4:`,
if Symbol=45 then Width=8:`-
if Symbol=46 then Width=4:`.
if Symbol=47 then Width=8:`/
if Symbol=48 then Width=13:`0
if Symbol=49 then Width=9:`1
if Symbol=50 then Width=13:`2
if Symbol=51 then Width=13:`3
if Symbol=52 then Width=14:`4
if Symbol=53 then Width=13:`5
if Symbol=54 then Width=13:`6
if Symbol=55 then Width=13:`7
if Symbol=56 then Width=13:`8
if Symbol=57 then Width=13:`9
if Symbol=58 then Width=4:`:
if Symbol=59 then Width=4:`;
if Symbol=60 then Width=13:`<
if Symbol=61 then Width=14:`=
if Symbol=62 then Width=13:`>
if Symbol=63 then Width=14:`?
if Symbol=64 then Width=25:`@
if Symbol=65 then Width=19:`A
if Symbol=66 then Width=17:`B
if Symbol=67 then Width=18:`C
if Symbol=68 then Width=17:`D
if Symbol=69 then Width=15:`E
if Symbol=70 then Width=14:`F
if Symbol=71 then Width=18:`G
if Symbol=72 then Width=16:`H
if Symbol=73 then Width=4:`I
if Symbol=74 then Width=13:`J
if Symbol=75 then Width=17:`K
if Symbol=76 then Width=14:`L
if Symbol=77 then Width=19:`M
if Symbol=78 then Width=16:`N
if Symbol=79 then Width=19:`O
if Symbol=80 then Width=15:`P
if Symbol=81 then Width=20:`Q
if Symbol=82 then Width=18:`R
if Symbol=83 then Width=16:`S
if Symbol=84 then Width=16:`T
if Symbol=85 then Width=16:`U
if Symbol=86 then Width=17:`V
if Symbol=87 then Width=25:`W
if Symbol=88 then Width=16:`X
if Symbol=89 then Width=18:`Y
if Symbol=90 then Width=16:`Z
if Symbol=91 then Width=7:`[
if Symbol=92 then Width=8:`\
if Symbol=93 then Width=7:`]
if Symbol=94 then Width=12:`^
if Symbol=95 then Width=16:`_
if Symbol=96 then Width=6:``
if Symbol=97 then Width=13:`a
if Symbol=98 then Width=14:`b
if Symbol=99 then Width=13:`c
if Symbol=100 then Width=14:`d
if Symbol=101 then Width=13:`e
if Symbol=102 then Width=9:`f
if Symbol=103 then Width=14:`g
if Symbol=104 then Width=13:`h
if Symbol=105 then Width=4:`i
if Symbol=106 then Width=7:`j
if Symbol=107 then Width=12:`k
if Symbol=108 then Width=4:`l
if Symbol=109 then Width=22:`m
if Symbol=110 then Width=13:`n
if Symbol=111 then Width=15:`o
if Symbol=112 then Width=14:`p
if Symbol=113 then Width=14:`q
if Symbol=114 then Width=9:`r
if Symbol=115 then Width=13:`s
if Symbol=116 then Width=9:`t
if Symbol=117 then Width=13:`u
if Symbol=118 then Width=13:`v
if Symbol=119 then Width=21:`w
if Symbol=120 then Width=13:`x
if Symbol=121 then Width=15:`y
if Symbol=122 then Width=12:`z
if Symbol=123 then Width=9:`{
if Symbol=124 then Width=3:`|
if Symbol=125 then Width=9:`}
if Symbol=126 then Width=14:`~
if Symbol=127 then Width=14:`
if Symbol=128 then Width=23:`Ђ
if Symbol=129 then Width=13:`Ѓ
if Symbol=130 then Width=4:`‚
if Symbol=131 then Width=9:`ѓ
if Symbol=132 then Width=10:`„
if Symbol=133 then Width=22:`…
if Symbol=134 then Width=14:`†
if Symbol=135 then Width=14:`‡
if Symbol=136 then Width=15:`€
if Symbol=137 then Width=28:`‰
if Symbol=138 then Width=29:`Љ
if Symbol=139 then Width=7:`‹
if Symbol=140 then Width=26:`Њ
if Symbol=141 then Width=14:`Ќ
if Symbol=142 then Width=22:`Ћ
if Symbol=143 then Width=16:`Џ
if Symbol=144 then Width=15:`ђ
if Symbol=145 then Width=4:`‘
if Symbol=146 then Width=4:`’
if Symbol=147 then Width=10:`“
if Symbol=148 then Width=10:`”
if Symbol=149 then Width=8:`•
if Symbol=150 then Width=15:`–
if Symbol=151 then Width=27:`—
if Symbol=152 then Width=14:`?
if Symbol=153 then Width=19:`™
if Symbol=154 then Width=25:`љ
if Symbol=155 then Width=7:`›
if Symbol=156 then Width=21:`њ
if Symbol=157 then Width=12:`ќ
if Symbol=158 then Width=15:`ћ
if Symbol=159 then Width=13:`џ
if Symbol=160 then Width=8:` 
if Symbol=161 then Width=17:`Ў
if Symbol=162 then Width=15:`ў
if Symbol=163 then Width=13:`Ј
if Symbol=164 then Width=14:`¤
if Symbol=165 then Width=10:`Ґ
if Symbol=166 then Width=3:`¦
if Symbol=167 then Width=13:`§
if Symbol=168 then Width=15:`Ё
if Symbol=169 then Width=20:`©
if Symbol=170 then Width=17:`Є
if Symbol=171 then Width=13:`«
if Symbol=172 then Width=14:`¬
if Symbol=173 then Width=8:`
if Symbol=174 then Width=20:`®
if Symbol=175 then Width=9:`Ї
if Symbol=176 then Width=8:`°
if Symbol=177 then Width=14:`±
if Symbol=178 then Width=4:`І
if Symbol=179 then Width=4:`і
if Symbol=180 then Width=9:`ґ
if Symbol=181 then Width=13:`µ
if Symbol=182 then Width=14:`¶
if Symbol=183 then Width=4:`·
if Symbol=184 then Width=13:`ё
if Symbol=185 then Width=27:`№
if Symbol=186 then Width=13:`є
if Symbol=187 then Width=13:`»
if Symbol=188 then Width=7:`ј
if Symbol=189 then Width=16:`Ѕ
if Symbol=190 then Width=13:`ѕ
if Symbol=191 then Width=9:`ї
if Symbol=192 then Width=19:`А
if Symbol=193 then Width=16:`Б
if Symbol=194 then Width=17:`В
if Symbol=195 then Width=13:`Г
if Symbol=196 then Width=18:`Д
if Symbol=197 then Width=15:`Е
if Symbol=198 then Width=24:`Ж
if Symbol=199 then Width=16:`З
if Symbol=200 then Width=15:`И
if Symbol=201 then Width=15:`Й
if Symbol=202 then Width=14:`К
if Symbol=203 then Width=17:`Л
if Symbol=204 then Width=19:`М
if Symbol=205 then Width=16:`Н
if Symbol=206 then Width=19:`О
if Symbol=207 then Width=15:`П
if Symbol=208 then Width=15:`Р
if Symbol=209 then Width=18:`С
if Symbol=210 then Width=16:`Т
if Symbol=211 then Width=17:`У
if Symbol=212 then Width=20:`Ф
if Symbol=213 then Width=16:`Х
if Symbol=214 then Width=17:`Ц
if Symbol=215 then Width=15:`Ч
if Symbol=216 then Width=22:`Ш
if Symbol=217 then Width=24:`Щ
if Symbol=218 then Width=22:`Ъ
if Symbol=219 then Width=22:`Ы
if Symbol=220 then Width=16:`Ь
if Symbol=221 then Width=17:`Э
if Symbol=222 then Width=25:`Ю
if Symbol=223 then Width=17:`Я
if Symbol=224 then Width=13:`а
if Symbol=225 then Width=15:`б
if Symbol=226 then Width=14:`в
if Symbol=227 then Width=9:`г
if Symbol=228 then Width=16:`д
if Symbol=229 then Width=13:`е
if Symbol=230 then Width=20:`ж
if Symbol=231 then Width=12:`з
if Symbol=232 then Width=13:`и
if Symbol=233 then Width=13:`й
if Symbol=234 then Width=12:`к
if Symbol=235 then Width=15:`л
if Symbol=236 then Width=17:`м
if Symbol=237 then Width=12:`н
if Symbol=238 then Width=15:`о
if Symbol=239 then Width=12:`п
if Symbol=240 then Width=14:`р
if Symbol=241 then Width=13:`с
if Symbol=242 then Width=12:`т
if Symbol=243 then Width=15:`у
if Symbol=244 then Width=22:`ф
if Symbol=245 then Width=13:`х
if Symbol=246 then Width=14:`ц
if Symbol=247 then Width=12:`ч
if Symbol=248 then Width=18:`ш
if Symbol=249 then Width=20:`щ
if Symbol=250 then Width=17:`ъ
if Symbol=251 then Width=19:`ы
if Symbol=252 then Width=14:`ь
if Symbol=253 then Width=13:`э
if Symbol=254 then Width=20:`ю
if Symbol=255 then Width=14:`я
Image=StartImage+Symbol-32
paste image Image,x,0,1
x=x+Width+Distance
next a
x=x-Distance
get image Texture,0,0,x,32
cls
if center=1 then x=(XSize-x)/2 else x=0
paste image Texture,x,(YSize/2)-16
get image Texture,0,0,XSize,YSize
cls
endfunction
`==================
`== Удалить шрифт 
`FontNum - Номер шрифта
function DeleteImageFont(FontNum)
StartImage=30000+(FontNum*256)
for a=StartImage to StartImage+223
delete image a
next a
endfunction


DarkBASIC Deluxe - это сам DB(полный) + Dark Matter(куча 3D-моделей, текстур, исходников, звуков и т.д.)

DarkBASIC.Архив - Demo DB, полная версия Catography Shop, а также утилиты,текстуры, звуки пр. Всего за 100р.!

Учебник по VB + CD=139р.Разбираем!

Связь через: maxim1441@yandex.ru
Озон Rambler's Top100 Каталог ресурсов Сибири Рейтинг@Mail.ru

Речков М. (Маххх.!!!.). AllBasic. Все права защищены. 2005 г.

Hosted by uCoz