forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Интересный глюк (http://forum.boolean.name/showthread.php?t=11383)

is.SarCasm 09.12.2009 17:22

Интересный глюк
 
Я начал изучать ИИ. Сделал 3 типа существ. Пока только один наделен полным набором И , остольные тупо стоят на месте. Самое странное то что если создавать больше существ 3 типа то у 1ого типа все происходит быстрее. Т.е. он быстрее дохнит, голадает , устает и так далее. Чем больше третьих тем быстрее первый. ( нету никаких прямых намеков в коде на подобное)

Dzirt 09.12.2009 17:30

Ответ: Интересный глюк
 
Вот вам типичный пример природного отбора.;)

На самом деле наверное у тебя аи прописаный через множество проходов If,и в их организации мог быть косяк...если нет,тогда незнаю в чем проблема.

Dream 09.12.2009 17:45

Ответ: Интересный глюк
 
Цитата:

нету никаких прямых намеков в коде на подобное
ога, мы видем, нету намёков таких

is.SarCasm 09.12.2009 18:10

Ответ: Интересный глюк
 
В смысле в организации был косяк? у меня нету if create man3 then man1 faster. И вообще 1 и 3 связывает только ф-я развернуть если дистанция такова.

Dzirt 09.12.2009 18:11

Ответ: Интересный глюк
 
Сядь нормально.....выпрямь спину.....правую руку поставь на монитор,и сосредоточся на своем коде...Я попробую телепатически считать его и увидеть в чем косяк.

is.SarCasm 09.12.2009 19:01

Ответ: Интересный глюк
 
ты сам этого захотел
Цитата:

Graphics3D 1280,1024,32,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()

Global camPitch#, camYaw#, camDist#, mxs#, mys#, mzs#
cam = CreateCamera()
CameraRange cam,1,10000
eye = CreateSphere()
EntityAlpha eye,0.7
PositionEntity eye,256,0,256

Type cubozavr
Field HP
Field hungry#
Field entity
Field fatigue#
Field speed#
Field keks
Field a
End Type

Type cilozavr
Field HP
Field hungry#
Field entity
Field fatigue#
Field speed#
End Type

Type Bush
Field HP#
Field entity
End Type




font = LoadFont( "arial cyr",24 )
SetFont font











CreateBush(150,150)
CreateCilozavr(266,266)
CreateCubozavr(256,256)

Repeat


If KeyDown(17) MoveEntity eye,0,0,.2
If KeyDown(30) TurnEntity eye,0,2,0
If KeyDown(32) TurnEntity eye,0,-2,0


mxs = MouseXSpeed()
mys = MouseYSpeed()
mzs = MouseZSpeed()
RotateCamOver(cam, eye)


If KeyHit(2) Then
CreateCubozavr(Rnd(0,512),Rnd(0,512))
EndIf

If KeyHit(3) Then
CreateCilozavr(Rnd(0,512),Rnd(0,512))
EndIf

If KeyHit(4) Then
CreateBush(Rnd(0,512),Rnd(0,512))
EndIf


UpdateCilozavr()

z = z + 1



UpdateWorld
RenderWorld


Color 0,0,25



Text 5,20,"Цифра 1 - создать куб : Цифра 2 - создать цилиндр"
Text 5,40,"Отдалять камеру колесиком, вразать зажтием ПКМ"
Text 5,60,"Используйте W A D(клавиши)"+ z





DeleteBush()
UpdateCubozavr()
vFPS=MilliSecs()
If vFPS-vLastFPS>1000
vShowFPS=vCurFPS
vLastFPS=vFPS
vCurFPS=0
Else
vCurFPS=vCurFPS+1
End If
Text 5,30,"FPS: "+vShowFPS


Flip(1)

Until KeyHit(1)
End





Function RotateCamOver(cam, entity)
If MouseDown(2) Then
camPitch# = camPitch + (mys/4)
camYaw# = camYaw - (mxs/4)
EndIf
camDist# = camDist# + (mzs/1)
If camDist <= 1 Then camDist = 1
PositionEntity cam, EntityX(entity,1), EntityY(entity,1), EntityZ(entity,1), 1
RotateEntity cam, camPitch, camYaw, 0
MoveEntity cam, 0, 0, -camDist
End Function

