Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Visual Basic

Ответ
 
Опции темы
Старый 06.09.2008, 16:01   #1
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Вопрос Задачка...

В технаре задали задачку по VB... я вообще хз как её решать и делать..... МОжет бть в поможете... очь надо... зарание спс...
.................................................. ............................................
Разработать имитационную модель системы “хищник–жертва” по следующей схеме.
“Остров” размером 20 на 20 заселен дикими кроликами, волками и волчицами. Имеется по нескольку представителей каждого вида. Кролики в каждый момент времени с одинаковой вероятностью 1/9 передвигаются в один из восьми соседних квадратов (за исключением участков, ограниченных береговой линией) или просто сидят неподвижно. Каждый кролик с вероятностью 0,2 превращается в двух кроликов. Каждая волчица передвигается случайным образом, пока в одном из соседних восьми квадратов не окажется кролик, за которым она охотится. Если волчица и кролик оказываются в одном квадрате, волчица съедает кролика и получает одно очко. В противном случае она теряет 0,1 очка.
Волки и волчицы с нулевым количеством очков умирают.
В начальный момент времени все волки и волчицы имеют 1 очко.
Волк ведет себя подобно волчице до тех пор, пока в соседних квадратах не исчезнут все кролики; тогда, если волчица находится в одном из восьми близлежащих квадратов, волк гонится за ней.
Если волк и волчица окажутся в одном квадрате и там нет кролика, которого нужно съесть, они производят потомство случайного пола.
Задание: понаблюдать за изменением популяции в течение некоторого периода времени. Проследить, как сказываются на эволюции популяций изменения параметров модели.


Перегудов Ф.И., Тарасенко Ф.П. Введение в системный анализ. М.: Высшая школа, 1989
(Offline)
 
Ответить с цитированием
Старый 07.09.2008, 15:23   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Задачка...

А решать С использованием ООП или БЕЗ ?

Год создания задачи ацки жжот 8-)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 07.09.2008, 15:54   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Задачка...

Проблема в алгоритме или в ВБ?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 07.09.2008, 21:34   #4
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Ответ: Задачка...

Проблема в алгоритме или в ВБ?
во всём... я ни алгоритм непонимаю, ни как и что писать...
Хотя полседнее вызывает меньше проблем...
А решать С использованием ООП или БЕЗ ?
да побаку как, лиш бы работало хоть как нибудь...
(Offline)
 
Ответить с цитированием
Старый 07.09.2008, 23:07   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Задачка...

а где начальные условия?
(Offline)
 
Ответить с цитированием
Старый 07.09.2008, 23:09   #6
FDsagizi
Бывалый
 
Аватар для FDsagizi
 
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений
(для 509 пользователей)
Ответ: Задачка...

А ты пиши и не парся, не делай граф части, пусть будет консоль, на которую будут выводитсья куча параметров, и пу се смотрят =)))
__________________
Жизнь как говориться игра- делать игры моя профессия(с)

Программирование, это религия! Её нужно исповедовать.
(Offline)
 
Ответить с цитированием
Старый 08.09.2008, 00:04   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Задачка...

Atomikc, в таком случае не вижу ничего сложного в реализации задачи.
Остров - четырёхмерный массив 20*20*2*10 где
20 - высота
20 - ширина
2 - параметры жЫвотнава
10 - десять животных могут сидеть в одной клетке
хотя тут явно столько не требуется, можно и до двух сократить

т.е. у каждой клетки 10 животных и у каждого по 2 параметра
1.

0 - пусто
1 - крёлик
2 - волк
3 - волчица

2.

очки
тут мона схитрить
объявить весь массив как интегер
а прибавлять в очкам всё в 10 раз больше (0.1 = 1, 1 = 10) а при выводе уже делить на 10 ибо нехрен из-за одного параметра сразу всё в флоат объявлять.

Ну а поведение - это тож несложно.
Кролик - рандом 1,9
если 1 то идёт на соседнюю незанятую клетку, в ином случае - ничего не делает
или размножается или что ему надо
таким же макаром обрабюатываем волков и волчиц

горф. интерфейс - простейшие квадратики и в каждом рисовать намалёванную в пейнте морду волка, волчицы или крёлика
или просто надпись Волк - 0.3 очков

Задача - на полчаса проганья максимум Даже хз зачем было на форум с таким лезть
З.Ы. С волками понятно - они размножаются только когда в одной клетке две разнополые особи, а каким... способом размножается один-единственный крёлик? Боюсь даже предположить! Воистину в СССР секса не было...
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена


Последний раз редактировалось ABTOMAT, 08.09.2008 в 00:11.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Atomikc (08.09.2008)
Старый 08.09.2008, 04:05   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Задачка...

Алгоритм реализации практически однозначен. Затруднения могут быть вызваны лишь выбором организации обработки\хранения данных, что коррелирует с исходными данными (размером острова и скоростью воспроизведения популяции)
Const PopulationTypeWolf%=1
Const PopulationTypeRabbit%=2
Const Male%=1
Const Female%=0

;=================================
Type T2Dpoint
	Field x%,y%
End Type

Function Scalar2Vector(scalar%,vector.T2Dpoint)
	Select scalar
		Case 1
			vector\x=-1
			vector\y=1
		Case 2
			vector\x=0
			vector\y=1
		Case 3
			vector\x=1
			vector\y=1
		Case 4
			vector\x=-1
			vector\y=0
		Case 5
			vector\x=1
			vector\y=0
		Case 6
			vector\x=-1
			vector\y=-1
		Case 7
			vector\x=0
			vector\y=-1
		Case 8
			vector\x=1
			vector\y=-1
		Default
			vector\x=0
			vector\y=0
	End Select
End Function

Function MovePoint(point.t2dpoint,vector.t2dpoint)
	point\x=point\x+vector\x
	point\y=point\y+vector\y
End Function

Function StabliPoint(point.t2dpoint,size.t2dpoint)
	If point\x>size\x
		point\x=size\x
	ElseIf point\x<1
		point\x=1
	EndIf
	If point\y>size\y
		point\y=size\y
	ElseIf point\y<1
		point\y=1
	EndIf
End Function

Function EqualPoint(a.t2dpoint,b.t2dpoint)
	If a\x=b\x And a\y=b\y
		Return True
	EndIf
	Return False
End Function
;=================================
Type TIsland
	Field SIZE.T2Dpoint
	Field Populations%
End Type

Function CreateIsland.TIsland(x,y)
	I.TIsland=New TIsland
	I\SIZE=New T2Dpoint
	I\SIZE\x=x
	I\SIZE\y=y
	I\Populations=CreatePivot()
	HideEntity I\Populations
	Return I
End Function

Function AddAnimal(I.TIsland,HANDLE_,PosNeedSet%,CODE%)
	;DebugLog "animal with code "+code
	Local PPivot%=0
	If CountChildren(I\Populations)
		For j=1 To CountChildren(I\Populations)
			If EntityName(GetChild(I\Populations,j))=Str(CODE)
				PPivot=GetChild(I\Populations,j)
				Exit
			EndIf
		Next
	EndIf
	;DebugLog "root for population "+PPivot
	If PPivot=0
		PPivot=CreatePivot(I\Populations)
		NameEntity PPivot,Str(CODE)
		;DebugLog "new population with code "+code
	EndIf
	Local Obj=CreatePivot(PPivot)
	NameEntity Obj,Str(HANDLE_)
	Select CODE
		Case PopulationTypeWolf
			Local Wolf.TWolf=Object.TWolf(HANDLE_)
			Wolf\IslandHandle=Handle(I)
			Wolf\PopPiv=Obj
			If PosNeedSet
				Wolf\Position\X=Rand(1,I\SIZE\x)
				Wolf\Position\Y=Rand(1,I\SIZE\y)
			EndIf
		Case PopulationTypeRabbit
			Local Rabbit.TRabbit=Object.TRabbit(HANDLE_)
			Rabbit\IslandHandle=Handle(I)
			Rabbit\PopPiv=Obj
			If PosNeedSet
				Rabbit\Position\X=Rand(1,I\SIZE\x)
				Rabbit\Position\Y=Rand(1,I\SIZE\y)
			EndIf
	End Select
End Function

Function GetObjectsInCoord%(coord.t2dpoint,I.TIsland)
	Pivot=CreatePivot()
	HideEntity Pivot
	Local SubPivot
	Local Popul%
	If CountChildren(I\Populations)
		For k=1 To CountChildren(I\Populations)
			popul=GetChild(I\Populations,k)
			For j=1 To CountChildren(popul)
				Select Int(EntityName(popul))
					Case PopulationTypeWolf
						Local Wolf.TWolf=Object.TWolf(EntityName(GetChild(popul,j)))
						If EqualPoint(Wolf\Position,coord)
							SubPivot=CreatePivot(Pivot)
							NameEntity SubPivot,EntityName(popul)
							EntityType SubPivot,Handle(Wolf)
						EndIf
					Case PopulationTypeRabbit
						Local Rabbit.TRabbit=Object.TRabbit(EntityName(GetChild(popul,j)))
						If EqualPoint(Rabbit\Position,coord)
							SubPivot=CreatePivot(Pivot)
							NameEntity SubPivot,EntityName(popul)
							EntityType SubPivot,Handle(Rabbit)
						EndIf
				End Select
			Next
		Next
	EndIf
	Return Pivot
End Function

Function UpdateIsland(I.TIsland)
	If CountChildren(I\Populations)
		For k=1 To CountChildren(I\Populations)
			popul=GetChild(I\Populations,k)
			For j=1 To CountChildren(popul)
				Select Int(EntityName(popul))
					Case PopulationTypeWolf
						Local Wolf.TWolf=Object.TWolf(EntityName(GetChild(popul,j)))
						UpdateWolf(Wolf)
					Case PopulationTypeRabbit
						Local Rabbit.TRabbit=Object.TRabbit(EntityName(GetChild(popul,j)))
						UpdateRabbit(Rabbit)
				End Select
			Next
		Next
	EndIf
End Function

Function DrawIsland(I.TIsland,x%,y%)
	Local MapCellSize%=25
	Color 0,200,0
	For ix=1 To I\SIZE\x
		For iy=1 To I\SIZE\y
			Rect x+(ix-1)*MapCellSize+1,y+(iy-1)*MapCellSize+1,MapCellSize-2,MapCellSize-2
		Next
	Next
	If CountChildren(I\Populations)
		For k=1 To CountChildren(I\Populations)
			popul=GetChild(I\Populations,k)
			For j=1 To CountChildren(popul)
				Select Int(EntityName(popul))
					Case PopulationTypeWolf
						Local Wolf.TWolf=Object.TWolf(EntityName(GetChild(popul,j)))
						DrawWolf(Wolf,x,y,MapCellSize)
					Case PopulationTypeRabbit
						Local Rabbit.TRabbit=Object.TRabbit(EntityName(GetChild(popul,j)))
						DrawRabbit(Rabbit,x,y,MapCellSize)
				End Select
			Next
		Next
	EndIf

End Function
;=================================
Type TWolf
	Field Gendor%
	Field Score#
	Field Position.T2Dpoint
	Field IslandHandle%
	Field PopPiv%
End Type

Function CreateWolf.TWolf(Gendor%)
	W.TWolf=New TWolf
	W\GENDOR=Gendor
	W\SCORE=1
	W\Position=New T2Dpoint
	Return W
End Function

Function UpdateWolf(W.Twolf)
	Local ISL.TIsland=Object.TIsland(W\IslandHandle)
	Local Move.T2Dpoint=New T2Dpoint
	Scalar2Vector(Rand(0,9),Move)
	MovePoint(W\Position,Move)
	StabliPoint(W\Position,ISL\SIZE)
	Delete MOVE
	
	Local List=GetObjectsInCoord(W\position,ISL)
	Local hav4eg=False
	Local Wolf.TWolf=Null
	If CountChildren(List)
		For i=1 To CountChildren(List)
			Select Int(EntityName(GetChild(List,i)))
				Case PopulationTypeWolf
					If GetEntityType(GetChild(List,i))<>Handle(W)
						If W\GENDOR=Male
							Wolf.TWolf=Object.TWolf(GetEntityType(GetChild(List,i)))
							If Wolf\GENDOR<>Female
								Wolf=Null
							EndIf
						EndIf
					EndIf
				Case PopulationTypeRabbit
					Local Rabbit.TRabbit=Object.TRabbit(GetEntityType(GetChild(List,i)))
					FreeEntity Rabbit\PopPiv
					Delete Rabbit
					W\SCORE=W\SCORE+1
					hav4eg=True
					Exit
			End Select
		Next
	EndIf
	FreeEntity List
	If Not hav4eg
		W\SCORE=W\SCORE-0.1
		If Wolf<>Null
			Local gendor=Rand(0,1)
			Local ChildWolf.TWolf=CreateWolf(gendor)
			ChildWolf\Position\X=Wolf\Position\X
			ChildWolf\Position\Y=Wolf\Position\Y
			AddAnimal(ISL,Handle(ChildWolf),False,PopulationTypeWolf)
		EndIf
	EndIf
	If W\SCORE=0
		FreeEntity W\PopPiv
		Delete W
	EndIf
	

End Function

Function DrawWolf(W.TWolf,x,y,mcs)
	Color 0,0,0
	Local ix=W\Position\x
	Local iy=W\Position\y
	Oval x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,mcs-2,mcs-2
	Color 255,255,255
	Select W\gendor
		Case male
			Text x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,"M"
		Case female
			Text x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,"}|{"
	End Select
End Function
;=================================
Type TRabbit
	Field Position.T2Dpoint
	Field IslandHandle%
	Field PopPiv%
End Type

Function CreateRabbit.TRabbit()
	R.TRabbit=New TRabbit
	R\Position=New T2Dpoint
	Return R
End Function

Function UpdateRabbit(R.TRabbit)
	Local ISL.TIsland=Object.TIsland(R\IslandHandle)
	Local Move.T2Dpoint=New T2Dpoint
	Scalar2Vector(Rand(0,9),Move)
	MovePoint(R\Position,Move)
	StabliPoint(R\Position,ISL\SIZE)
	Delete MOVE
	If Rnd(0,1)<=RabbitProb
		Local ChildRabbit.TRabbit=CreateRabbit()
		ChildRabbit\Position\X=R\Position\X
		ChildRabbit\Position\Y=R\Position\Y
		AddAnimal(ISL,Handle(ChildRabbit),False,PopulationTypeRabbit)
	EndIf
End Function

Function DrawRabbit(R.TRabbit,x,y,mcs)
	Color 100,100,100
	Local ix=R\Position\x
	Local iy=R\Position\y
	Oval x+(ix-1)*mcs+1,y+(iy-1)*mcs+1,mcs-2,mcs-2
End Function
;=================================
;=================================

Const TimeMoment=1000;ms
Const RabbitProb#=0.2


Graphics3D 800,600,32
SetBuffer BackBuffer()
SetFont(LoadFont("Arial cyr",20))
SeedRnd(MilliSecs())
Island.TIsland=CreateIsland(20,20)
For i=1 To 1
	Rabbit.TRabbit=CreateRabbit()
	AddAnimal(Island,Handle(Rabbit),True,PopulationTypeRabbit)
Next
For i=1 To 10
	Wolf.TWolf=CreateWolf(Male)
	AddAnimal(Island,Handle(Wolf),True,PopulationTypeWolf)
Next
For i=1 To 10
	Wolf.TWolf=CreateWolf(Female)
	AddAnimal(Island,Handle(Wolf),True,PopulationTypeWolf)
Next
Local time=MilliSecs()
While Not KeyHit(1)
	DrawIsland(Island,5,5)
	If MilliSecs()-time>=TimeMoment
		time=MilliSecs()
		UpdateIsland(Island)
	EndIf
	Flip
Wend
End
Занятно, уонечно:
то кролики делают, сами знаете что, как кролики,
то группа волчиц, забитая случайность в угол, становится интерсной целью для самцов..
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Atomikc (08.09.2008)
Старый 08.09.2008, 19:23   #9
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Ответ: Задачка...

спс громенное.... прям выручили... спс
(Offline)
 
Ответить с цитированием
Старый 19.09.2008, 23:28   #10
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Задачка...

Вариант на VB6.0
Вложения
Тип файла: zip wolfs_vs_rabbits.zip (7.3 Кб, 927 просмотров)
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (09.11.2009)
Старый 09.11.2009, 19:45   #11
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Задачка...

Сообщение от SBJoker Посмотреть сообщение
Вариант на VB6.0
Совет: сделайте ограничения постоянный Overflov. А вообще прога прикольная.
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по ТВ impersonalis Математика 7 30.12.2008 22:12
2 задачки mudriy Загадки 14 26.11.2007 11:55
Задачка Magus Болтовня 19 16.05.2007 20:43
Задачка!!! Halk-DS 2D-программирование 60 29.01.2007 00:06
Задача SubZer0 Загадки 8 30.07.2006 16:33


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com