|
Проекты на Blitz3D Обсуждение будущих проектов, демок, набор команды и т.п. |
06.11.2012, 17:12
|
#1
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
GRIG Project
рабочее название: GRIG Project
сюжет: фэнтэзи
жанр: пошаговая стратегия
проект с открытым кодом .(но без комментариев по коду)
Местами код Г....о
Тест Код: виды атаки .
клавишы:
1 - стрела/ы
2 - камень/и или ядра/о
3 - квазар/ы
4 - луч/и или лазер
(esc) - выход из программы
левая кнопка - удар по одной ячейки
правая кнопка - удар по одной ячейки и смежным
код в архиве (открыть в Блитце)
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо polopok за это полезное сообщение:
|
|
06.11.2012, 17:27
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: GRIG Project
Круто что OpenSource, домой приду гляну обязательно!
|
(Offline)
|
|
06.11.2012, 17:30
|
#3
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Кстати желающих присоединится ,добро пожаловать !(писать в личку!)
думаю для вас будет неплохой опыт ...
Тест код: GRIG MAP 4x12 для замка
Войны могут занимать 1,2,3 или 4 клетки
клавиши 1,2,3,4
Global GRx = 400 , GRy = 180 , fov# = 25 ;GRx = 400
Global TileSizeX = 30 , TileSizeY = 20
Global num_tileX = 2 , num_tileY = 13
Dim TPosX#(num_tileY ,num_tileY) : Dim TPosY#(num_tileY ,num_tileY)
Dim TPozX#(num_tileY ,num_tileY) : Dim TPozY#(num_tileY ,num_tileY)
; Mesto ячейка 1- занята , 0 - свободна
Dim Mesto(num_tileY ,num_tileY) : Dim Character(2)
Function CreateGrid()
For y = 1 To num_tileY
For x = -num_tileX To num_tileX
ScaleRatio# = fov/(fov+y)
px# = x*TileSizeX/ScaleRatio
py# = y*TileSizeY
Color 85, 107, 47
; Text GRx +px , GRy +py , x+" "+y
If x<num_tileX Then Line GRx+px , GRy +py , GRx+((x+1)*TileSizeX/ScaleRatio) , GRy +py
If y<num_tileY Then Line GRx+px , GRy +py , GRx+((x)*TileSizeX/(fov/(fov+(y+1)))) , GRy +(y+1)*TileSizeY
TPozX#(x+num_tileX+1,y) = px# ;
TPozY#(x+num_tileX+1,y) = py# ;
Mesto(x+num_tileX+1,y) = 0 ;
If x<num_tileX And y<num_tileY Then
prx# = px+(TileSizeX*0.5)+(x +y)*0.5;
pry# = py+(TileSizeY*0.5)
TPosX(x+num_tileX+1,y) = prx#
TPosY(x+num_tileX+1,y) = pry#
Plot GRx+prx , GRy +pry
; Plot GRx+2 ,GRy+2
EndIf
Next
Next
End Function
Function GridSelect(STX,STY,kolvoseg=1,Sr=0,Sg=0,Sb=0)
If STX<num_tileY And STX >0 And STY <num_tileY And STY >0
Color Sr,Sg,Sb
Line GRx + TPozX(STX,STY) , GRy +TPozY(STX,STY), GRx + TPozX(STX+kolvoseg,STY), GRy +TPozY(STX,STY) ; верхняя
Line GRx + TPozX(STX,STY+kolvoseg) , GRy +TPozY(STX,STY+kolvoseg) , GRx + TPozX(STX+kolvoseg,STY+kolvoseg) ,GRy + TPozY(STX,STY+kolvoseg);нижняя
Line GRx + TPozX(STX,STY) , GRy +TPozY(STX,STY) , GRx + TPozX(STX,STY+kolvoseg) , GRy +TPozY(STX+kolvoseg,STY+kolvoseg);левая
Line GRx + TPozX(STX+kolvoseg,STY) , GRy +TPozY(STX+kolvoseg,STY) , GRx + TPozX(STX+kolvoseg,STY+kolvoseg) , GRy +TPozY(STX+kolvoseg,STY+kolvoseg);правая
Color 255,255,255
EndIf
End Function
Graphics 800,600,32,2
SetBuffer BackBuffer()
seg%=1
ClsColor 189 ,183, 107
While Not KeyHit(1)
Cls
mx# = MouseX() : my# = MouseY()
CreateGrid()
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 seg%=1
If KeyDown(3) Then seg%=2
If KeyDown(4)Then seg%=3
If KeyDown(5) Then seg%=4
If TX<num_tileX+3 And TX >0 And TY <num_tileY And TY >0
Select seg
Case 1
GridSelect(TX,TY,1,255)
Case 2
If TX = 4 Then TX = 3 ;Or TX = 3 Or TX = 4
If TY >num_tileY-seg Then TY =num_tileY-seg
GridSelect(TX,TY,seg,0,255)
GridSelect(TX,TY,1,255)
Case 3
If TX = 3 Or TX = 4 Then TX = 2 ;Or TX = 3
If TY >num_tileY-seg Then TY =num_tileY-seg
GridSelect(TX,TY,seg,0,255)
GridSelect(TX,TY,1,255)
Case 4
If TX = 2 Or TX = 3 Or TX = 4 Then TX = 1 ;
If TY >num_tileY-seg Then TY =num_tileY-seg
GridSelect(TX,TY,seg,0,255)
GridSelect(TX,TY,1,255)
End Select
EndIf
Text mx,my,"\"
Flip
Wend
End
Тест Код: виды атаки .(вариант с анимацией)
код в (offtop e)
Include "F_Strela_2.bb"
Include "Grid_2d_iso.bb"
Global TX,TY,mx#,my#
Graphics 800,600,32,2
elf_lukcinik = LoadAnimImage ("Images\hero4.bmp",80,80,0,4)
;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()
vibor%=1
frmSparks =0
ClsColor 189 ,183, 107
While Not KeyHit(1)
Cls
mx# = MouseX() : my# = MouseY()
TXMap =6
TYMap =6
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 MouseHit(1) Then playanimation=1:m1=True
If MouseHit(2) Then playanimation=1:m2=True
Select playanimation
Case 1
If MilliSecs() > tmrSparks + 200 Then
tmrSparks=MilliSecs() ; сбрасываем таймер
frmSparks=( frmSparks + 1 ) Mod 4 +(4*1-4)
If frmSparks =3 Then
frmSparks =0:playanimation=0
EndIf
If frmSparks =2 Then attack = True
EndIf
End Select
If attack = 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
attack = False : m1 = False
EndIf
If attack = 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
attack = 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
End Function
из вложения изображение поместить в папку Images и запустить код.
Последний раз редактировалось moka, 06.11.2012 в 18:49.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.11.2012, 23:27
|
#4
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: GRIG Project
добавил растительность , удар ножом при клике смежных с эльфом клеток ,
анимация с любого кадра .( последовательность можно задать любую ?!)
Тест Код: виды атаки .(вариант 2 ,с анимацией) см. вложение
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.11.2012, 23:35
|
#5
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,023
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: GRIG Project
Сообщение от polopok
добавил растительность , удар ножом при клике смежных с эльфом клеток ,
анимация с любого кадра .( последовательность можно задать любую ?!)
Тест Код: виды атаки .(вариант 2 ,с анимацией) см. вложение
|
Респект. Так держать.
Может побольше разрешение медии сделаешь? Или автоматическое масштабирование. Мне с моим зрением надо в экран тыкаться.
|
(Offline)
|
|
07.11.2012, 00:16
|
#6
|
ПроЭктировщик
Регистрация: 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)
|
|
07.11.2012, 00:31
|
#7
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: GRIG Project
А можно туда exe скомпилированный скинуть? А то у меня блица под рукой и думаю у многих других тоже не будет..
|
(Offline)
|
|
07.11.2012, 00:33
|
#8
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,023
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: GRIG Project
Был глюк когда перетащил эльфа за поле влево, эльф телепортировался наверх вне поля, отпустил кнопку там и остался.
Да, когда перетаскиваешь эльфа за границу клеток, он оказывается вне поля сверху, зависит от того как далеко перетащить от границы поля, он тогда за экран убегает.
|
(Offline)
|
|
07.11.2012, 00:49
|
#9
|
ПроЭктировщик
Регистрация: 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
исправил очередной "баг".
Последний раз редактировалось polopok, 07.11.2012 в 10:54.
|
(Offline)
|
|
07.11.2012, 01:06
|
#10
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: GRIG Project
Спасибо.
Да и не забывай пользоваться кнопкой "Правка" под сообщениями - это лучше чем постить много сообщений подряд, т.к. модераторам прийдётся их объединять за тебя..
|
(Offline)
|
|
07.11.2012, 18:44
|
#11
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: GRIG Project
Таки появилась возможность размножать Эльфов .
теперь чтоб эльф начал действовать надо его выбрать .
чтоб переместить эльфа надо чтоб эльф был выбран ,затем удерживать пробел и левую кнопку мыши ,перемещать .
снять выделение правая кнопка мыши (в дальнейшем ПКМ).
если эльф выделен ,резать ,стрелять ,левая кнопка мыши (в дальнейшем ЛКМ)
массовый обстрел ,удерживать левый Ctrl + ЛКМ
пока всё ... (не пытайтесь стрелять по другому эльфу ,пока ... "баг")
Ах ,да , разархивируйте файлы из вложения в предыдущую папку с программами.
|
(Offline)
|
|
07.11.2012, 20:42
|
#12
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: GRIG Project
Открыл дедулю блитц3д, посмотрел код...блин, мужик нечитабельно же нихера. Ты там сам не путаешся?
|
(Offline)
|
|
07.11.2012, 21:10
|
#13
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: GRIG Project
нет пока не путаюсь ,это так намётки ,позже почищу код
а так пробуйте в том виде ,которое есть
__________________
Мой проект здесь
|
(Offline)
|
|
09.11.2012, 13:28
|
#14
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: GRIG Project
Итак, продолжение следует . Накатал пример игрового меню (сырой вариант) и включил туда предыдущие файлы .
управление меню ЛКМ и дубль ЛКМ ( увы при Баталии стрельба,перемещение ,пока не работают ,но позже исправлю (хочу код переписать просто) ,а так смотрите сами ...
Вложение распаковать ...
можно .Exe запустить или Майн программ.
Кстати двойной ЛКМ на изображениях замка и единорога.
__________________
Мой проект здесь
|
(Offline)
|
|
11.11.2012, 12:53
|
#15
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: GRIG Project
добавил карту мира , переписал код города и баталии ( пока нет юнитов ...)
стал использовать массив типов , думаю код стал более понятен .
если возникнут вопросы ,смело задавайте (по возможности отвечу)
в дальнейшем (уже думаю над кодом ) будут юниты ,группы юнитов ,
размеры юнитов 1-2-3 клетки + думаю на поле битвы будут редко появляться боги 4 клетки в помощь нашей или другой стороне .
так же боги будут защищать основной город .
пока всё ... файлы вложены + .exe
Да ещё ,на единороге и городе кликать несколько раз (небольшой "глюк")
__________________
Мой проект здесь
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:21.
|