Function CreateCubozavr(x,z)

Local p.cubozavr = New cubozavr
p\entity = CreateCube()
p\hp = 100
p\hungry# = 0
p\fatigue# = 0
p\speed# = 0.05
p\keks = 0
p\a = -1
PositionEntity p\entity,x,0,z
End Function

Function UpdateCubozavr()
For p.cubozavr = Each cubozavr
For x.cilozavr = Each cilozavr
p\hungry# = p\hungry# + 0.0025
If p\hungry<20 Then EntityColor p\entity,0,255,0
If p\hungry>20 And p\hungry<80 Then EntityColor p\entity,0,0,255
If p\hungry>80 Then EntityColor p\entity,255,0,0


MoveEntity p\entity,0,0,p\speed# :
p\fatigue# = p\fatigue# + 0.01:

If a = 0 Then
p\keks = p\keks + 1 :
EndIf

If p\keks>10 Then
p\keks = 0
EndIf

If p\keks = 10 Then
TurnEntity p\entity,0,Rnd(-5,5),0,0
EndIf





If p\hungry<0 Then
p\hungry = 0
EndIf

If p\fatigue# > 10 And p\fatigue# <20 Then
p\speed# =0.04
EndIf
If p\fatigue# > 20 And p\fatigue# <30 Then
p\speed# =0.035
EndIf
If p\fatigue# > 30 And p\fatigue# <40 Then
p\speed# =0.03
EndIf
If p\fatigue# > 40 And p\fatigue# <50 Then
p\speed# =0.025
EndIf
If p\fatigue# > 50 And p\fatigue# <60 Then
p\speed# =0.02
EndIf
If p\fatigue# > 80 And p\fatigue# <90 Then
p\speed# =0.01
EndIf

If p\fatigue#>99 Then
p\speed# =0.0 : p\fatigue# = p\fatigue#+0.015
EndIf

If p\fatigue#>299 Then
p\fatigue# = 0
EndIf

UpdateBushCubozavrAndCilozavr()

Next
Next
End Function






Function CreateCilozavr(xx,z)
Local x.cilozavr = New cilozavr
x\entity = CreateCylinder()
x\hp = 100
x\hungry# = 0
PositionEntity x\entity,xx,0,z

End Function

Function UpdateCilozavr()
For x.cilozavr = Each cilozavr
x\hungry# = x\hungry# + 0.007
If x\hungry<20 Then EntityColor x\entity,0,255,0
If x\hungry>20 And x\hungry<80 Then EntityColor x\entity,0,0,255
If x\hungry>80 Then EntityColor x\entity,255,0,0
Next
End Function

Function CreateBush(x,z)
Local h.Bush = New Bush
h\entity = CreateCone()
h\hp# = 100
PositionEntity h\entity,x,0,z
EntityColor h\entity,20,200,0
RotateEntity h\entity,180,0,0
ScaleEntity h\entity,2,2,2
End Function

Function DeleteBush()
For h.bush = Each bush
Text 500,800,""+h\HP#
If h\HP# < 1 Then
FreeEntity h\entity : Delete h
EndIf


Next
End Function

Function UpdateBushCubozavrAndCilozavr()
For p.cubozavr = Each cubozavr
For x.cilozavr = Each cilozavr
For h.Bush = Each bush

If EntityDistance(p\entity,x\entity)<30 Then
p\a = p\a + 1
EndIf

If EntityDistance(p\entity,x\entity)>30 Then
p\a = 0
EndIf

If p\a = 7 And EntityDistance(p\entity,x\entity)<30 Then
PointEntity(p\entity,x\entity) : TurnEntity p\entity, 0,-180,0
EndIf



If p\hungry > 20 And p\hungry<80 And EntityDistance(p\entity,x\entity)>30 Then
UpdateBushCubozavr3()
EndIf

If p\hungry < 20 And p\hungry>0 And EntityDistance(p\entity,x\entity)>30 Then
UpdateBushCubozavr2()
EndIf

