Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: СОКОБАН в 3d
If EntityDistance(a\blok,Bomb_e(n))<3
FreeEntity Bomb_e(n):FreeEntity a\blok:Delete a
Else
FreeEntity Bomb_e(n)
EndIf
Entity doesnot exist. В строке FreeEntity Bomb_e(n). А так же в любом месте фукнции Update, где используется Bomb_e(n). Сейчас пока время есть - поковыряюсь в коде, может исправлю чего нибудь.
учись структурировать код, пригодится... я пока нашёл начало цикла чуть не опух
UPD у тебя массив из 10 элементов, а ты в цикле For n = 0 to 10 перечисляешь 11. Вот и ошибка.
лови слегка переделанный твой код. Работоспособный, отструктурированый

Const wall_t=1,dwall_t=2,blok_t=3,but_t=4,door_t=5,bmb_t=6,play_t=7,def_t=8
Const UPS=60
Global herox%,heroz%
Global Bomb%=1
;Global Timer%=0
;меши
Global wallS_
Global but_
Global Kol_
Global Blok_
Global Plane
Global Floor1
Global Brick
Global Player
Global din_b
Global din_
;анимация
Global run;
Global nor
;для отладки
Global new_id%
Global teg=0
Global ent = 1
con_op=1
Graphics3D 0,0,0,1
SetBuffer BackBuffer()
Light=CreateLight()
TurnEntity light,90,0,0
cam=CreateCamera()
PositionEntity cam,0,30,0
TurnEntity cam,90,0,0
Dim aMap$(1000,1000);***нужно
Dim Bomb_e(10)
Dim timer(10);
For i=0 To 10
Bomb_e(i)=0:timer(i)=0
Next
LoadMap(1)
din_inc=LoadImage("Models\din_inc.bmp")
;num=LoadAnimImage("models\BigNumber.png",100,100,0,10)
font=LoadFont("Tahoma",40,1,0)
CreateMap("map\1map.map",21,2)
PositionEntity Player,herox,-.2,heroz
Collisions play_t,dwall_t,3,2
Collisions play_t,door_t,2,2
Collisions play_t,wall_t,2,2
Collisions play_t,blok_t,3,2
Collisions blok_t,wall_t,3,2
Collisions blok_t,blok_t,3,2
;*******************
period=1000/UPS
time=MilliSecs()-period
Repeat
Repeat
elapsed=MilliSecs()-time
Until elapsed
ticks=elapsed/period
tween#=Float(elapsed Mod period)/Float(period)
For k=1 To ticks
time=time+period
;*********************
update(Player,cam)
;PointEntity cam,player
;****************
If KeyHit(1) End
UpdateWorld
Next
RenderWorld tween
SetFont(font):Color 216,220,29
DrawImage din_inc,40,40
Text 70,130,Bomb,1,1
Flip
Forever
Type map
Field blok
Field chaild%=0
Field id%=0
Field Stat=0
End Type
Function LoadMap(SetHero%=1)
din_=LoadMesh("models\din.3ds"):HideEntity din_;динамит
din_b=LoadMesh("models\d_box.3ds"):ScaleEntity din_b,0.5,0.5,.5;ящик динамита
Blok_=LoadMesh("models\model1.3DS"):PositionMesh Blok_,0,.2,0;Блок
Kol_=LoadMesh("Models\Model2.3ds"):ScaleEntity Kol_,1.15,1.3,1.15; кол-дверь
Kol_t=LoadTexture("Models\Tile1.jpg",1+64) :EntityTexture Kol_,Kol_t
wallS_=LoadMesh("models\model3.3DS"):ScaleEntity wallS_,2,4,2;стена(сменить текстуру)
but_=LoadMesh("models\model4.3ds");кнопка(доделать текстуру)
Floor1=LoadTexture("models\Floor1.jpg");трава типо(безшовка)
Brick=LoadTexture("models\brick.jpg");кирпичная стена
Player=LoadAnimMesh("models\p_boy.3ds"); игрок
EntityType Player,play_t
If SetHero=0 HideEntity Player
EntityRadius Player,.6
run=ExtractAnimSeq(Player,1,40)
nor=ExtractAnimSeq(Player,0,0)
End Function
Function CreateMap(map$,size%,blok_s#,x%=0,y%=0)
Local mapSize% = size%-1
Local filein = ReadFile(map)
Local mapLines = 1
While Not Eof(filein)
Local mapStr$ = ReadLine$( filein )
For i=1 To mapSize
aMap$(mapLines,i)=Upper(Str(Trim(Mid(mapStr,i,1 ))))
Next
mapLines = mapLines + 1
Wend
CloseFile(filein)
Local plane_p=createQuad()
HideEntity plane_p
PositionEntity plane_p,0,-5,0
Local cub=CreateCube();---------
ScaleEntity cub,Float(blok_s/2),Float(blok_s/2),Float(blok_s/2)
For j=1 To mapSize
For i=1 To mapSize
a.map=New map
If aMap(j,i)<>"_" And aMap(j,i)<>"1" And aMap(j,i)<>"2"
Plane=createQuad()
PositionEntity Plane, i*blok_s-mapSize+x, -1, -j*blok_s+mapSize+y
AddMesh Plane,plane_p;не объединяет меши,утечка памяти
EntityType Plane,def_t
EntityTexture Plane,Floor1
;FreeEntity Plane
EndIf
Select aMap(j,i)
Case "S";обычная
Local endB=CopyEntity(cub)
PositionEntity endB, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityColor endB,135,150,250
Case "1";обычная
a\blok=CopyEntity(wallS_)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,wall_t
Case "2";кирпич
a\blok=CopyEntity(cub)
EntityTexture a\blok,Brick
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,dwall_t
a\stat=0
Case "3";игрок
herox=-i*blok_s+mapSize
heroz=-j*blok_s+mapSize
Case "4";блок
a\blok=CopyEntity(Blok_)
PositionEntity a\blok, i*blok_s-mapSize+x, .1, -j*blok_s+mapSize+y
EntityBox a\blok,-.8,-.8,-.8,1.6,1.6,1.6
EntityRadius a\blok,0.8
EntityPickMode a\blok,3
EntityType a\blok,blok_t
a\stat=0
;EntityColor a\blok,9,52,183
Case "5","6","7","8","9";кнопки
a\blok=CopyEntity(but_)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,but_t
a\stat=0
EntityColor a\blok,255,0,128
Select aMap(j,i)
Case "5" a\chaild=1
Case "6" a\chaild=2
Case "7" a\chaild=3
Case "8" a\chaild=4
Case "9" a\chaild=5
End Select
Case "A","B","C","D","E";двери
a\blok=CopyEntity(Kol_)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,door_t
a\stat=0
Select aMap(j,i)
Case "A" a\id=1
Case "B" a\id=2
Case "C" a\id=3
Case "D" a\id=4
Case "E" a\id=5
End Select
Case "_"
;мешь дырка с кольями
Case "X";динамит
a\blok=CopyEntity(din_b)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,bmb_t
a\stat=0
End Select
Next
Next
HideEntity cub
HideEntity Kol_
HideEntity wallS_
HideEntity Kol_
HideEntity Blok_
HideEntity but_
HideEntity din_b
End Function
Global speed#=.1
Function update(hero%,camera%)
Local n%
If KeyDown(200) And (Not (KeyDown(205) Or KeyDown(203))) TranslateEntity hero,0,0,speed#:moveto=1;up
If KeyDown(208) And (Not (KeyDown(205) Or KeyDown(203))) TranslateEntity hero,0,0,-speed#:moveto=2;down
If KeyDown(205) And (Not (KeyDown(208) Or KeyDown(200))) TranslateEntity hero,speed#,0,0:moveto=3;right
If KeyDown(203) And (Not (KeyDown(208) Or KeyDown(200))) TranslateEntity hero,-speed#,0,0:moveto=4;left
PositionEntity hero,EntityX(hero),-.2,EntityZ(hero)
If (KeyDown(200) Or KeyDown(208) Or KeyDown(203) Or KeyDown(205))=0 moveto=0
Select moveto
Case 1
RotateEntity hero,0,0,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),0,0,.8)
Case 2
RotateEntity hero,0,180,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),0,0,-.8)
Case 3
RotateEntity hero,0,270,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),.8,0,0)
Case 4
RotateEntity hero,0,90,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),-.8,0,0)
End Select
speed=.1
For m=0 To 10
If Bomb_e(m)<>0 timer(m)=timer(m)-1
Next
For a.map=Each map
If a\blok<>0
If GetEntityType(a\blok)=but_t
If a\stat=0
p=LinePick(EntityX(a\blok),-1,EntityZ(a\blok),0,3,0)
If p<>0
If GetEntityType(p)=blok_t
new_id%=a\chaild
a\stat=1
EndIf
EndIf
EndIf
EndIf
If piced<>0
If piced=a\blok
speed#=0.05
Select moveto
Case 1:TranslateEntity a\blok,0,0,speed
Case 2:TranslateEntity a\blok,0,0,-speed
Case 3:TranslateEntity a\blok,speed,0,0
Case 4:TranslateEntity a\blok,-speed,0,0
End Select
EndIf
EndIf
If new_id%>0
If new_id%=a\id a\stat=1
EndIf
If a\stat=1 And GetEntityType(a\blok)=door_t HideEntity a\blok
;бомбы****
If GetEntityType(a\blok)=dwall_t
For n=0 To ent-1
If Bomb_e(n)
If timer(n)=0
If EntityDistance(a\blok,Bomb_e(n))<3
FreeEntity Bomb_e(n):FreeEntity a\blok:Delete a
ent = ent - 1
Else
FreeEntity Bomb_e(n)
ent = ent - 1
EndIf
EndIf
EndIf
Next
Else If GetEntityType(a\blok)=bmb_t
TurnEntity a\blok,0,4,0
If EntityDistance(Player,a\blok)<1 And Bomb<10 FreeEntity a\blok:Delete a:Bomb=Bomb+5
EndIf
EndIf
Next
If KeyHit(57) And Bomb>0
Bomb_e(ent)=CopyEntity(din_)
PositionEntity Bomb_e(ent),EntityX(hero),.7,EntityZ(hero)
ShowEntity Bomb_e(ent)
Bomb=Bomb-1
timer(ent)=200
ent=ent+1
EndIf
If Bomb>10 Bomb=10
End Function
Function createQuad()
quad=CreateMesh()
s=CreateSurface(quad)
v0=AddVertex(s,-1,0,1,0,0)
v1=AddVertex(s,1,0,1,0,1)
v2=AddVertex(s,1,0,-1,1,1)
v3=AddVertex(s,-1,0,-1,1,0)
AddTriangle(s,v0,v1,v2)
AddTriangle(s,v0,v2,v3)
UpdateNormals quad
Return quad
End Function
;эть,незнаю как удалять Типы
Function FreeMap()
For a.map=Each map
FreeEntity a\blok
Next
FreeEntity Plane
End Function
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|