Тема: GRIG Project
Показать сообщение отдельно
Старый 07.11.2012, 00:16   #6
polopok
ПроЭктировщик
 
Регистрация: 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
(Offline)
 
Ответить с цитированием