If EntityDistance(p\entity,h\entity)<2 Then
p\hungry = p\hungry - ((0.021)*2.5) : h\HP# = h\HP# - 0.1
EndIf
Next
Next
Next
End Function

Function UpdateBushCubozavr2()
For p.cubozavr = Each cubozavr
For h.Bush = Each Bush
If EntityDistance(p\entity,h\entity)<20 Then
PointEntity p\entity,h\entity
EndIf

If EntityDistance(p\entity,h\entity)<2 Then
p\hungry = p\hungry - 0.00
EndIf
Next
Next
End Function

Function UpdateBushCubozavr3()
For p.cubozavr = Each cubozavr
For h.Bush = Each Bush
If EntityDistance(p\entity,h\entity)<35 Then
PointEntity p\entity,h\entity
EndIf
Next
Next
End Function

Function UpdateBushCubozavr4()
For p.cubozavr = Each cubozavr
For h.Bush = Each Bush
If EntityDistance(p\entity,h\entity)<60 Then
PointEntity p\entity,h\entity
EndIf
Next
Next
End Function

Dream 09.12.2009 19:04

Ответ: Интересный глюк
 
ты забыл сказать "у ну бл* помогли мне!!!"

Dream 09.12.2009 19:07

Ответ: Интересный глюк
 
Цитата:

Function UpdateCubozavr()
For p.cubozavr = Each cubozavr
For x.cilozavr = Each cilozavr
p\hungry# = p\hungry# + 0.0025
это гениально....
когда научитесь думать и читать код, а не тупо пастить
П.С. самый лучший говнокод который я когда-либо видел , я бы даже сказал отборный

is.SarCasm 09.12.2009 19:29

Ответ: Интересный глюк
 
вуху

Reks888 09.12.2009 20:05

Ответ: Интересный глюк
 
Насчет багов в коде
Цитата:

If EntityDistance(p\entity,h\entity)<2 Then
p\hungry = p\hungry - 0.00
EndIf
Next
Next
End Function
если тварь ест кустик то голод не увеличивается ты крут)

Цитата:

If EntityDistance(p\entity,x\entity)<30 Then
p\a = p\a + 1
EndIf

If EntityDistance(p\entity,x\entity)>30 Then
p\a = 0
EndIf

If p\a = 7 And EntityDistance(p\entity,x\entity)<30 Then
PointEntity(p\entity,x\entity) : TurnEntity p\entity, 0,-180,0
EndIf
Извини, а за что "a" отвечает, нигде в коде найти не могу

is.SarCasm 09.12.2009 20:07

Ответ: Интересный глюк
 
Цитата:

If EntityDistance(p\entity,x\entity)<30 Then
p\a = p\a + 1
EndIf

If EntityDistance(p\entity,x\entity)>30 Then
p\a = 0
EndIf

If p\a = 7 And EntityDistance(p\entity,x\entity)<30 Then
PointEntity(p\entity,x\entity) : TurnEntity p\entity, 0,-180,0
EndIf
сюда не смотрите... (это устарелый код)

Dream 09.12.2009 20:08

Ответ: Интересный глюк
 
это если обьект кушает у него набирается "АА" и потом он сходить и сделает "АА". реализм ёпт

IGR 09.12.2009 20:35

Ответ: Интересный глюк
 
Цитата:

это если обьект кушает у него набирается "АА" и потом он сходить и сделает "АА". реализм ёпт
ахахаха... :) а за что отвечает:
Цитата:

Field keks

Dream 09.12.2009 20:40

Ответ: Интересный глюк
 
это если дэвид блейн: "Печеньки!!!"

is.SarCasm 09.12.2009 22:36

Ответ: Интересный глюк
 
короче нам всем впадло разгадывать загадку ускорение жизни кубика. Лучше полахать со смешного кекса. А еще воон с той и той строчки. Ну раз уже понесса флуд хотел спросить:
Цитата:

p\hungry# = p\hungry# + 0.0025
по4 это гениально? Причем тут копипаст...

Dream 09.12.2009 22:50

Ответ: Интересный глюк
 
я тебе уже показал где проблема. но ты не видишь, что я должен сделать? с флажками вокруг побегать? ткнуть носом?

Taugeshtu 09.12.2009 23:00

Ответ: Интересный глюк
 

-А еще у тех, кто пишет цифру "4" вместо буквы "ч" портится зрение и вырастают волосы на ладошках
-По4ему?
-Вот посмотри на свои ладони. Видишь волосы?
-Нет, а 4то?
-А это потому что зрение уже начало портиться!
(с)тырено


Дело не в самой строчке, а в месте её нахождения. Не зря же были процитированы 3 строки...

Dream 09.12.2009 23:10

Ответ: Интересный глюк
 
предлагаю в разделе юмор сделать тему "Лучший говнокод ресурса"

G.A.D 09.12.2009 23:42

Ответ: Интересный глюк
 
Хватит...Себя вспомните такой же говнокод писали!
хД я тоже много говнокода писал)
Если вы выше левелом это не значит ,что над новичками надо так издеваться ,да и в конце концов все люди ошибаються)

Dream 09.12.2009 23:52

Ответ: Интересный глюк
 
честно, такого я не писал)))
если сделаем темку, я пороюсь, найду своего говнокода и тоже посмеюсь над ним:)
просто, человек сам не понимает как работает то что он написал.

Dzirt 10.12.2009 00:00

Ответ: Интересный глюк
 
Где же К.О. когда он так нужен?!
:)

is.SarCasm 10.12.2009 00:52

Ответ: Интересный глюк
 
та не я шарю что тут за говнокод написал)

Dream 10.12.2009 01:38

Ответ: Интересный глюк
 
построй гденибудь блок схему твоего кода.
или просто пройдись мысленно по коду. хотябы один проход.
представь что ты компилятор;)

и увидешь насколько плохо он у тебя организован.

LLI.T.A.L.K.E.R. 10.12.2009 02:52

Ответ: Интересный глюк
 
Цитата:

If a = 0 Then
p\keks = p\keks + 1 :
EndIf
Что такое a?
"If a = 0 Then"
наверное нужно p\a

Цитата:

For p.cubozavr = Each cubozavr
For x.cilozavr = Each cilozavr
уффф всё-таки начал разбирать код..

Цитата:

Function UpdateCubozavr()
For p.cubozavr = Each cubozavr
For x.cilozavr = Each cilozavr
в Упдате Кубозавра зачем то стоят Цилозавры..
Вроде основная ошибка твоя здесь ^^^
ведь есть далее, ниже, в коде - отдельно

Цитата:

Function UpdateCilozavr()
For x.cilozavr = Each cilozavr
- * - * -

А далее уже идёт..
Цитата:

Function UpdateBushCubozavrAndCilozavr()
Function UpdateBushCubozavr2()
Function UpdateBushCubozavr3()
:4to: :crazy:

Reizel 10.12.2009 07:43

Ответ: Интересный глюк
 
Жесть... Igorian. объясню понятнее. Когда рождается много "цилозавров", кубозавры начинают активно за ними следить (for c.cubozavr=each cubozavr?), причем Next в этом цикле поставлен(а) не там где надо .
Жизненные функции (прибавление голода, отмерзание конечностей:)) напрямую зависит от количества т.н. цилозавров, тоесть с каждым проходам по элементу типа Cilozavr ты зачем то отбавляешь жизни у самого кубозавра...

А вообще, ребят, вложенный цикл он применяет стопудово для взаимодействия кубозавров с цилозаврами, в один то тип не упихать, надо два делать)

is.SarCasm 10.12.2009 12:42

Ответ: Интересный глюк
 
Вау.
ИМХО все после 20 поста неуместно.

2DimasSup
именно по этой причине я его еще вчера переписал. ( в коде оказалось всего то мусора 2\3 от всего кода. )

Dream 10.12.2009 13:07

Ответ: Интересный глюк
 
код- мусор чуть менее, чем полностью


Часовой пояс GMT +4, время: 16:41.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot