ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: GRIG Project
Сообщение от Arton
Респект. Так держать.
Может побольше разрешение медии сделаешь? Или автоматическое масштабирование. Мне с моим зрением надо в экран тыкаться.
|
крупнее разрешение ни к чему ,так как в перспективе будет АТВ шкала (а-ля Герои меча и магии) .
добавил возможность переноса эльфа( достаточно кликнуть и удерживать ,кнопку мыши, по ячейке с эльфом ,затем переместить на другое место ,отпустить кнопку).
Тест Код: виды атаки .(вариант 3 ,с анимацией)
заменить GRIG 5 на этот код (см. оффтоп)
Include "F_Strela_2.bb"
Include "Grid_2d_iso_2.bb"
Global TX,TY,mx#,my# ,frmSparks
Graphics 800,600,32,2
Load_BackGround_Image()
elf_lukcinik = LoadAnimImage ("Images\hero4.bmp",80,80,0,9)
;ResizeImage elf_lukcinik ,64 ,64
MaskImage elf_lukcinik, 100,100,100 ; 255,255,255 ;
IW = ImageWidth(elf_lukcinik )
IH = ImageHeight(elf_lukcinik )
HandleImage elf_lukcinik,IW/2,IH
fon = CreateImage (761,511)
SetBuffer ImageBuffer(fon )
CreateGrid()
SetBuffer BackBuffer()
Free_BackGround_Image()
vibor%=1
frmSparks =0
TXMap =6
TYMap =6
ClsColor 189 ,183, 107
While Not KeyHit(1)
Cls
mx# = MouseX() : my# = MouseY()
DrawImage fon,0,0
DrawImage elf_lukcinik, GRx + TPosX(TXMap,TYMap) ,GRy + TPosY(TXMap,TYMap) ,frmSparks
;Rect GRx + TPosX(6,6)-16,GRy + TPosY(6,6)-48,32,48
ym# = Floor#((my-GRy)/ TileSizeY)
xm# = Floor#(( (mx-GRx )/ TileSizeX*( (fov/(fov+ym#))) )+num_tileX+1)
TX = Int(xm) : TY = Int(ym)
If KeyDown(2) Then vibor%=1
If KeyDown(3) Then vibor%=2
If KeyDown(4)Then vibor%=3
If KeyDown(5) Then vibor%=4
If MouseDown(1) Or MouseDown(2) And TX = TXMap And TY = TYMap And mouse_sel = False Then mouse_sel = True
If MouseDown(1) Or MouseDown(2) And mouse_sel = True Then
TXMap = TX : TYMap = TY
Else
mouse_sel = False
EndIf
If MouseHit(1) And mouse_sel = False Then
If TX = (TXMap+1) Or TX = (TXMap-1) Or TY = (TYMap-1) Or TY = (TYMap+1) Then
playanimation=2
Restore elf_attack_noj
EndIf
If TX > (TXMap+1) Or TX < (TXMap-1) Or TY < (TYMap-1) Or TY > (TYMap+1) Then
playanimation=1:m1 = True
Restore elf_attack_luk
EndIf
EndIf
If MouseHit(2) And mouse_sel = False Then
If TX = (TXMap+1) Or TX = (TXMap-1) Or TY = (TYMap-1) Or TY = (TYMap+1) Then
playanimation=2
Restore elf_attack_noj
EndIf
If TX > (TXMap+1) Or TX < (TXMap-1) Or TY < (TYMap-1) Or TY > (TYMap+1) Then
playanimation=1:m2 = True
Restore elf_attack_luk
EndIf
EndIf
Select playanimation
Case 0
If MilliSecs() > tmrSparks + 2180 Then
tmrSparks=MilliSecs() ; сбрасываем таймер
Read frmSparks
If frmSparks =0 Then
frmSparks =0:playanimation=0 : Restore elf_attack_static
EndIf
If frmSparks =2 Then attack1 = True
EndIf
Case 1
If MilliSecs() > tmrSparks + 180 Then
tmrSparks=MilliSecs() ; сбрасываем таймер
Read frmSparks
If frmSparks =0 Then
frmSparks =0:playanimation=0 : Restore elf_attack_static
EndIf
If frmSparks =2 Then attack1 = True
EndIf
Case 2
If MilliSecs() > tmrSparks + 180 Then
tmrSparks=MilliSecs() ; сбрасываем таймер
Read frmSparks
If frmSparks =0 Then
frmSparks =0:playanimation=0 : Restore elf_attack_static
EndIf
EndIf
End Select
If attack1 = True And m1 = True Then
If TX<num_tileY And TX >0 And TY <num_tileY And TY >0
If TX > (TXMap+1) Or TX < (TXMap-1) Or TY < (TYMap-1) Or TY > (TYMap+1) Then
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap)- 45 ,GRx + TPosX(TX ,TY )- 1 ,GRy + TPosY(TX ,TY )- 35 ,vibor%)
End If
EndIf
attack1 = False :m1 = False
EndIf
If attack1 = True And m2 = True Then
If TX<num_tileY And TX >0 And TY <num_tileY And TY >0
If TX > (TXMap+1) Or TX < (TXMap-1) Or TY < (TYMap-1) Or TY > (TYMap+1) Then
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap)- 45 ,GRx + TPosX(TX ,TY )- 1 ,GRy + TPosY(TX ,TY )- 35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX+1 ,TY )-1 ,GRy + TPosY(TX+1 ,TY )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX-1 ,TY )-1 ,GRy + TPosY(TX-1 ,TY )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX ,TY +1)-1 ,GRy + TPosY(TX ,TY+1 )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX ,TY -1)-1 ,GRy + TPosY(TX ,TY-1 )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX+1 ,TY +1)-1 ,GRy + TPosY(TX+1 ,TY+1 )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX-1 ,TY +1)-1 ,GRy + TPosY(TX-1 ,TY+1 )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX+1 ,TY -1)-1 ,GRy + TPosY(TX+1 ,TY-1 )-35 ,vibor%)
CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX-1 ,TY -1)-1 ,GRy + TPosY(TX-1 ,TY-1 )-35 ,vibor%)
End If
EndIf
attack1 = False :m2 = False
EndIf
For ss.streliba = Each streliba
UpdateStrela(ss)
If ss <>Null Then
Text 20,160,"dist "+ss\rastoianie_do_misheni#
EndIf
Next
Draw_Ekran()
Flip
Wend
FreeImage elf_lukcinik
FreeImage fon
Delete Each streliba
End
Function Draw_Ekran()
Color 85, 107, 47
Rect 0,0,800,50,1
Rect 0,460,800,140,1
Rect 70,30,660,430,0
Rect 0,30,70,5,1
Rect 730,30,70,430,1
Color 255,255,255
If TX<num_tileY And TX >0 And TY <num_tileY And TY >0
Text 20,60,"X : "+TX
Text 20,80,"Y : "+TY
EndIf
Text 20,100,"mX : "+mx
Text 20,120,"mY : "+my
Text 20,140,"kolvo "+kolvo_elementov
Text 20,180,"frmSparks "+frmSparks
End Function
.elf_attack_static
Data 0,0 ;3,0
.elf_attack_noj
Data 5,6,7,6,5,0
.elf_attack_luk
Data 1,2,5,0
|