Исходники
| |
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 и так далее...
А если так? Code abc%=10 And 3 Print abc WaitKey():End
Даёт 2, почему?
Добавлено (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 |
|
| |
|