[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Исходники (ваши примеры кода)
Исходники
MishanayCoolДата: Среда, 26.01.2011, 11:45 | Сообщение # 11
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
определение логических дисков на венчестере
Code
wert=CallDLL ("kernel32.dll", "GetLogicalDrives")
For i=0 To 25
     ShiftedData=wert Shr i
     BitValue = ShiftedData And 1;
     If BitValue<>0
      Print Chr(65+i)+":\"
     EndIf
Next
WaitKey
End

печать на принтер

Code
;use this command:
ExecFile ("c:\windows\system32\mspaint.exe HHW_WP02-1600.jpg /p") ;<-- Имя вашей картинки
;или так:
ExecFile "HHW_WP02-1600.jpg" ;<-- Имя вашей картинки

Запись данных в реестор
Скачать RecordReg.rar


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Среда, 26.01.2011, 11:57
 
turBOДата: Четверг, 27.01.2011, 21:55 | Сообщение # 12
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
Функция дописывает строки в текстовый лог-файл:
Code

Function TB_Protocol (filename$,message$)  
Local filein%
   
   If sys_log>0 Then ;глобальная переменная вести\не вести Лог
    msg$=CurrentDate$()+" "+CurrentTime$()+"  Description: "+message
    filein = OpenFile(filename)   
    While Not Eof( filein )   
     Number = ReadLine( filein ) ;проходим имеющиеся строки   
    Wend   
    WriteLine( filein, msg ) ;пишем новую строку
    CloseFile( filein )   
   EndIf
   DebugLog message   
End Function

Нахождение координат точки между двумя объектами в пространстве:

Code
mid_x#=EntityX(ent1)+(EntityX(ent2)-EntityX(ent1))/2
mid_z#=EntityZ(ent1)+(EntityZ(ent2)-EntityZ(ent1))/2
mid_y#=EntityY(ent1)+(EntityY(ent2)-EntityY(ent1))/2


If 2+2<>4 Then Restart
 
MishanayCoolДата: Пятница, 28.01.2011, 12:35 | Сообщение # 13
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
Какой раз убеждаюсь что всё гениальное просто.
Я ради этого либу даже писал, а тут всё просто и всё стандартными средствами Blitz3D.
Как я сам не догадался так сделать?
Короче, код честно слямзил с другого форума BLITZ ON-LINE WORLD

Изменение размеров рисунка в реальном времени, не требователен к ресурсам.

Code
Graphics 800,600

Global scratch%=CreateImage(640,480)

i=CreateImage(256,256)
SetBuffer ImageBuffer(i)
For n=0 To 200
    Color Rand(256),Rand(256),Rand(256)
    Oval Rand(256),Rand(256),32+Rand(64),32+Rand(64)
Next

SetBuffer BackBuffer()
Repeat
    Cls
    drawsizeimage i,0,0,256+128*Cos(ang#),256+128*Cos(1.7*ang#)
    ang#=ang#+3
    Flip
Until KeyHit(1)

Function DrawSizeImage(image,x%,y%,w%,h%)
        Local ih%=ImageHeight(image)
        Local iw%=ImageWidth(image)

        Local sw%=Abs(w)
        Local sh%=Abs(h)
           
        Local xr#=(Float(iw)/Float(sw))
        Local yr#=(Float(ih)/Float(sh))
           
        fromimg=ImageBuffer(image)
        toimg=ImageBuffer(scratch)
           
        Local vf=-1+((h>0)*2)
           
        Local fw=(w<0)*w
        Local fh=(h<0)*h
           
        If w>=0
             For ix=0 To sw
                  CopyRect ix*xr,0,1,ih,ix,0,fromimg,toimg
             Next
        Else
             For ix=0 To sw
                  CopyRect ix*xr,0,1,ih,sw-ix,0,fromimg,toimg
             Next
        EndIf
           

        For iy=0 To sh
             CopyRect 0,iy*yr,sw,1,x+fw,y+(iy*vf),toimg
        Next

End Function


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Пятница, 28.01.2011, 12:38
 
SpidyДата: Пятница, 28.01.2011, 13:21 | Сообщение # 14
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Движение одного объекта на другой по прямой траектории (градусы) для 2D
Вычисление X и Y

Code
coef=1.4
angle = ATan2(x1,y1)   
x = Sin(angle)*coef   
y = Cos(angle)*coef
//x1 и y1 -коорд. первого объекта

Для того, чтобы код выполнялся не каждый проход цикла

Code
timer= <задержка>
if (MilliSecs() /  timer) Mod 2 then ...

Преобразование short (2байта), засейвенного в 4-байтовом блитцевском int-е, в адекватный 4-байтовый блитцевский же инт.

Code
Function Short2Int%(a%)
  Local M1%=%00000000000000001000000000000000
  Local M2%=%11111111111111110000000000000000
  Local D%=a And M1
  If D
   a = a Xor M2
  EndIf
  Return a
End Function


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
DarknessДата: Понедельник, 31.01.2011, 06:54 | Сообщение # 15
ламер
Группа: Пользователи
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
To Spidy

Интересный код. Не мог бы ты пояснить строчку "Local D%=a And M1", как она работает. Программирую уже не первый год на Блице, но впервые вижу подобную конструкцию.

 
MishanayCoolДата: Вторник, 25.10.2011, 05:57 | Сообщение # 16
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
И в правду как то не по Blitz'евски.
Я всегда считал что команду AND возможно применять
лишь в одном случае типа If x=1 AND x=2 then и так далее...

А если так? wink
Code
abc%=10 And 3
Print abc
WaitKey():End


Даёт 2, почему? wacko

Добавлено (16.02.2011, 10:26)
---------------------------------------------
Code
Движение одного объекта на другой по прямой траектории (градусы) для 2D
Вычисление X и Y


Немножко переделал код Spidy
Code

Global LoadPathMouse=0,radius,begin_X,begin_Y,end_X,end_Y,cos_x#,sin_x#,angle#,speed#

AppTitle"Degrees 2D - PointToPoint"
Graphics 640,480,0,2
SetBuffer BackBuffer()          

x1=10
y1=10

x2=500
y2=200
speed#=1
InitPathMouse()
While Not KeyHit(1)          
Cls
result=PathPointToPoint(x1,y1,x2,y2,speed#)
;x1,y1 - координаты первой точки
;x2,y2 - координаты второй точки к которой двигается первая
;speed# - скорость движущей точки
;0 - стоит на месте
;1... и далее - чем больше число, тем больше скорость
;если точки сошлись функция даёт 1, иначе 0
If result=1 Then InitPathMouse():x1=Rnd(10,530):y1=Rnd(10,470):speed#=Rnd(1,5)

Text 10,10,result
Flip
Delay(2)
Wend

Function InitPathMouse()
LoadPathMouse=0
End Function
Function PathPointToPoint(begin_X,begin_Y,end_X,end_Y,speed#)
If LoadPathMouse=0 Then
radius=0
angle#=ATan2(end_Y-begin_Y,end_X-begin_X)
LoadPathMouse=1
EndIf

cos_x#=radius*Cos(angle#)*speed#
sin_x#=radius*Sin(ang        le#)*speed#
Plot begin_X+cos_x#,begin_Y+sin_x#
radius=radius+1

Color 255,255,255:Plot end_X,end_Y

If (begin_X+cos_x#-(speed#+1))<end_X And (begin_X+cos_x#+(speed#+1))>end_X Then
If (begin_Y+sin_x#-(speed#+1))<end_Y And (begin_Y+sin_x#+(speed#+1))>end_Y Then
Color 255,0,0:Plot end_X,end_Y:Color 255,255,255
Delay(10)
Return 1
EndIf
EndIf

Return 0
End Function


Вот ещё коды, очень рекомендую.
Там есть один примерчик зеркального отражения дороги
и сделано стандартными средствами Blitz3D.
Особенно код будет полезен тем кто пишет гоночные симуляторы и не только.
с SaveFrom blitz3D samples.rar 927kb
или эта
с Deposite blitz3D samples.rar 927kb

---------------------------------------------
И ещё
В этих примерах особо хочу отметить
Код динамические столкновения - лично я сразу решил кучу проблем
blitz3D samples2.rar 10.8kb

Добавлено (19.04.2011, 05:10)
---------------------------------------------
Fast_Pixel_Выделение
Code
Global PixX,PixY,PixWidth,PixHeight,pix,q,w,e,r

AppTitle"Gamma"

Graphics 800,600,0,2
SetBuffer BackBuffer()

While Not KeyHit(1)
Cls
SetFont LoadFont("Arial",16)
Color 255,255,255:Rect 0,0,800,600,1
Color 0,0,0
Text 10,10,"Sergey 'Itmbin' Petruhin"
Text 10,25,"Andrey 'ANDREYman' Vinogradov"
Text 10,40,"Mikhail 'MixailV' Vostrikov "
Text 10,55,"Anton 'Zidane' Yarcev"
Text 10,70,"Kirill [Squid] Yakovlev"
Text 10,85,"Vladimir 'Rotator' Selivanov"
Text 10,100,"Mykola 'Voodoo' Serafym"
Text 10,115,"Sergey 'Uniq' Ruban"

Read_Draw_pixel(MouseX(),MouseY(),MouseX()+100,MouseY()+18)

Flip
Wend

End

Function Read_Draw_pixel(PixX,PixY,PixWidth,PixHeight)

If PixX<0 Then PixX=0
If PixX>GraphicsWidth() Then PixX=GraphicsWidth()
If PixY<0 Then PixY=0
If PixY>GraphicsWidth() Then PixY=GraphicsHeight()

LockBuffer GraphicsBuffer()
For w=PixY To PixHeight
For q=PixX To PixWidth
If KeyDown(1) Then End
e=q:r=w
If q>GraphicsWidth() Then e=GraphicsWidth()
If w>GraphicsHeight() Then r=GraphicsHeight()
If q<1 Then e=1
If w<1 Then r=1

pix=ReadPixelFast(e,r)
If pix=-16777200 Then
WritePixelFast e,r,-1
Else
WritePixelFast e,r,-16776961
EndIf
If KeyDown(1) Then End
Next
Next
UnlockBuffer GraphicsBuffer()
End Function


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Вторник, 25.10.2011, 05:58
 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Исходники (ваши примеры кода)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: