Тема: GRIG Project
Показать сообщение отдельно
Старый 06.11.2012, 20:49   #9
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Да есть такое ... позже подправлю (тот же "глюк" при нажатии правой кнопки мыши когда наведена на крайние ячейки)

поправил ...

заменить код ...
If MouseDown(1) Or MouseDown(2) And mouse_sel = True Then 
	TXMap = TX : TYMap  = TY 
Else 	
	mouse_sel = False
EndIf
на ...
If MouseDown(1) Or MouseDown(2) And mouse_sel = True Then 
	If TX<num_tileY And TX >0 And TY <num_tileY And TY >0
		TXMap = TX : TYMap  = TY 
	EndIf 
Else 	
	mouse_sel = False
EndIf
исправил мелкие "баги"
теперь если мышь за пределами поля анимация проигрываться не будет , вообще реакций не будет.

Тест Код: виды атаки .(вариант 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 
	If TX<num_tileY And TX >0 And TY <num_tileY And TY >0
		TXMap = TX : TYMap  = TY 
	EndIf 
Else 	
	mouse_sel = False
EndIf 


If MouseHit(1) And mouse_sel = False 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 
		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 
EndIf 

If MouseHit(2) And mouse_sel = False 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 
		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 
EndIf 


Select  playanimation
Case 0 
	If MilliSecs() > tmrSparks + 2180 Then 
		tmrSparks=MilliSecs() ; сбрасываем таймер 
		Read frmSparks 
	If frmSparks =0 Then 
	frmSparks =0:playanimation=0 : Restore elf_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_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_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 

ElseIf attack1 = True And m2 = True 
	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 0,30,70,430,1
	

	
	Rect 0,30,70,5,1
	Rect 730,30,70,430,1
	Color 10,50,0
	Rect 70,50,660,410,0	
	Rect 70,466,660,120,0
	Color 255,255,255	
If TX<num_tileY And TX >0 And TY <num_tileY And TY >0	
		Text 80,445,""+TX+" : "+TY

EndIf 		
		Text 10,20,"mx "+mx+" : my "+my
		Text 10,140,"kolvo "+kolvo_elementov
		Text 10,180,"frmSparks "+frmSparks 
		Text mx,my,"\"
End Function 

.elf_static
Data 3,0
.elf_attack_noj
Data 5,6,7,6,5,0
.elf_attack_luk
Data 1,2,5,0


Сообщение от MoKa Посмотреть сообщение
А можно туда exe скомпилированный скинуть? А то у меня блица под рукой и думаю у многих других тоже не будет..
по просьбе трудящихся добавил EXE. ( его нужно поместить в ранее скаченную папку)

замените код..
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 

ElseIf attack1 = True And m2 = True 
	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
на ...
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 

ElseIf attack1 = True And m2 = True 
	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%)
		
		If TX+1<num_tileY And TX+1 >0 And TY <num_tileY And TY >0 Then 	CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX+1 ,TY )-1 ,GRy + TPosY(TX+1 ,TY )-35 ,vibor%)
		If TX-1<num_tileY And TX-1 >0 And TY <num_tileY And TY >0 Then 	CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX-1 ,TY )-1 ,GRy + TPosY(TX-1 ,TY )-35 ,vibor%)
		If TX<num_tileY And TX >0 And TY+1 <num_tileY And TY+1 >0 Then 	CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX ,TY +1)-1 ,GRy + TPosY(TX ,TY+1 )-35 ,vibor%)
		If TX<num_tileY And TX >0 And TY-1 <num_tileY And TY-1 >0 Then 	CreateStreliba(GRx + TPosX(TXMap,TYMap)+20 ,GRy + TPosY(TXMap,TYMap )- 45 ,GRx + TPosX(TX ,TY -1)-1 ,GRy + TPosY(TX ,TY-1 )-35 ,vibor%)
			
		If TX+1<num_tileY And TX+1 >0 And TY+1 <num_tileY And TY+1 >0 Then 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%)
		If TX-1<num_tileY And TX-1 >0 And TY+1 <num_tileY And TY+1 >0 Then 	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%)
		If TX+1<num_tileY And TX+1 >0 And TY-1 <num_tileY And TY-1 >0 Then 	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%)
		If TX-1<num_tileY And TX-1 >0 And TY-1 <num_tileY And TY-1 >0 Then 	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
исправил очередной "баг".
Вложения
Тип файла: exe GRIG 5.exe (1.30 Мб, 120 просмотров)

Последний раз редактировалось polopok, 07.11.2012 в 06:54.
(Offline)
 
Ответить с цитированием